CSS变换包括对元素的移动、旋转、放大缩小、倾斜等。因此,整体来说,变换就是能让元素形状、尺寸、位置发生改变的特效。
如下所示,CSS变换分为2D变换和3D变换两大类。
下表是每种浏览器支持相应属性的最低版本,其中-ms-、-webkit-、-moz-、-o-这些前缀,指每种浏览器支持2D变换属性的最低版本浏览器中,需要加上这些前缀,比如在3.5版本的Firefox浏览器中如果要想用transform属性,则需要写成-moz-transform属性;剩下的以此类推。
属性 | |||||
---|---|---|---|---|---|
transform | 36.0 4.0 -webkit- |
10.0 9.0 -ms- |
16.0 3.5 -moz- |
9.0 3.2 -webkit- |
23.0 15.0 -webkit- 12.1 10.5 -o- |
transform-origin | 36.0 4.0 -webkit- |
10.0 9.0 -ms- |
16.0 3.5 -moz- |
9.0 3.2 -webkit- |
23.0 15.0 -webkit- 12.1 10.5 -o- |
本节中会运用到如如下相关2D变换属性:
translate()
rotate()
scale()
skewX()
skewY()
matrix()
下一节会介绍3D变换相关的属性。
如下所示,translate()
方法可以将指定元素平移到指定坐标位置。(以元素左上角为圆点,从左到右为x轴,从上往下为y轴,下例中,div元素被translate方法向右移动50px,向下移动100px )
div { -ms-transform: translate(50px, 100px); /* IE 9 */ -webkit-transform: translate(50px, 100px); /* Safari */ transform: translate(50px, 100px); }
如下所示,rotate()
方法可以将指定元素以指定角度进行旋转。
案例1 顺时针旋转20度
div { -ms-transform: rotate(20deg); /* IE 9 */ -webkit-transform: rotate(20deg); /* Safari */ transform: rotate(20deg); }
案例2 逆时针旋转20度
div { -ms-transform: rotate(-20deg); /* IE 9 */ -webkit-transform: rotate(-20deg); /* Safari */ transform: rotate(-20deg); }
scale()
方法可以放大或缩小指定元素的尺寸。(根据针对宽度和高度的比例)
案例1:指定元素的宽度扩大成原来的2倍,高度扩大成原来的3倍。
div { -ms-transform: scale(2, 3); /* IE 9 */ -webkit-transform: scale(2, 3); /* Safari */ transform: scale(2, 3); }
案例2:指定元素的宽度缩小成原来的一半,高度缩小成原来的一半。
div { -ms-transform: scale(0.5, 0.5); /* IE 9 */ -webkit-transform: scale(0.5, 0.5); /* Safari */ transform: scale(0.5, 0.5); }
skewX()
方法可让元素沿着x轴方向倾斜指定角度。具体如何,请看示例:
div { -ms-transform: skewX(20deg); /* IE 9 */ -webkit-transform: skewX(20deg); /* Safari */ transform: skewX(20deg); }
skewY()
方法可让元素沿着y轴方向倾斜指定角度。具体如何,请看示例:
div { -ms-transform: skewY(20deg); /* IE 9 */ -webkit-transform: skewY(20deg); /* Safari */ transform: skewY(20deg); }
skew()
方法可以让元素同时实现skewX()
和skewY()
方法,因为skew()
方法一次性吃两个变量,分别代表沿着x轴和y轴倾斜的角度。
div { -ms-transform: skew(20deg, 10deg); /* IE 9 */ -webkit-transform: skew(20deg, 10deg); /* Safari */ transform: skew(20deg, 10deg); }
如果第二个参数缺省,则等价于第二参数为0,即skew(x)等价于skewX(x)方法。
洒家就是爱通吃,因此洒家要告诉大家一个可以通吃上述全部功能的方法,叫matrix()
方法,它有6个参数,如下所示:
matrix( scaleX(), skewY(), skewX(), scaleY(), translateX(),translateY() )
案例如下:
div { -ms-transform: matrix(1, -0.3, 0, 1, 0, 0); /* IE 9 */ -webkit-transform: matrix(1, -0.3, 0, 1, 0, 0); /* Safari */ transform: matrix(1, -0.3, 0, 1, 0, 0); }