知識點:
CSS3 Transform
CSS3 2D轉換
CSS3 3D轉換
CSS3 Transform與坐標系統
CSS3 矩陣
CSS3 擴展屬性
一、CSS3 Transform
CSS3的變形(Transform)屬性
讓元素在一個坐標系統中變形。這個屬性包含一系列變形函數,可以移動、旋轉和縮放元素。
【語法】
transform:none | <transform-function> [<transform-function> ]*;
【默認值】
transform:none;
【兼容性】
IE12+、FireFox16+、chrome36+、Safari16+、Opera23+
二、CSS3 2D轉換
CSS3 rotate()
CSS3 translate()
CSS3 scale()
CSS3 skew()
CSS3 matrix()
1.旋轉rotate
通過制定的角度參數對原元素制定一個2D rotate(2D旋轉)。
【語法】
transform:rotate(<angle>);
【參數說明】
angle指旋轉角度,正數表示順時針旋轉,負數表示逆時針旋轉。
rotate案例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>rotate</title>
<style type="text/css">
* { margin: 0; padding: 0; list-style-type: none; }
a,
img { border: 0; }
body { font: 12px/180% Arial; }
.main { width: 1000px; margin: 50px auto; position: relative; }
.pic { width: 300px; height: 290px; border: 1px solid #ccc; background: #fff; box-shadow: 2px 2px 3px #aaa; }
.pic img { margin: 10px 0 0 8px; width: 285px; }
.pic p { text-align: center; font-size: 20px; }
.pic1 {
-webkit-transform: rotate(7deg);
-moz-transform: rotate(7deg);
-ms-transform: rotate(7deg);
-o-transform: rotate(7deg);
transform: rotate(7deg);
}
.pic2 {
-webkit-transform: rotate(-8deg);
-moz-transform: rotate(-8deg);
-ms-transform: rotate(-8deg);
-o-transform: rotate(-8deg);
transform: rotate(-8deg);
}
.pic3 { position: absolute; top: 40px; left: 350px; z-index: 2;
-webkit-transform: rotate(-35deg);
-moz-transform: rotate(-35deg);
-ms-transform: rotate(-35deg);
-o-transform: rotate(-35deg);
transform: rotate(-35deg);
}
.pic4 { position: absolute; top: 360px; left: 350px; z-index: 3;
-webkit-transform: rotate(35deg);
-moz-transform: rotate(35deg);
-ms-transform: rotate(35deg);
-o-transform: rotate(35deg);
transform: rotate(35deg);
}
.pic5 { position: absolute; top: 150px; left: 600px; z-index: 4;
-webkit-transform: rotate(60deg);
-moz-transform: rotate(60deg);
-ms-transform: rotate(60deg);
-o-transform: rotate(60deg);
transform: rotate(60deg);
}
.pic6 { position: absolute; top: 180px; left: 280px; z-index: 5;
-webkit-transform: rotate(-60deg);
-moz-transform: rotate(-60deg);
-ms-transform: rotate(-60deg);
-o-transform: rotate(-60deg);
transform: rotate(-60deg);
}
</style>
</head>
<body>
<div class="main">
<div class="pic pic1"><p>2D轉換</p></div>
<div class="pic pic2"><p>2D轉換</p></div>
<div class="pic pic3"><p>2D轉換</p></div>
<div class="pic pic4"><p>2D轉換</p></div>
<div class="pic pic5"><p>2D轉換</p></div>
<div class="pic pic6"><p>2D轉換</p></div>
</div>
</body>
</html>
2.移動translate
translate()方法,根據左(X軸)和頂部(Y軸)位置給定的參數,從當前元素位置移動。
【三種情況】
translateX(x)僅水平方向移動(X軸移動);
translateY(Y)僅垂直方向移動(Y軸移動);
translate(x, y)水平方向和垂直方向同時移動(也就是X軸和Y軸同時移動)。
1).translateX(<translation-value>)
通過給定一個X方向上的數目指定一個translation。
【語法】
transform:translateX(<translation-value>);
2).transform:translateY(<translation-value>);
通過給定一個Y方向上的數目指定一個translation。
【語法】
transform:translateY(<translation-value>);
【備注】
deg是角度;
translate-value必須是準確的數值,top類方向詞無效果;
X軸的正方向是從左到右,Y軸正方向是從上到下。
3).translate(<translation-value>[, <translation-value>])
通過矢量[tx, ty]指定一個2D translation, tx是第一個過渡值參數, ty是第二個過渡值參數選項。
【語法】
transform: translate(<translation-value>[, <translation-value>])
translate案例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>translate</title>
<style type="text/css">
div { width: 1500px; height: 250px; background: #abcdef; margin: auto; }
div > img {
transform: translate(200px, 100px);
}
</style>
</head>
<body>
<div></div>
</body>
</html>
【備注】:
第一個是X的值,第二個Y的值可以省略,默認值為0。
3.縮放scale
scale()方法,指定對象的2D scale(2D縮放)。
【三種情況】
scaleX(x)元素僅水平方向縮放(X軸縮放);
scaleY(y)元素僅垂直方向縮放(Y軸縮放);
scale(x, y)使元素水平方向和垂直方向同時縮放(也就是X軸和Y軸同時縮放)。
1).scaleX(<number>)
使用[sx, 1] 縮放矢量執行縮放操作,sx為所需參數。
【語法】
transform: scaleX(<number>);
scaleX案例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>scaleX</title>
<style type="text/css">
div { width: 1500px; height: 250px; background: #abcdef; margin: auto; }
div > img {
transform: scaleX(.5);
}
</style>
</head>
<body>
<div></div>
</body>
</html>
2).scaleY(<number>)
使用[sy, 1] 縮放矢量執行縮放操作,sy為所需參數。
【語法】
transform: scaleY(<number>);
scaleY案例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>scaleX</title>
<style type="text/css">
div { width: 1500px; height: 250px; background: #abcdef; margin: auto; }
div > img {
transform: scaleX(.5);
}
</style>
</head>
<body>
<div></div>
</body>
</html>
3).scale(<number>[, <number>])
提供執行[sx,sy]縮放矢量的兩個參數指定一個2D scale(2D縮放)。
【語法】
transform: scale(<number>[, <number>]);
【備注】
以中心縮放;
1是正常大小,小于1是縮小,大于1是放大;不需要單位。
注意:第二個參數省略了并非是0 ,而是等同第一個參數。即等比例,不變形。
4.扭曲skew
skew()方法,指定對象skew transformation(斜切扭曲)。
【三種情況】
skewX(x)僅使元素在水平方向扭曲變形(X軸扭曲變形);
skewY(y)僅使元素在垂直方向扭曲變形(Y軸扭曲變形);
skew(x, y)使元素在水平和垂直方向同時扭曲(X軸和Y軸同時按一定的角度值進行扭曲變形)。
1).skewX(<angle>)
按給定的角度沿X軸指定一個skew transformation(斜切變換)。
【語法】
transform: skewX(<angle>);
skewX案例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>skewX</title>
<style type="text/css">
div { width: 1500px; height: 250px; background: #abcdef; margin: auto; }
div > img {
transform: skewX(15deg);
}
</style>
</head>
<body>
<div></div>
</body>
</html>
2).skewY(<angle>)
按給定的角度沿Y軸指定一個skew transformation(斜切變換)。
【語法】
transform: skewY(<angle>);
skewY案例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>skewY</title>
<style type="text/css">
div { width: 1500px; height: 250px; background: #abcdef; margin: auto; }
div > img {
transform: skewY(15deg);
}
</style>
</head>
<body>
<div></div>
</body>
</html>
【備注】:
skewX
正值:逆時針
負值:順時針
skewY
正值:順時針
負值:逆時針
其中180deg 和0deg 效果一樣
3).skew(<angle> [, <angle>])
X軸Y軸上的skew transformation(斜切變換)。第一個參數對應X軸,第二個參數對應Y軸。
【語法】
transform: skew(<angle> [, <angle>]);
skew(<angle> [, <angle>])案例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>skew</title>
<style type="text/css">
div { width: 1500px; height: 250px; background: #abcdef; margin: auto; }
div > img {
transform: skew(15deg, 15deg);
}
</style>
</head>
<body>
<div></div>
</body>
</html>
備注:
第二個參數可以省略,當只有一個參數時,默認值是0.
5.矩陣matrix
以一個含六值的(a,b,c,d,e,f)變換矩陣的形式指定一個2D變換。
相當于直接應用一個[a,b,c,d,e,f]變換矩陣。
【語法】
transform: matrix(a, c, b, d, tx, ty);
【參數說明】
tx, ty就是就是基于X和Y坐標重新定位元素。