CSS3 2D 转换(2D Transforms)是一组允许元素进行旋转、缩放、移动和倾斜等视觉变换的 CSS 属性。它们可以使网页元素在不改变文档布局的情况下,产生动态的视觉效果。
常用 2D 转换属性
1. transform
属性
transform
属性是用来应用 2D 转换的主要属性。通过指定不同的转换函数,可以实现不同的效果。
旋转(rotate)
rotate()
函数用于围绕元素的中心点旋转。
css
transform: rotate(45deg); /* 顺时针旋转 45 度 */
transform: rotate(-30deg); /* 逆时针旋转 30 度 */
缩放(scale)
scale()
函数用于在水平和垂直方向上缩放元素。参数可以是一个或两个值,第一个值控制水平缩放,第二个值控制垂直缩放。
css
transform: scale(1.5); /* 同时放大1.5倍 */
transform: scale(2, 0.5); /* 水平放大2倍,垂直缩小到一半 */
平移(translate)
translate()
函数用于沿水平和/或垂直方向移动元素。单位可以是像素(px)、百分比(%)等。
css
transform: translate(50px, 100px); /* 向右移动 50px,向下移动 100px */
transform: translateX(30%); /* 仅在水平移动 30% */
transform: translateY(-20px); /* 仅在垂直方向向上移动 20px */
倾斜(skew)
skew()
函数用于沿水平和/或垂直方向倾斜元素。
css
transform: skew(30deg, 20deg); /* 水平倾斜 30 度,垂直倾斜 20 度 */
transform: skewX(15deg); /* 仅水平倾斜 15 度 */
transform: skewY(-10deg); /* 仅垂直倾斜 10 度 */
2. transform-origin
属性
transform-origin
属性指定转换的原点,即转换相对于元素的哪个点进行。可以设置为具体的像素值、百分比或者关键字(如 left
, center
, right
, top
, bottom
)。
css
transform-origin: center; /* 默认值,元素中心 */
transform-origin: top left; /* 元素的左上角 */
transform-origin: 50% 50%; /* 元素的中心 */
transform-origin: 10px 20px; /* 从元素左上角偏移 10px 和 20px */
3. 组合转换
多个转换可以通过空格分隔来组合使用,组合的顺序会影响最终效果。
css
transform: translate(50px, 100px) rotate(30deg) scale(1.2);
例子
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS3 2D 转换示例</title>
<style>
.box {
width: 100px;
height: 100px;
background-color: #4CAF50;
margin: 20px;
transition: transform 0.5s; /* 添加过渡效果 */
}
.rotate {
transform: rotate(45deg);
}
.scale {
transform: scale(1.5);
}
.translate {
transform: translate(50px, 50px);
}
.skew {
transform: skew(30deg, 10deg);
}
</style>
</head>
<body>
<div class="box rotate">旋转</div>
<div class="box scale">缩放</div>
<div class="box translate">平移</div>
<div class="box skew">倾斜</div>
</body>
</html>
在这个示例中,我们定义了几个盒子,每个盒子应用了不同的 2D 转换效果:旋转、缩放、平移和倾斜。每个转换都有一个过渡效果,使得变化更加平滑。通过使用这些 CSS3 2D 转换属性,开发者可以为网页元素添加动态的视觉效果。