本文介绍CSS样式中如何设置元素的变换(transform)效果,包括平移(translate)、缩放(scale)、旋转(rotate)、扭曲(skew)等。
变换会基于元素的原点(origin)操作,而元素默认原点位于元素的中心,修改原点位置使用transform-origin属性,可以使用center(默认值)、top、bottom、left、right关键字及它们的组合设置,也可以使用数值或百分数设置原点的水平和垂直方向坐标,如“50% 50%”也是表示元素的中心位置、“transform-origin:top left;”可以将元素的原点设置到左上角。
下面分别介绍各种变换效果。
设置平移效果时在transform属性中使用如下函数:
下面的代码演示了元素的平移。
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style> #div1 { width:300px; height:200px; background-color:red; transform:translate(3em,1em); } </style> </head> <body> <div id="div1"></div> </body> </html>
代码中,div1元素默认应该显示在body元素的左上角,这里设置向右平移3个字符,向下平移1个字符,页面显示效果如下图所示。
缩放元素时可以在transform属性中使用如下函数:
与平移不同,元素缩放时,原点在不同位置时的效果也不一样,如下面的代码会以元素中心为原点进行缩放。
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style> #div1 { width:300px; height:200px; background-color:red; transform:scale(0.5,0.5); } </style> </head> <body> <div id="div1"></div> </body> </html>
页面显示效果如下图所示。
下面的代码,我们修改缩放的原点。
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style> #div1 { width:300px; height:200px; background-color:red; transform-origin:left top; transform:scale(0.5,0.5); } </style> </head> <body> <div id="div1"></div> </body> </html>
代码中将div1元素的原点设置为左上角,缩放效果如下图所示。
实现元素的旋转时可以在transform属性中使用rotate()函数,其参数为旋转的角度,正数时顺时针旋转,负数时逆时针旋转,如30deg表示顺时针旋转30度。下面的代码演示了旋转样式的应用。
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style> #div1 { width:300px; height:200px; background-color:red; transform-origin:bottom right; transform:rotate(-15deg); } </style> </head> <body> <div id="div1"></div> </body> </html>
本例,div1会以右下角为原点逆时针旋转15度,显示效果如下图所示。
设置元素的扭曲效果可以在transform属性中使用如下函数:
下面的代码演示了扭曲的变换样式。
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style> div { width:100px; height:100px; background-color:red; margin-left:100px; } </style> </head> <body> <div id="div1" style="transform:skewX(30deg);"></div> <div id="div2" style="transform:skewX(-30deg);"></div> </body> </html>
为更好地显示扭曲效果,两个div元素都设置了100像素的左边距,页面显示效果如下图所示。