Tailwind CSS V4 变换(Transforms)完整教程 + 可运行 Demo
前言
Transform 变换是前端开发中非常常用的样式能力,用来对元素进行位移、缩放、旋转、倾斜、透视等几何形变。Tailwind CSS V4 对 transform 底层做了优化,默认会使用 GPU 加速渲染,配合前面学习的 transition 过渡,能轻松实现流畅的交互动效。
和 V3 相比,V4 的变换工具类基础用法大体一致,但在底层解析、任意值语法、和 @theme 自定义变换的写法上遵循 V4 新规范;同时变换类可以和 @starting-style、hover、active、focus 等变体自由组合,非常适合做卡片悬浮、按钮按压、弹窗缩放等场景。
提示:transform 变换不会改变文档流布局,元素原本占据的空间不会被挤压或撑开,这是 transform 的核心特点。
一、五大基础变换能力
1. 位移 translate
控制元素在 X(水平)、Y(垂直)方向移动。
translate-x-*:水平方向移动,正数向右,负数向左translate-y-*:垂直方向移动,正数向下,负数向上
常用预设:translate-x-0、translate-x-1、translate-x-2、translate-x-4、translate-x-8;负数示例:-translate-y-1(向上偏移)
支持任意值方括号语法(V4):translate-x-[10px]、translate-y-[2rem]
2. 缩放 scale
放大缩小元素,支持 X、Y 轴单独缩放,也可以整体缩放。
scale-*:整体等比例缩放scale-x-*:仅水平缩放scale-y-*:仅垂直缩放
常用预设:scale-50(0.5倍)、scale-95、scale-100(原始大小)、scale-105、scale-110
业务高频场景:按钮 hover:scale-105,点击 active:scale-95
3. 旋转 rotate
旋转元素,单位角度 deg。正数顺时针,负数逆时针。rotate-0、rotate-45、rotate-90、rotate-180;负数:-rotate-12
自定义角度:rotate-[15deg]
4. 倾斜 skew
斜切扭曲元素,分为 X 轴倾斜、Y轴倾斜
skew-x-*:水平方向倾斜skew-y-*:垂直方向倾斜
示例:skew-x-12、skew-y-6
5. 透视 perspective
开启3D透视效果,给子元素营造3D空间,配合 rotateX / rotateY 使用。perspective-* 用来设置透视距离,值越小透视效果越强。
二、变换组合使用
多个变换可以叠加在同一个元素上,直接并列写工具类即可,不需要像原生CSS那样手动写 transform: translate() scale() rotate()。
示例:
<div class="translate-x-2 scale-105 rotate-3">
同时位移+放大+旋转
</div>
三、配合过渡 transition(重点)
变换类属于 GPU 加速属性,推荐搭配 transition-transform,只监听transform属性变化,性能远优于 transition-all。
<div class="transition-transform duration-300 hover:scale-105 hover:-translate-y-1">
悬浮放大上移
</div>
四、V4 自定义变换(@theme 写法)
V4 自定义变换不再使用 JS 配置,统一在 <style type="text/tailwindcss"> 内用 @theme 注册。
<style type="text/tailwindcss">
@theme {
--transform-custom-tilt: skewX(-6deg) rotateY(8deg);
}
</style>
<div class="transform-custom-tilt">自定义变换</div>
五、常见业务场景示例
- 卡片悬浮抬升
<div class="transition-transform duration-300 hover:-translate-y-1 hover:scale-[1.02]">
卡片
</div>
- 按钮按压效果
<button class="transition-transform duration-200 hover:scale-105 active:scale-95">
点击按钮
</button>
- 小图标旋转展开
<div class="transition-transform duration-300 group-hover:rotate-180">↓</div>
六、避坑指南
- transform 不会改变页面布局,元素原有占位保持不变;如果需要改变布局,不要使用transform。
- 多个变换直接并列写类名,V4 会自动合并到同一个 transform 属性,不会冲突。
- 做动画时,transform 优先搭配
transition-transform,性能更好,减少浏览器重绘开销。 - 3D旋转(rotateX / rotateY)需要搭配
perspective-*透视,否则看不出3D效果。 - 任意值语法
scale-[1.2]、translate-x-[20px]V4 原生支持,调试非常方便。
七、完整可运行 Demo(Tailwind CSS V4)
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tailwind CSS V4 Transforms Demo</title>
<!-- V4 Play CDN -->
<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
<style type="text/tailwindcss">
@theme {
--transform-tilt-card: skewX(-3deg) rotateY(5deg);
}
</style>
</head>
<body class="p-10 bg-slate-100 space-y-8">
<h1 class="text-3xl font-bold text-slate-800">Tailwind CSS V4 Transform 变换演示</h1>
<!-- 1. 位移 translate 悬浮上移 -->
<div class="p-6 bg-white rounded-xl shadow-md transition-transform duration-300 hover:-translate-y-2">
悬浮向上位移 -translate-y-2
</div>
<!-- 2. 缩放 scale 按钮交互 -->
<button class="px-8 py-3 bg-blue-500 text-white rounded-lg transition-transform duration-200 hover:scale-105 active:scale-95">
hover放大,点击按压缩小
</button>
<!-- 3. 旋转 rotate -->
<div class="w-24 h-24 bg-emerald-500 rounded-lg transition-transform duration-500 hover:rotate-45 flex items-center justify-center text-white">
hover旋转45度
</div>
<!-- 4. 倾斜 skew -->
<div class="p-4 bg-amber-500 text-white skew-x-3 w-fit">
skew-x-3 X轴倾斜
</div>
<!-- 5. 多个变换叠加 -->
<div class="p-6 bg-white rounded-xl shadow-md transition-transform duration-300 hover:scale-105 hover:-translate-y-1 hover:rotate-1">
组合变换:缩放 + 位移 + 轻微旋转
</div>
<!-- 6. V4 @theme 自定义变换 -->
<div class="p-6 bg-indigo-500 text-white rounded-xl transform-tilt-card w-fit">
@theme 自定义倾斜变换
</div>
<!-- 7. 任意值语法自定义变换 -->
<div class="p-4 bg-rose-500 text-white rounded-lg transition-transform duration-300 hover:scale-[1.15] hover:translate-x-[8px]">
方括号任意值:scale-[1.15] translate-x-[8px]
</div>
<!-- 8. 3D透视+旋转 -->
<div class="perspective-500">
<div class="p-6 bg-cyan-500 text-white rounded-xl transition-transform duration-500 hover:rotate-y-12 w-fit">
3D透视 + Y轴旋转(hover查看)
</div>
</div>
</body>
</html>全文总结
Tailwind CSS V4 的 Transform 变换工具类,可以快速实现位移、缩放、旋转、倾斜、透视等几何形变。配合 transition-transform 过渡,能做出高性能的交互动效。多个变换直接叠加类名即可,V4 支持方括号任意值语法,自定义变换使用 @theme 注册变量,无需修改JS配置。开发时记住:transform 只改变视觉渲染,不影响文档流布局,做动画优先选用 transform。
Tailwind CSS V4 Transform 变换 速查表
说明:适用于 Tailwind CSS v4,支持 Play CDN / NPM 工程;可和
hover/active/focus/@starting-style变体组合;搭配transition-transform实现高性能动画。
核心特性:transform 只改变视觉形态,不会改动文档流布局,GPU加速,动画性能优秀。
一、基础变换工具类
1. 位移 translate
| 工具类 | 作用 |
|---|---|
translate-x-{num} | X轴水平位移,正数向右 |
-translate-x-{num} | X轴向左位移 |
translate-y-{num} | Y轴垂直位移,正数向下 |
-translate-y-{num} | Y轴向上位移 |
常用预设:translate-x-0、translate-x-1、translate-x-2、translate-x-4、translate-x-8
任意值语法:translate-x-[20px]、translate-y-[1.5rem]
2. 缩放 scale
| 工具类 | 作用 |
|---|---|
scale-{num} | X、Y轴整体等比例缩放 |
scale-x-{num} | 仅水平缩放 |
scale-y-{num} | 仅垂直缩放 |
常用预设:scale-50(0.5倍)、scale-95、scale-100(原始大小)、scale-105、scale-110
任意值语法:scale-[1.15]
3. 旋转 rotate
| 工具类 | 作用 |
|---|---|
rotate-{num} | 平面旋转,正数顺时针 |
-rotate-{num} | 逆时针旋转 |
rotate-x-{num} | 绕X轴3D旋转 |
rotate-y-{num} | 绕Y轴3D旋转 |
常用预设:rotate-0、rotate-45、rotate-90、rotate-180
任意值语法:rotate-[15deg]
4. 倾斜 skew
| 工具类 | 作用 |
|---|---|
skew-x-{num} | X轴水平斜切扭曲 |
skew-y-{num} | Y轴垂直斜切扭曲 |
常用预设:skew-x-6、skew-x-12、skew-y-3
任意值语法:skew-x-[8deg]
5. 透视 perspective(3D效果必备)
| 工具类 | 作用 |
|---|---|
perspective-{num} | 设置透视距离,加在父元素,开启子元素3D空间 |
值越小透视效果越强,例:
perspective-500
二、组合使用规则
多个变换直接并列写类名,V4会自动合并到同一个 transform 属性,不需要手动写原生CSS transform。
<!-- 位移+缩放+旋转 组合示例 -->
<div class="-translate-y-1 scale-105 rotate-1">内容</div>
三、搭配过渡(推荐高性能写法)
优先使用 transition-transform,只监听transform属性变化,相比transition-all大幅减少性能开销
<div class="transition-transform duration-300 hover:-translate-y-1 hover:scale-105">
悬浮卡片
</div>
四、V4 自定义变换(@theme 标准语法)
V4不再直接在@theme写CSS类,通过
--transform-xxx变量注册
<style type="text/tailwindcss">
@theme {
/* 自定义变换,变量名必须以 --transform- 开头 */
--transform-tilt-card: skewX(-3deg) rotateY(5deg);
}
</style>
<!-- 使用 -->
<div class="transform-tilt-card">倾斜卡片</div>
五、高频业务代码片段(直接复制使用)
<!-- 1. 卡片悬浮抬升 --> <div class="transition-transform duration-300 hover:-translate-y-2 hover:scale-[1.02]"> 卡片 </div><!-- 2. 按钮按压交互 -->
<button class="transition-transform duration-200 hover:scale-105 active:scale-95">
按钮
</button> <!-- 3. 图标旋转展开(配合group) -->
<div class="group">
<span class="transition-transform duration-300 group-hover:rotate-180">▼</span>
</div> <!-- 4. 3D旋转卡片 -->
<div class="perspective-500">
<div class="transition-transform duration-500 hover:rotate-y-12">
3D翻转
</div>
</div><!-- 5. 方括号任意值自定义变换 -->
<div class="transition-transform duration-300 hover:scale-[1.15] hover:translate-x-[8px]">
自定义数值变换
</div>
六、避坑清单
- transform 只改变视觉,不会改变元素原始占位大小,需要布局位移不要用transform。
- 3D旋转
rotate-x/rotate-y必须在父元素添加perspective-*,否则看不到3D透视效果。 - 动画场景,优先搭配
transition-transform,禁止无脑使用transition-all,避免性能损耗。 - 多个变换直接叠加类名,V4自动合并,不会互相覆盖。
- 自定义变换必须使用
--transform-xxx变量在@theme内注册,V4不支持旧版直接写class的写法。 - 任意值方括号语法
scale-[1.2]、translate-x-[20px]V4原生支持,适合临时调试。
七、速记口诀
位移缩放旋转斜切,transform只改视觉;
动画优先transition-transform,GPU加速性能佳;
多变换直接叠加类,自定义变换theme注册。
0 条笔记