⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

CSS 2D/3D 变换

学习 translate/rotate/scale/skew · 难度:进阶 · +15XP

CSS 2D/3D 变换详解

CSS transform 属性允许你对元素进行旋转、缩放、移动和倾斜等变换操作。结合过渡和动画,transform 可以创建流畅的交互效果。所有变换都不会影响文档流中其他元素的位置。

2D 平移 translate

translate() 沿 X 轴或 Y 轴移动元素。可以使用像素值或百分比(百分比相对于元素自身尺寸)。

div {
  transform: translate(50px, 100px);  /* X 轴 50px, Y 轴 100px */
}
div.center {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);  /* 完美居中 */
}
div.only-x {
  transform: translateX(30px);
}
div.only-y {
  transform: translateY(-20px);
}

旋转 rotate

rotate() 按指定角度旋转元素。正值顺时针,负值逆时针。

div {
  transform: rotate(45deg);    /* 顺时针 45 度 */
}
div.half-turn {
  transform: rotate(180deg);
}
div.back {
  transform: rotateY(180deg);  /* 3D Y 轴翻转 */
}
img:hover {
  transform: rotate(360deg);
  transition: transform 0.5s ease;
}

缩放 scale

scale() 按比例缩放元素。值大于 1 放大,小于 1 缩小,负值会产生翻转效果。

div {
  transform: scale(1.5);       /* 放大到 1.5 倍 */
}
div.small {
  transform: scale(0.8);
}
div.stretch {
  transform: scale(1.2, 0.8);  /* X 轴 1.2, Y 轴 0.8 */
}
button:hover {
  transform: scale(1.05);      /* 悬停微放大 */
}

倾斜 skew

skew() 沿 X 轴或 Y 轴倾斜元素,创建斜切效果。

div {
  transform: skew(20deg, 10deg);  /* X 倾斜 20deg, Y 倾斜 10deg */
}
div.only-x {
  transform: skewX(15deg);
}

组合变换

你可以在一个 transform 声明中组合多种变换,用空格分隔。注意:变换的顺序会影响最终效果。

div {
  transform: translateX(100px) rotate(45deg) scale(1.2);
}
/* 不同顺序,不同结果 */
div.order1 {
  transform: rotate(45deg) translateX(100px);
}
div.order2 {
  transform: translateX(100px) rotate(45deg);
}

变换速查表

函数作用参数示例
translate(x,y)2D 平移长度值或百分比translate(50px, 0)
translateX(x)X 轴平移长度值translateX(30px)
translateY(y)Y 轴平移长度值translateY(-20px)
rotate(angle)2D 旋转角度 degrotate(45deg)
scale(x,y)缩放数字(比例)scale(1.5, 1.5)
skew(x,y)倾斜角度 degskew(10deg, 5deg)
rotateX/Y/Z3D 旋转角度 degrotateY(180deg)
perspective(n)透视距离长度值perspective(500px)

???? 练习

  1. 用 translate(-50%, -50%) 配合绝对定位实现一个弹窗的完美居中
  2. 给按钮添加 hover 时 scale(1.05) 的缩放效果
  3. 创建一个加载动画,用 rotate 让图标持续旋转
  4. 用 skew 制作一个倾斜的封面卡片
  5. 尝试组合多个变换函数,观察不同顺序对结果的影响
Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 122 篇
0 完成
🔥 0