Transform 字面意思就是变形,在 CSS3 中 transform 的变形主要有 rotate(旋转)、skew(扭曲)、scale(缩放)、translate(移动)和 matrix(矩阵)。
transform的语法:
transform: none | translate | rotate | scale | skew | matrix
多重属性操作以空格隔开。
一、rotate(旋转)
rotate(<angle>):通过指定的角度参数对原元素进行一个2D旋转行为,旋转原点通过transform-origin属性定义,其中angle为有量纲量,正方向为顺时针。
列如:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8"/>
<title>CSS3之Transform</title>
<style>
#test {
background-color: #666;
height: 200px;
width: 200px;
position:
absolute;
left: 50%;
top: 50%;
margin-top: -100px;
margin-left: -100px;
}
#test {
transform: rotate(30deg);
transform-origin: 0 100px;
}
</style>
</head>
<body>
<div id="test"></div>
</body>
</html>
其中“transform-origin: 0 100px”即为定义旋转中心点,默认以元素中心作为旋转点。
二、translate(移动)
translate(x,y)通过参数x、y定义的矢量移动元素,其中x、y为有量纲量,x的正方向向右,y的正方向向下。
例如:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8"/>
<title>CSS3之Transform</title>
<style>
#test {
background-color: #666;
height: 200px;
width: 200px;
position: absolute;
left: 50%;
top: 50%;
margin-top: -100px;
margin-left: -100px;
}
#test {
transform: translate(100px, 200px);
}
</style>
</head>
<body>
<div id="test"></div>
</body>
</html>
同时,translate还可以有一下两种情况——沿X轴或Y轴进行移动,对应translateX和translateY,上面的样式也可以写成“transform: translateX(100px) translateY(200px)”。
三、scale(缩放)
scale(x,y)通过参数x、y控制元素缩放效果,其缩放原点可通过transform-origin属性控制(默认为元素中心),其中x、y为无量纲量,原元素的尺寸为单位1。
列如:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8"/>
<title>CSS3之Transform</title>
<style>
#test {
background-color: #666;
height: 200px;
width: 200px;
position: absolute;
left: 50%;
top: 50%;
margin-top: -100px;
margin-left: -100px;
}
#test {
transform: scale(2, 0.6);
}
</style>
</head>
<body>
<div id="test"></div>
</body>
</html>
其中scale也可以分解成scaleX和scaleY两个方向的量。
四、skew(扭曲)
skew(<angle>,<angle>)通过参数将元素进行x和y方向上进行斜切变形,其中x斜切正方向为逆时针,y斜切正方向为顺时针。
列如:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8"/>
<title>CSS3之Transform</title>
<style>
#test {
background-color: #666;
height: 200px;
width: 200px;
position: absolute;
left: 50%;
top: 50%;
margin-top: -100px;
margin-left: -100px;
}
#test {
transform: skew(30deg, 15deg);
}
</style>
</head>
<body>
<div id="test"></div>
</body>
</html>
五、matrix(矩阵)
matrix(a,b,c,d,e,f)的参数即为一个3x3的矩阵,大学课程中的线性代数中有矩阵变形的内容,有兴趣的可以去了解。
六、transform-origin(定义原点)
transf-origin(x,y)可以重新定义元素变形时的原点,因为默认是以元素中心作为变形原点,不足以满足需求,所以可以通过transform-origin自定义变形原点。其中x、y可以是有量纲量,也可以是无量纲量。
同时在不同的浏览器中,transform-origin需要定义不同的前缀。
列如:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8"/>
<title>CSS3之Transform</title>
<style>
#test {
background-color: #666;
height: 200px;
width: 200px;
position: absolute;
left: 50%;
top: 50%;
margin-top: -100px;
margin-left: -100px;
}
#test {
transform: skew(30deg, 15deg);
-webkit-transform: skew(30deg, 15deg);
-moz-transform: skew(30deg, 15deg);
-o-transform: skew(30deg, 15deg);
-ms-transform: skew(30deg, 15deg);
}
</style>
</head>
<body>
<div id="test"></div>
</body>
</html>