說起css3動畫,就必須說說 transform,translate,transition,animation這4個屬性,transform主要定義元素的動作,比如旋轉、傾斜、位移等,translate是transform里面的屬性,用于2D/3D位移。后2個主要對動作進行描述,動畫時間、速度曲線、次數等。
如何快速上手基礎的CSS3動畫
下面我用是一些簡單的示例,讓大家快速的入門上手:
快速開始第一個動畫
<style> .div1{ width: 100px; background: red; /** 動畫描述:寬度改變動畫 用時 1s*/ transition: width 1s; } .div1:hover{ width: 200px; background: blue; } </style> <div class="div1">動畫</div>
如何快速上手基礎的CSS3動畫
這里hover事件時改變寬度和背景顏色,用transition來描述動畫,由于我們只對width進行了描述,所以背景色,鼠標指上去,會立馬變色,并不會有漸變的過程。
這里為什么用transition而不用animation?那就要說說他們直接的區別了。
transition需要觸發一個事件, 而animation在不需要觸發任何事件的情況下也可以顯式的隨著時間變化來改變元素css的屬性值,從而達到一種動畫的效果。transition屬性是一個簡單的動畫屬性,非常簡單非常容易用。可以說它是animation的簡化版本,是給普通做簡單網頁特效用的。
現在明白了吧,因為我們用的hover事件,所以要用transition。
下面請看第二個例子
快速開始第二個動畫
<style> .div1{ width: 100px; background: red; /** 動畫描述:寬度顏色改變動畫 用時 1s infinite(無限次)*/ animation: second 1s infinite; color: #fff; } @keyframes second{ /**開始(可以用百分比表示)*/ from { width: 100px; background: red; } /**結束(可以用百分比表示)*/ to { width: 200px; background: blue; } /** or */ /**開始*/ 0% { width: 100px; background: red; } /**中間可以加多個區間*/ /**結束*/ 100% { width: 200px; background: blue; } } </style> <div class="div1">動畫</div>
如何快速上手基礎的CSS3動畫
這里動畫從加載就開始執行,所以用了animation,改變寬度和背景色,用時1s,并且無限次循環執行。@keyframes規則是創建動畫。 -webkit-(chrome/safari), -ms-(ie) 或 -moz-(firefox) 用于兼容不同瀏覽器。
快速開始第三個動畫
<style> .div1{ width: 100px; background: red; animation: second 1s infinite; color: #fff; } @keyframes second{ 100% { transform: rotate(20deg); } } </style> <div class="div1">動畫</div>
如何快速上手基礎的CSS3動畫
transform:rotate使其div元素2D旋轉20°.當然你可以設置transform:rotateY, Y 軸的 3D 旋轉。
如何快速上手基礎的CSS3動畫
你還可以設置transform: translate,進行2D,3D位移;
如何快速上手基礎的CSS3動畫
transform: scale,進行2D,3D縮放;
如何快速上手基礎的CSS3動畫
transform: skew,進行2D傾斜等等。
如何快速上手基礎的CSS3動畫
總結
好的動畫效果,第一要素是:好的想法,有創意,才有好的成品;第二要素是:有好的實現解題思路,當有設計后,制作就需要想辦法實現效果,剝繭抽絲,一步一步來;第三要素:不畏懼的心,勇敢嘗試,多實踐,多動手,靈感往往來與你寫的過程中。
有了上面的小示例,相信小伙伴們也能自己寫寫簡單的CSS3動畫了,如果有疑問,可以評論留言,大家一起學習探討。