CSS常用樣式之變形樣式(2D平移、2D旋轉、2D縮放、斜切扭曲),過渡動畫(過渡屬性、過渡時間、過渡函數、過渡延遲時間) ...
CSS常用樣式
8.變形樣式
改變元素的大小,透明,旋轉角度,扭曲度等。
transform : none | <transform-function>
<transform-function>表示一個或多個變換函數,以空格分開,也就是說我們可以同時對一個元素進行transform的多種屬性操作。
溫馨提示:以往我們疊加效果都是用逗號隔開,但transform中使用多個屬性時是用空格隔開。
1)translate()
指定對象的2D translation(2D平移)。第一個參數對應X軸,第二個參數對應Y軸。如果第二個參數未提供,則預設值為0。
例子 源代碼:
/* CSS代碼 */ .box1{ width:200px; height:50px; border:1px solid #000; } .box1 p{ padding:0; margin:0; width:200px; height:50px; background:#ccc; transform:translate(20px,20px); }
<!-- HTML代碼 --> <body> <div class="box1"> <p>translate(20px,20px)</p> </div> </body>
效果:
translate(20px,20px)
2)translateX()
指定對象X軸(水平方向)的平移。
例子 源代碼:
/* CSS代碼 */ .box2{ width:200px; height:50px; border:1px solid #000; } .box2 p{ padding:0; margin:0; width:200px; height:50px; background:#ccc; transform:translateX(20px); }
<!-- HTML代碼 --> <body> <div class="box2"> <p>translateX(20px)</p> </div> </body>
效果:
translateX(20px)
3)translateY()
指定對象Y軸(垂直方向)的平移。
例子 源代碼:
/* CSS代碼 */ .box3{ width:200px; height:50px; border:1px solid #000; } .box3 p{ padding:0; margin:0; width:200px; height:50px; background:#ccc; transform:translateY(20px); }
<!-- HTML代碼 --> <body> <div class="box3"> <p>translateY(20px)</p> </div> </body>
效果:
translateY(20px)
4)rotate()
指定對象的2D rotation(2D旋轉)。
例子 源代碼:
/* CSS代碼 */ .box4{ width:100px; height:100px; border:1px solid #000; } .box4 p{ padding:0; margin:0; width:100px; height:100px; background:#ccc; transform:rotate(45deg); }
<!-- HTML代碼 --> <body> <div class="box4"> <p>rotate(45deg)</p> </div> </body>
效果:
rotate(45deg)
5)transform-origin
指定元素的中心點。
任何一個元素都有一個中心點,預設情況之下,其中心點是居於元素X軸和Y軸的50%處。
例子 源代碼:
/* CSS代碼 */ .box5{ width:100px; height:100px; border:1px solid #000; } .box5 p{ padding:0; margin:0; width:100px; height:100px; background:#ccc; transform-origin:0 0; transform:rotate(15deg); }
<!-- HTML代碼 --> <body> <div class="box5"> <p>rotate(15deg)</p> </div> </body>
效果:
rotate(15deg)
6)scale()
指定對象的2D scale(2D縮放)。
第一個參數表示水平方向縮放的倍數,第二個參數表示垂直方向的縮放倍數。如果第二個參數未提供,則預設取第一個參數的值。
例子 源代碼:
/* CSS代碼 */ .box6{ width:100px; height:100px; border:1px solid #000; } .box6 p{ padding:0; margin:0; width:100px; height:100px; background:#ccc; transform:scale(0.8,0.8); }
<!-- HTML代碼 --> <body> <div class="box6"> <p>scale(0.8,0.8)</p> </div> </body>
效果:
scale(0.8,0.8)
7)skew()
指定對象skew transformation(斜切扭曲)。
第一個參數是水平方向扭曲角度,第二個參數是垂直方向扭曲角度。如果第二個參數未設置,則預設值為0。
例子 源代碼:
/* CSS代碼 */ .box7{ width:100px; height:100px; border:1px solid #000; } .box7 p{ padding:0; margin:0; width:100px; height:100px; background:#ccc; transform:skew(30deg,10deg); }
<!-- HTML代碼 --> <body> <div class="box7"> <p>skew(30deg,10deg)</p> </div> </body>
效果:
skew(30deg,10deg)
如果設置"transform:skewX(30deg);":
skewX(30deg)
如果設置"transform:skewY(30deg);":
skewY(30deg)
9.過渡動畫
1)過渡屬性 (transition-property)
設置對象中的參與過渡的屬性。
預設值為:all,預設為所有可以進行過渡的css屬性。如果提供多個屬性值,以逗號進行分隔。
有過渡效果的屬性:
例子 源代碼:
/* CSS代碼 */ .property{ width:200px; height:100px; border:1px solid #000; background:#fff; color:#000; transition-property:background-color,color; } .property:hover{ background:#000; color:#fff; }
<!-- HTML代碼 --> <body> <p>請將滑鼠移動到下麵的矩形上:</p> <div class="property"> 設置過渡的屬性: background-color , color </div> </body>
效果:
請將滑鼠移動到下麵的矩形上:
設置過渡的屬性: background-color , color
2)過渡所需時間(transition-duration)
設置對象過渡的持續時間,就是從舊屬性過渡到新屬性所花的時間。
如果提供多個屬性值,以逗號進行分隔。
例子 源代碼:
/* CSS代碼 */ .duration{ width:200px; height:100px; border:1px solid #000; background:#fff; color:#000; transition-property:background-color,color; transition-duration:2s; } .duration:hover{ background:#000; color:#fff; }
<!-- HTML代碼 --> <body> <p>請將滑鼠移動到下麵的矩形上:</p> <div class="duration"> 過渡的時間是:2s </div> </body>
效果:
請將滑鼠移動到下麵的矩形上:
過渡的時間是:2s
3)過渡函數(transition-timing-function)
指過渡的“緩動函數”。主要用來指定瀏覽器的過渡速度,以及過渡期間的操作進展情況。
其中要包括以下幾種函數:
①ease : 預設值,逐漸變慢(等於 cubic-bezier(0.25,0.1,0.25,1))
②linear : 勻速過渡效果(等於 cubic-bezier(0,0,1,1))
③ease-in : 加速的過渡效果(等於 cubic-bezier(0.42,0,1,1))
④ease-out : 減速的過渡效果(等於 cubic-bezier(0,0,0.58,1))
⑤ease-in-out : 加速然後減速(等於cubic-bezier (0.42, 0, 0.58, 1))
⑥cubic-bezier(n,n,n,n):在 cubic-bezier 函數中定義自己的值,可能的值是 0 至 1 之間的數值。
例子 源代碼:
/* CSS代碼 */ .ease{ width:100px; height:100px; border:1px solid #000; } .ease-in{ margin-left:0px; transition-property:all; transition-duration:2s; transition-timing-function:ease-in; } .ease-out{ margin-left:0px; transition-property:all; transition-duration:2s; transition-timing-function:ease-out; } .ease:hover{ margin-left:200px; }
<!-- HTML代碼 --> <body> <p>請將滑鼠移動到下麵的矩形上,並跟著矩形移動:</p> <div class="ease ease-in"> 加速 ease-in </div> <div class="ease ease-out"> 減速 ease-out </div> </body>
效果:
請將滑鼠移動到下麵的矩形上,並跟著矩形移動:
加速 ease-in 減速 ease-out
4)過渡延遲時間(transition-delay)
指定一個動畫開始執行的時間,也就是說當改變元素屬性值後多長時間開始執行。
例子 源代碼:
/* CSS代碼 */ .delay{ width:200px; height:100px; border:1px solid #000; background:#fff; color:#000; transition-property:background-color,color; transition-duration:2s; transition-delay:1s; } .delay:hover{ background:#000; color:#fff; }
<!-- HTML代碼 --> <body> <p>請將滑鼠移動到下麵的矩形上:</p> <div class="delay"> 過渡延遲的時間是:1s </div> </body>
效果:
請將滑鼠移動到下麵的矩形上:
過渡延遲的時間是:1s
5)過渡動畫縮寫(transition)
transition : <transition-property> < transition-duration > <transition-timing-function> < transition-delay> , ……
例子 源代碼:
/* CSS代碼 */ .all{ width:208px; height:100px; border:1px solid #000; background:#fff; color:#000; transition:all 2s ease-in 1s; } .all:hover{ background:#000; color:#fff; }
<!-- HTML代碼 --> <body> <p>請將滑鼠移動到下麵的矩形上:</p> <div class="all"> transition:all 2s ease-in 1s; 所有屬性 過渡2s 加速 延遲1s </div> </body>
效果:
請將滑鼠移動到下麵的矩形上:
transition:all 2s ease-in 1s; 所有屬性 過渡2s 加速 延遲1s