CSS3的過渡和動畫

過渡和動畫都是CSS3的重要部分,今天有時間,瞭解些相關內容並記錄下。
在開始以前,首先看看CSS3的轉化。css

轉化

CSS3的轉化分爲如下幾種:web

  • translate 移動
  • rotate 旋轉
  • scale 縮放
  • skew 傾斜
  • matrix 混合

每種轉化都還有對應的3d版本性能

注意:閉合的內聯元素不支持轉化,過渡和動畫:如<span>、<small>、<i>等。能夠經過添加樣式 display: inline-block 或 display: block 來轉化成塊級元素。字體

translate 移動

translate()方法,根據左(X軸)和頂部(Y軸)位置給定的參數,從當前元素位置移動。動畫

span {
    display: inline-block;
    transform: translate(50px,100px); /* 向下移動50像素,向右移動100像素 */
    -ms-transform: translate(50px,100px); /* IE 9 */
    -webkit-transform: translate(50px,100px); /* Safari and Chrome */
}

rotate 旋轉

rotate()方法,在一個給定度數順時針旋轉的元素。負值是容許的,這樣是元素逆時針旋轉。spa

i {
    display: block;
    transform: rotate(30deg); /* 順時針旋轉30度,負數爲逆時針旋轉 */
    -ms-transform: rotate(30deg); /* IE 9 */
    -webkit-transform: rotate(30deg); /* Safari and Chrome */
}

scale 縮放

scale()方法,該元素增長或減小的大小,取決於寬度(X軸)和高度(Y軸)的參數:3d

div {
    display: inline; /*這樣設置是縮放不生效 */
    transform: scale(2,3); /*長擴大2倍,寬擴大3倍,小於1的小數爲縮小 */
    -ms-transform:scale(2,3); /* IE 9 */
    -webkit-transform: scale(2,3); /* Safari */
    transform: scale(2,3); /* 標準語法 */
}

skew 傾斜

skew() 包含兩個參數值,分別表示X軸和Y軸傾斜的角度,若是第二個參數爲空,則默認爲0,參數爲負表示向相反方向傾斜。(想象成一根直的柱子,被推歪了...)code

  • skewX(<angle>);表示只在X軸(水平方向)傾斜。(橫着推歪了...)
  • skewY(<angle>);表示只在Y軸(垂直方向)傾斜。(從上下壓給推歪了...)
div {
    transform: skew(30deg,20deg);
    -ms-transform: skew(30deg,20deg); /* IE 9 */
    -webkit-transform: skew(30deg,20deg); /* Safari and Chrome */
}

matrix 混合

matrix()方法和2D變換方法合併成一個。
matrix 方法有六個參數,包含旋轉,縮放,移動(平移)和傾斜功能。orm

div {
    transform:matrix(0.866,0.5,-0.5,0.866,0,0);
    -ms-transform:matrix(0.866,0.5,-0.5,0.866,0,0); /* IE 9 */
    -webkit-transform:matrix(0.866,0.5,-0.5,0.866,0,0); /* Safari and Chrome */
}

截圖總結

2D 版
轉化屬性2d版ip

3D 版
轉化屬性3d版

transition 過渡

CSS3中,咱們爲了添加某種效果能夠從一種樣式轉變到另外一個的時候,無需使用Flash動畫或JavaScript。

過渡和動畫的區別

過渡和動畫均可以改變元素的樣式,但他們中間也有些不一樣:

  • 過渡針對元素的樣式屬性,從一種樣式轉變到另外一種,樣式按貝塞爾曲線隨時間變化,動畫針對元素自己,按關鍵幀改變元素的樣式效果
  • 過渡比動畫簡單,當控制的效果也更粗糙,動畫更消耗性能,但能夠作出更復雜的效果。

總的來講:通常簡單的樣式使用過渡,實在須要複雜的效果再考慮使用動畫

transition 屬性

過渡的屬性圖

div {
    transition-property: width; /*可使用轉化更好的過渡 */
    transition-duration: 1s;
    transition-timing-function: linear;
    transition-delay: 2s;
    /* Safari */
    -webkit-transition-property:width;
    -webkit-transition-duration:1s;
    -webkit-transition-timing-function:linear;
    -webkit-transition-delay:2s;
}

/*簡寫 */
div {
    transition: width 1s linear 2s;
    /* Safari */
    -webkit-transition:width 1s linear 2s;
}

transition 過渡曲線

transition 過渡曲線

animate 動畫

CSS3,咱們能夠建立動畫,它能夠取代許多網頁動畫圖像,Flash動畫,和JAVAScripts。
動畫屬性:
動畫屬性

動畫製做過程

1.經過@keyframes規則建立動畫

/*建立動畫,字體顏色由紅變藍 */
@keyframes changeColor { 
    from { color: red; }
    to { color: blue; }
}

2.元素綁定動畫

span {
    display: inline-block; /*內聯元素要轉成block元素 */
    animation: changeColor 1s linear; /*綁定動畫,並設置動畫時間和執行曲線 */
}

動畫還可使用百分比來更加精細的控制動畫流程:

@keyframes changeColor {
    0%   {color: red;}
    25%  {color: yellow;}
    50%  {color: green;}
    75%  {color: pickle;}
    100% {color: blue;}
}
 
/* Safari 與 Chrome */
@-webkit-keyframes changeColor {
    0%   {color: red;}
    25%  {color: yellow;}
    50%  {color: green;}
    75%  {color: pickle;}
    100% {color: blue;}
}
相關文章
相關標籤/搜索