css transform解释及demo(基于chrome)
transform 属性向元素应用 2D 或 3D 转换。该属性允许我们对元素进行旋转、缩放、移动或倾斜。
Transform:(css3 转换)
注意:这些效果叠加时,中间用空格隔开
作用:能够对元素进行移动、缩放、转动、拉长、拉伸
转换:使元素改变形状、尺寸、位置的一种效果
Transform:转换方法:
1、translate()方法
translate(x): 沿着x轴移动x
translate(y): 沿着y轴移动y
translateXY(x, y): 沿着x轴移动x, 沿着y轴移动y
code:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> #origin{ width: 100px; height: 100px; background-color: red; } #translateX{ width: 100px; height: 100px; background-color: red; transform: translateX(100px); } #translateY{ width: 100px; height: 100px; background-color: red; transform: translateY(100px); } #translateXY{ width: 100px; height: 100px; background-color: red; transform: translate(100px, 100px); } </style> </head> <body> <div id="origin"> </div> <div id="translateX"> </div> <div id="translateY"> </div> <div id="translateXY"> </div> </body> </html>
效果如下:
注:translate(200px),其实等同于translateX(200px)。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> #origin{ width: 100px; height: 100px; background-color: red; transform: translate(200px); } </style> </head> <body> <div id="origin"> </div> </body> </html>
效果:
translate()方法 3D转化
就是多了z轴的变化。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
#parent {
width: 500px;
height: 500px;
-webkit-perspective: 1000px; /*镜头距离平面距离,镜头默认在中心,也可以通过perspective-origin调整*/
-webkit-perspective-origin: 50px 50px; /*视点在平面上的具体位置*/
}
#origin {
width: 100px;
height: 100px;
position: absolute;
top: 0px;
left: 0px;
background-color: red;
}
#translateZ {
width: 100px;
height: 100px;
position: absolute;
top: 0px;
left: 0px;
background-color: blue;
-webkit-transform: translate3d(50px, 50px, 50px);
}
</style>
</head>
<body>
<div id="parent">
<div id="origin">
</div>
<div id="translateZ">
</div>
</div>
</body>
</html>
这种条件下需要设置父元素的perspective属性
2、Rotate(angle)方法
rotate字面意思是旋转,设置元素顺时针旋转的角度,用法是:transform: rotate(x); 参数x必须是以deg结尾的角度数或0,可为负数表示反向。deg是度的意思,一圈有360度。
code:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> #rotate { width: 100px; height: 100px; margin-left: 30px; margin-top: 30px; background-color: yellow; transform: rotate(30deg); } </style> </head> <body> <div id="rotate">你是<br/>一个<br/>薄情<br/>郎</div> </body> </html>
原图:
旋转后的图:
可以看出是沿z轴顺时针旋转,如果是负的,就是逆时针旋转
Rotate()方法 3D转化
RotateX(angle),rotateY(angle),rotateZ(angle):
围绕X/Y/Z轴旋转,angle为旋转的角度,可以是正值,顺时针旋转,可以是负值,逆时针旋转。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> #rotate { width: 100px; height: 100px; margin-left: 30px; margin-top: 30px; background-color: yellow; } #rotateX { width: 100px; height: 100px; margin-left: 30px; margin-top: 30px; background-color: yellow; transform:rotateX(45deg); } #rotateY { width: 100px; height: 100px; margin-left: 30px; margin-top: 30px; background-color: yellow; transform:rotateY(45deg); } #rotateZ { width: 100px; height: 100px; margin-left: 30px; margin-top: 30px; background-color: yellow; transform:rotateZ(45deg); } </style> </head> <body> <div id="rotate">你是<br/>一个<br/>薄情<br/>郎</div> <div id="rotateX">你是<br/>一个<br/>薄情<br/>郎</div> <div id="rotateY">你是<br/>一个<br/>薄情<br/>郎</div> <div id="rotateZ">你是<br/>一个<br/>薄情<br/>郎</div> </body> </html>
效果图: