CSS3 - 变换(Transform)的使用,以及变换的过渡
1,变换函数
一般变换是以元素的中心点为参照点的。可以通过在应用变换前用 transform-origin 属性来移动这个参照点。
比如:
3,3D变换
4,使用变换的过渡
在线演示如下:
代码如下:
translateX(x):在水平方向移动元素,正值向右移动。
translateY(y):在垂直方向移动元素,正值向下移动。
translate(x,y):在水平和垂直方向移动元素。
scaleX(x):在水平方向缩放元素(1.0是原始大小)。使用负值会将元素绕y轴翻转,创建一个从右到左的镜像。
scaleY(y):在垂直方向缩放元素(1.0是原始大小)。使用负值会将元素绕x轴翻转,创建一个从下到上的镜像。
scale(x,y):在水平和垂直方向缩放元素。
rotate(angle):围绕元素中心顺时针旋转。用负值则逆时针旋转。
skewX(angle):在水平方向倾斜元素。上下边缘仍然水平,左右边缘倾斜。
skewY(angle):在垂直方向倾斜元素。左右边缘不倾斜,上下边缘倾斜。
skew(x-angle,y-angle):在水平和垂直方向倾斜。
matrix(n1,n2,n3,n4,n5,n6):用矩阵乘法来变换元素(其他所有的变换都可以使用矩阵乘法来实现)。
2,变换
变换是一个强大的工具,可以移动、缩放、斜切和旋转元素,扭曲它的外观。要用 transform 属性即可实现变换。
(变换不会影响页面中的其他元素,也不会影响布局。比如通过变换放大某个元素,那么该元素会简单地覆盖相邻元素)
以如下图片为例:
(1)旋转元素及其内容
下面使用rotate()函数把元素围绕其中心点旋转了20度。
<style> .rotatedElement { transform: rotate(20deg); -ms-transform: rotate(20deg); -webkit-transform: rotate(20deg); } </style> <img src="logo5.png" class="rotatedElement"/>(2)连续使用多种变换效果
下面先把元素变成原来的1.2倍,再向右移动30个像素,然后又斜切了-15度。
.rotatedElement { transform: scale(1.2) translateX(30px) skew(-15deg); -ms-transform: scale(1.2) translateX(30px) skew(-15deg); -webkit-transform: scale(1.2) translateX(30px) skew(-15deg); }(3)修改默认参照点。
一般变换是以元素的中心点为参照点的。可以通过在应用变换前用 transform-origin 属性来移动这个参照点。
比如:
transform-origin: 0% 0%; 表示左上角为参照点
transform-origin: 100% 0%; 表示右上角为参照点
transform-origin: 50% 200%; 表示参照点x坐标是元素水平方向的中间,y坐标是从上边缘向下两倍于元素高度的地方。
transform-origin: 100% 0%; 表示右上角为参照点
transform-origin: 50% 200%; 表示参照点x坐标是元素水平方向的中间,y坐标是从上边缘向下两倍于元素高度的地方。
下面让元素围绕元素的左上角旋转45度:
.rotatedElement { transform-origin: 0% 0%; -ms-transform-origin: 0% 0%; -webkit-transform-origin: 0% 0%; transform: rotate(45deg); -ms-transform: rotate(45deg); -webkit-transform: rotate(45deg); }(4)移除所有的变换效果
要移除所有的变换效果,可将 transform 属性设置为 none
.rotatedElement { transform: none; -ms-transform: none; -webkit-transform: none; }
3,3D变换
除了在二维空间移动元素,CSS3还可以用3D变换在三维空间移动、旋转和弯曲元素。
4,使用变换的过渡
通常变换和过渡是组合使用的。比如下面以一个在线影集为例,当鼠标移动到图片上时,图片会旋转并放大。而鼠标离开时,图片又会收缩并回到原位。这些变换是有过渡效果的。
<!doctype html> <html lang="en"> <head> <title>hangge.com</title> <style> .gallery { margin:0px 30px 0px 30px; background: #D8EEFE; padding: 10px; } .gallery img{ margin: 5px; padding: 5px; width: 75px; border: solid 1px black; background: white; transition: all 1s; -webkit-transition: all 1s; } .gallery img:hover { transform: scale(2.2) rotate(10deg); -ms-transform: scale(2.2) rotate(10deg); -webkit-transform: scale(2.2) rotate(10deg); } </style> </head> <body style="padding-top:100px"> <div class="gallery"> <img src="g1.jpg"/> <img src="g2.jpg"/> <img src="g3.jpg"/> <img src="g4.jpg"/> </div> </body> </html>