摘要:示例或者簡寫上面的代碼將實現一個元素不透明度的過度,從到。接著,給添加默認的樣式定義現在,我們來創建一個有五個階段的應用動畫定義完我們的動畫,我們還需要將動畫應用到上現在動畫的狀態是動畫名稱為。
現在越來越多的網站正在使用動畫,無論是以GIF,SVG,WebGL,背景視頻等形式。 當正確使用時,網絡上的動畫帶來生機和交互性,為用戶增添了額外的反饋和體驗。
在本教程中,我將向您介紹CSS動畫; 高性能的做事方式越來越受到browser support的歡迎。 下面的示例涵蓋了基礎知識:一個方形元素變化為圓形。
實現效果為https://codepen.io/mengmengpr...
高級選項
Envato市場上的設計師們一直在忙于創作一系列的CSS動畫,從陰影到色帶,滑塊等。你可以將它們插入到你的網站中。
您還可以聘請Envato Studio的CSS專家,以幫助您為您的項目提供更豐富的定制。
CSS動畫的主要組件是@keyframes,即創建動畫的CSS規則。將@keyframes視為時間軸上的階段。 在@keyframes中,您可以定義這些階段,每個階段都有不同的樣式聲明。
接下來,要使CSS動畫工作,您需要將@keyframes綁定到一個選擇器。這將逐步解析@keyframes聲明中的所有代碼,并根據階段將初始樣式更改為新樣式。
@keyframes接下來我們將設置動畫階段。@keyframes的屬性有:
我們選擇的名稱(這里為tutsFade)。
階段:0%-100%或者from(0%)-to(100%)。
css樣式:我們即將應用到每個階段的樣式。
示例:
@keyframes tutsFade { 0% { opacity: 1; } 100% { opacity: 0; } } /*---- 或者 ----*/ @keyframes tutsFade { from { opacity: 1; } to { opacity: 0; } } /*---- 簡寫 ----*/ @keyframes tutsFade { to { opacity: 0; } }
上面的代碼將實現一個元素不透明度的過度,從opacity: 1到opacity: 0。上述每個方法都將獲得相同的結果。
@Animation動畫屬性用于在CSS選擇器中調用@keyframes。
Animation可以有很多屬性:
animation-name:@keyframes的名字(這里是tutsFade)。
animation-duration:動畫持續時長。
animation-timing-function:設置動畫的速度(linear/ease/ease-in/ease-out/ease-in-out/cubic-bezier)。
animation-delay:動畫開始前的延遲。
animation-iteration-count:動畫循環的次數。
animation-direction:定義是否應該輪流反向播放動畫。如果animation-direction值是"alternate",則動畫會在奇數次數正常播放,而在偶數次數反向播放。
animation-fill-mode:指定當我們的動畫完成時將哪些樣式應用于元素。
示例:
.element { animation-name: tutsFade; animation-duration: 4s; animation-delay: 1s; animation-iteration-count: infinite; animation-timing-function: linear; animation-direction: alternate; } /*---- 簡寫 ----*/ .element { animation: tutsFade 4s 1s infinite linear alternate; }添加不同瀏覽器支持的前綴
我們需要使用瀏覽器特定的前綴來確保最佳的瀏覽器支持。 標準的前綴都有:
Chrome & Safari:-webkit-
Firefox:-moz-
Opera:-o-
IE:-ms-
上面的例子將變為:
.element { -webkit-animation: tutsFade 4s 1s infinite linear alternate; -moz-animation: tutsFade 4s 1s infinite linear alternate; -ms-animation: tutsFade 4s 1s infinite linear alternate; -o-animation: tutsFade 4s 1s infinite linear alternate; animation: tutsFade 4s 1s infinite linear alternate; } @-webkit-keyframes tutsFade { /* your style */ } @-moz-keyframes tutsFade { /* your style */ } @-ms-keyframes tutsFade { /* your style */ } @-o-keyframes tutsFade { /* your style */ } @keyframes tutsFade { /* your style */ }
為了本教程的可讀性,接下來將不使用前綴,但最終版本會包含它們,我也鼓勵您能在您的CSS代碼中使用前綴。
要了解更多有關瀏覽器前綴的信息,可以查看http://css3please.com/。
多個動畫您可以使用逗號分隔符添加多個動畫。假設我們要添加一個旋轉到元素,需要聲明額外的@keyframes,然后綁定到我們的元素:
.element { animation: tutsFade 4s 1s infinite linear alternate, tutsRotate 4s 1s infinite linear alternate; } @keyframes tutsFade { to { opacity: 0; } } @keyframes tutsRotate { to { transform: rotate(180deg); } }
正方形到圓形的變換
接下來將創建一個簡單的形狀轉換;使用上述原則來將一個正方形逐步變換為圓形。我們共有五個階段,在每個階段,都會定義元素的邊框半徑,旋轉和不同的背景顏色。
基本元素首先,我們創建一個html元素來進行動畫。
接著,給div添加默認的樣式:
div { width: 200px; height: 200px; margin: 50px; background-color: coral; }定義Keyframes
現在,我們來創建一個有五個階段的@keyframes:
@keyframes square-to-circle { 0%{ border-radius: 0 0 0 0; background: coral; transform: rotate(0deg); } 25%{ border-radius: 50% 0 0 0; background: darksalmon; transform: rotate(45deg); } 50%{ border-radius: 50% 50% 0 0; background: indianred; transform: rotate(90deg); } 75%{ border-radius: 50% 50% 50% 0; background: lightcoral; transform: rotate(135deg); } 100%{ border-radius: 50%; background: darksalmon; transform: rotate(180deg); } }應用動畫
定義完我們的square-to-circle動畫,我們還需要將動畫應用到div上:
div { width: 200px; height: 200px; background-color: coral; animation: square-to-circle 2s 1s infinite alternate; }
現在動畫的狀態是:
動畫名稱為square-to-circle。
動畫時長為2s。
動畫延遲為1s。
動畫循環次數為infinite,因此會無限循環。
動畫循環方向為alternate,它將從開始到結束,然后反向執行,然后再從開始到結束,一直循環。
使用animation-timing-function我們可以添加到動畫屬性的最后一個值是動畫定時功能。這將定義我們運動的速度,加速度和減速度。這個屬性可以是一個非常詳細的值(需要笨拙的手動計算),但是有很多免費的網站提供資源和動態定時功能的實時定制。
一個相關的工具是CSS Easing Animation Tool,可以用來計算animation-timing-funtion。
通過在工具里的計算,使用animation-cubic-bezier,給我們的動畫添加一個彈性特效。最終代碼如下:
div { width: 200px; height: 200px; margin: 50px; background-color: coral; animation: square-to-circle 2s 1s infinite cubic-bezier(1, .015, .295, 1.225) alternate; }
最后一步
在現代瀏覽器中,我們的動畫都能完美運行,但是Firefox在動畫渲染方面較差,旋轉過程中邊緣會出現鋸齒。我們可以通過添加outline樣式完善:
outline: 1px solid transparent;
最近發現很多國外的優質文章,翻譯是自己學習的過程也是分享的過程。喜歡的話,點個贊吧。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/111896.html
摘要:前端日報精選我是如何實現的在線升級熱更新功能的張鑫旭鑫空間鑫生活翻譯表單的運用第期晉升評審的套路異步編程的四種方式黃博客精選組件設計和分解思考掘金中文譯使登錄頁面變得正確掘金前端從強制開啟壓縮探究插件運行機制掘金個常用的簡 2017-06-28 前端日報 精選 我是如何實現electron的在線升級熱更新功能的? ? 張鑫旭-鑫空間-鑫生活【翻譯】React 表單: Refs 的運用【...
摘要:前端日報精選理解構造函數與原型對象前端校招面試該考察什么聽說你想寫前端給程序員看的攻略上創造者,專訪中文教學向再加行代碼教你實現一個低配版的庫代碼篇我把最美的青春都獻給了代碼實戰桌面計算器應用知乎專欄運算符規則與隱式類型轉換詳解 2017-09-05 前端日報 精選 理解構造函數與原型對象前端校招面試該考察什么?聽說2017你想寫前端?給程序員看的Javascript攻略 - Prot...
摘要:前端日報精選大前端公共知識梳理這些知識你都掌握了嗎以及在項目中的實踐深入貫徹閉包思想,全面理解閉包形成過程重溫核心概念和基本用法前端學習筆記自定義元素教程阮一峰的網絡日志中文譯回調是什么鬼掘金譯年,一個開發者的好習慣知乎專 2017-06-23 前端日報 精選 大前端公共知識梳理:這些知識你都掌握了嗎?Immutable.js 以及在 react+redux 項目中的實踐深入貫徹閉包思...
閱讀 2359·2023-04-25 19:27
閱讀 3490·2021-11-24 09:39
閱讀 3905·2021-10-08 10:17
閱讀 3397·2019-08-30 13:48
閱讀 1930·2019-08-29 12:26
閱讀 3120·2019-08-28 17:52
閱讀 3536·2019-08-26 14:01
閱讀 3533·2019-08-26 12:19