转换
转换 transform分为2D、3D转换
它是如何工作?
转换的效果是让某个元素改变形状,大小和位置。
你可以使用 2D 或 3D 转换来转换元素。
2D转换
CSS3 转换可以对元素进行移动、缩放、转动、拉长或拉伸。
![e3f21b0ebf56f207493594197eb0c21a.png](https://i-blog.csdnimg.cn/blog_migrate/8b740628dd96339cb787e7fb00e6a1e1.jpeg)
代码示例:
div
{
width:200px;
height:100px;
background-color:yellow;
/* Rotate div */
transform:rotate(30deg);
-ms-transform:rotate(30deg); /* IE 9 */
-webkit-transform:rotate(30deg); /* Safari and Chrome */
}
![f5cb74c5955e5a75bc0d39f6bdfde3f0.png](https://i-blog.csdnimg.cn/blog_migrate/68bd8ac497b617fe51d7b49034a21d7b.png)
浏览器兼容
![f237c2e65f3dc4d2f847c140902cd7e3.png](https://i-blog.csdnimg.cn/blog_migrate/1cdc75b2cd5dc937df3f361b58ab1954.jpeg)
属性
- translate(),根据左(X轴)和顶部(Y轴)位置给定的参数,从当前元素位置移动:
![d96dc1537abc8a60a048db3553959b0e.png](https://i-blog.csdnimg.cn/blog_migrate/2e1679a5961a7f0388dbcc4e2b268da4.png)
div
{
width:100px;
height:75px;
background-color:red;
border:1px solid black;
}
div#div2
{
transform:translate(50px,100px);
}
<div>Hello. This is a DIV element.</div>
<div id="div2">Hello. This is a DIV element.</div>
![70ff24fd70e6937fd5f1bce76263b62d.png](https://i-blog.csdnimg.cn/blog_migrate/c7378600160c247e6e1616c76deff7fb.png)
2. rotate(),在一个给定度数顺时针旋转的元素。负值是允许的,元素逆时针旋转:
![7c81949489dc15d16f08a2b24a8b3407.png](https://i-blog.csdnimg.cn/blog_migrate/05714c4931483c99becd5bb1d25a1ae8.png)
div
{
transform: rotate(30deg);
}
<div>你好。这是一个 DIV 元素。</div>
<div id="div2">你好。这是一个 DIV 元素。</div>
![b7405c8021983262607e118b1e15f76d.png](https://i-blog.csdnimg.cn/blog_migrate/e7f638a13c2128883d94a5f4d47d9ad6.png)
3. scale(),该元素增加或减少的大小,取决于宽度(X轴)和高度(Y轴)的参数:
![36d489f65c59dd7d1030e3bd98d6e846.png](https://i-blog.csdnimg.cn/blog_migrate/ee0b7c0d713045c701bc71836f052a75.png)
div {
margin: 150px;
width: 200px;
height: 100px;
background-color: yellow;
border: 1px solid black;
border: 1px solid black;
transform: scale(2,3);
}
<p>scale() 方法用于增加或缩小元素的大小。</p>
<div>
div 元素的宽度是原始大小的两倍,高度是原始大小的三倍。
</div>
![5036331bddd0a95721235af12cfce931.png](https://i-blog.csdnimg.cn/blog_migrate/b504880773173074602e823af25adbc3.png)
4. skew()
transform:skew(<angle> [,<angle>]);
包含两个参数值,分别表示X轴和Y轴倾斜的角度,如果第二个参数为空,则默认为0,参数为负表示向相反方向倾斜。
- skewX(<angle>);表示只在X轴(水平方向)倾斜。
- skewY(<angle>);表示只在Y轴(垂直方向)倾斜。
div
{
width:100px;
height:75px;
background-color:red;
border:1px solid black;
}
div#div2
{
transform:skew(30deg,20deg);
}
<div>Hello. This is a DIV element.</div>
<div id="div2">Hello. This is a DIV element.</div>
![f775aaa3771a046bdd060dd613332f49.png](https://i-blog.csdnimg.cn/blog_migrate/b4c5bae2ababc587736a7d3eed1484ce.png)
5. matrix()
matrix()方法和2D变换方法合并成一个。
matrix 方法有六个参数,包含旋转,缩放,移动(平移)和倾斜功能:
div
{
transform:matrix(0.866,0.5,-0.5,0.866,0,0);
}
<div>Hello. This is a DIV element.</div>
<div id="div2">Hello. This is a DIV element.</div>
![8088cdd89b1089a42cef39714889ae3f.png](https://i-blog.csdnimg.cn/blog_migrate/700721605637d7b0d8c0f2a63c35881e.png)
2D 转换方法总结
- matrix(n,n,n,n,n,n) 定义 2D 转换,使用六个值的矩阵
- translateX(n) 定义 2D 转换,沿着 X 轴移动元素
- translateY(n) 定义 2D 转换,沿着 Y 轴移动元素
- translate(x,y) 定义 2D 转换,沿着 X 和 Y 轴移动元素
- scaleX(n) 定义 2D 缩放转换,改变元素的宽度
- scaleY(n) 定义 2D 缩放转换,改变元素的高度
- scale(x,y) 定义 2D 缩放转换,改变元素的宽度和高度
- rotate(angle) 定义 2D 旋转,在参数中规定角度
- skewX(angle) 定义 2D 倾斜转换,沿着 X 轴
- skewY(angle) 定义 2D 倾斜转换,沿着 Y 轴
- skew(x-angle,y-angle) 定义 2D 倾斜转换,沿着 X 和 Y 轴
3D 转换
CSS3 允许使用 3D 转换来对元素进行格式化
浏览器兼容
![86fe8f51d80a299b58a024dfc74394e7.png](https://i-blog.csdnimg.cn/blog_migrate/2ef46c35c0edadddf2e1e16ce8c83fc7.jpeg)
属性
- rotateX() 围绕其在一个给定度数X轴旋转的元素
![8b365546a169cef7a337e27ad1a0bd91.png](https://i-blog.csdnimg.cn/blog_migrate/aeac78059dc21ad66946add7f34c82ea.png)
div
{
width:100px;
height:75px;
background-color:red;
border:1px solid black;
}
div#div2
{
transform:rotateX(120deg);
}
<p><b>注意:</b> Internet Explorer 9 (以及更早版本的浏览器) 和 Opera 不支持 rotateX 方法.</p>
<div>Hello. This is a DIV element.</div>
<div id="div2">Hello. This is a DIV element.</div>
![f18965e516c60aaeb84f4e9970aeba57.png](https://i-blog.csdnimg.cn/blog_migrate/ddbdb914b1b41ddc9e49c791d0d04f6f.png)
2. rotateY() 方法
![f0674c1e4ccfc6ce4026c91538ce9754.png](https://i-blog.csdnimg.cn/blog_migrate/7bcff2d235ccbab69b2f3748c5e353bb.png)
div
{
width:100px;
height:75px;
background-color:red;
border:1px solid black;
}
div#div2
{
transform:rotateY(130deg);
}
![513456ddc3d83710e971e2ce58858621.png](https://i-blog.csdnimg.cn/blog_migrate/6f879a248864115a9fd9498509a634f6.png)
3D 转换方法总结
- translate3d(x,y,z) 定义 3D 转化
- translateX(x) 定义 3D 转化,仅使用用于 X 轴的值
- translateY(y) 定义 3D 转化,仅使用用于 Y 轴的值
- translateZ(z) 定义 3D 转化,仅使用用于 Z 轴的值
- scale3d(x,y,z) 定义 3D 缩放转换
- scaleX(x) 定义 3D 缩放转换,通过给定一个 X 轴的值
- scaleY(y) 定义 3D 缩放转换,通过给定一个 Y 轴的值
- scaleZ(z) 定义 3D 缩放转换,通过给定一个 Z 轴的值
- rotate3d(x,y,z,angle) 定义 3D 旋转
- rotateX(angle) 定义沿 X 轴的 3D 旋转
- rotateY(angle) 定义沿 Y 轴的 3D 旋转
- rotateZ(angle) 定义沿 Z 轴的 3D 旋转
- perspective(n) 定义 3D 转换元素的透视视图。