寫網頁特效的時候,涉及到2D、3D動畫效果,無論是單詞仍是一些方法及屬性,都不是很清楚,因此整理一下筆記css
1、CSS3 2D轉化web
CSS3 轉換能夠對元素進行移動、縮放、轉動、拉長或拉伸。瀏覽器
爲了兼容不一樣版本的瀏覽器,要增長前綴函數
-webkit-transform: rotate(30deg) /* Safari and Chrome */;
-moz-transform: rotate(30deg) /* Firefox */;
-ms-transform: rotate(30deg) /* IE 9 */;
-o-transform: rotate(30deg)/* opera */;
transform: rotate(30deg);
transrorm的方法有:translate() rotate() scale() skew() matrix()動畫
一、translate() 方法 根據左(X軸)和頂部(Y軸)位置給定的參數,從當前元素位置移動。spa
eg: translate(50px,100px)是從左邊元素移動50個像素,並從頂部移動100像素。3d
二、rotate() 方法 在一個給定度數順時針旋轉的元素。負值是逆時針旋轉元素。orm
eg: rotate(30deg) 元素順時針旋轉30度。blog
三、scale() 方法 該元素增長或減小的大小,取決於寬度(X軸)和高度(Y軸)的參數:animation
eg: scale(2,3)轉變寬度爲原來的大小的2倍,和其原始大小3倍的高度。
四、skew() 方法
語法:
transform:skew(<angle> [,<angle>]);
包含兩個參數值,分別表示X軸和Y軸傾斜的角度,若是第二個參數爲空,則默認爲0,參數爲負表示向相反的方向傾斜。
五、matrix() 方法和2D變換方法合併成一個。
maxtrix方法有個參數,包含旋轉、縮放、移動(平移)和傾斜功能。
通常來講,原點默認爲元素的中心點,可是也能夠經過 transform-origin:50% 50%; 這裏的50% 50%表示的就是中心默認的位置。
2、CSS3 3D轉化
transrorm屬性就是分別針對x,y,z進行設置。3d的座標系,x軸在屏幕上爲水平方向,y軸爲垂直方向,而z軸爲垂直於屏幕的方向。
CSS3中的3D變換主要包括如下幾個功能函數:
一、translateZ()和translate3d()
translateZ(z) 讓元素沿着Z軸進行位移,當z爲負值的時候,元素在Z軸愈來愈遠。
translate3d(tx,ty,tz)
二、rotateX()、rotateY()、rotateZ()和rotate3d()
div{transform: rotateX(30deg);transform: rotateY(30deg);transform: rotateZ(30deg);}
rotateX(30deg)是圍繞X軸進行旋轉30度,(deg)是度數。 相同的 rotateY(30deg)是圍繞Y軸進行旋轉30度,rotateZ(30deg)是圍繞Z軸進行旋轉30度。
rotate3d(x,y,z,a)
x(y)(z)取值爲0~1的數值,用來描述元素圍繞X(Y)(Z)軸旋轉的矢量值;
三、scaleZ()和scale3d()
即3D縮放。當scale3d()中x軸和Y軸同爲1,即scale3d(1,1,sz),其效果等同於scaleZ(sz)。
四、matrix3d()
matrix3d(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1)
3、 CSS3 過渡
transition-property: width;
transition-duration: 1s;
transition-timing-function: linear;
transition-delay: 2s;
簡寫:
transition: width 1s linear 2s;
4、CSS3 動畫
@keyframes規則是建立動畫。 @keyframes規則內指定一個CSS樣式和動畫將逐步從目前的樣式更改成新的樣式。當在 @keyframes 建立動畫,把它綁定到一個選擇器,不然動畫不會有任何效果。
請用百分比來規定變化發生的時間,或用關鍵詞 "from" 和 "to",等同於 0% 和 100%。
0% 是動畫的開始,100% 是動畫的完成。
@keyframes 規定動畫。
animation 全部動畫屬性的簡寫屬性,除了 animation-play-state 屬性。
animation-name 規定 @keyframes 動畫的名稱。
animation-duration 規定動畫完成一個週期所花費的秒或毫秒。默認是 0。
animation-timing-function 規定動畫的速度曲線。默認是 "ease"。
animation-fill-mode 規定當動畫不播放時(當動畫完成時,或當動畫有一個延遲未開始播放時),要應用到元素的樣式。
animation-delay 規定動畫什麼時候開始。默認是 0。
animation-iteration-count 規定動畫被播放的次數。默認是 1。
animation-direction 規定動畫是否在下一週期逆向地播放。默認是 "normal"。
animation-play-state 規定動畫是否正在運行或暫停。默認是 "running"。
@keyframes myfirst
{
0% {background: red; left:0px; top:0px;}
25% {background: yellow; left:200px; top:0px;}
50% {background: blue; left:200px; top:200px;}
75% {background: green; left:0px; top:200px;}
100% {background: red; left:0px; top:0px;}
}
div
{
animation-name: myfirst;
animation-duration: 5s;
animation-timing-function: linear;
animation-delay: 2s;
animation-iteration-count: infinite;
animation-direction: alternate;
animation-play-state: running;
}
簡化:
div
{
animation: myfirst 5s linear 2s infinite alternate;
}
基礎知識就到這裏,仍是須要多加練習,正所謂「熟能生巧」 。