CSS 动画与变换属性详解

CSS 动画与变换属性详解

1. transform(变换)

1.1 基本概念

transform 属性允许您对元素进行 2D 或 3D 变换,包括旋转、缩放、移动(平移)和倾斜等操作。该属性不会改变文档布局,只影响元素的视觉呈现。

1.2 常用变换函数

函数 语法 描述 示例
平移 translateX(x), translateY(y), translate(x,y) 在水平和/或垂直方向移动元素 transform: translate(50px, 20px);
旋转 rotate(angle) 围绕元素中心旋转指定角度 transform: rotate(45deg);
缩放 scaleX(sx), scaleY(sy), scale(sx[, sy]) 在X和/或Y轴方向缩放元素 transform: scale(1.5);
倾斜 skewX(angle), skewY(angle), skew(ax[, ay]) 使元素沿X和/或Y轴倾斜指定角度 transform: skew(10deg, 5deg);
矩阵 matrix(a,b,c,d,e,f) 使用6值矩阵应用复杂2D变换 transform: matrix(1,0,0,1,50,50);
3D变换 translate3d(), rotate3d(), scale3d() 在3D空间中进行变换 transform: translate3d(10px, 20px, 30px);

1.3 transform-origin 属性

transform-origin 属性用于设置变换的基点(原点),默认值为元素的中心点 。

取值:

  • 关键字left, right, top, bottom, center
  • 长度值:像素、em等具体单位
  • 百分比:相对于元素尺寸的百分比

示例:

css 复制代码
.element {
transform-origin: left top; /* 以左上角为变换原点 */
transform: rotate(45deg);
}

2. @keyframes(关键帧)

2.1 基本概念

@keyframes 规则用于创建动画序列,通过定义动画过程中特定时间点的样式状态(关键帧)来控制动画的中间步骤。

2.2 语法格式

css 复制代码
@keyframes 动画名称 {
0% { /* 起始状态样式 */ }
50% { /* 中间状态样式 */ }
100% { /* 结束状态样式 */ }
}

2.3 关键帧选择器

选择器 等效值 描述
from 0% 动画开始状态
to 100% 动画结束状态
25%, 50%, 75% - 动画过程中的特定时间点

示例:

css 复制代码
@keyframes slide-in {
from {
transform: translateX(-100%);
opacity: 0;
}
50% {
opacity: 0.5;
}
to {
transform: translateX(0);
opacity: 1;
}
}

3. animation(动画)

3.1 基本概念

animation 属性是一个简写属性,用于将动画效果应用于元素。它包含了多个子属性的功能。

3.2 子属性详解

属性 描述 可选值 默认值
animation-name 指定要应用的@keyframes动画名称 自定义标识符或none none
animation-duration 动画完成一个周期所需时间 时间值(s或ms) 0s
animation-timing-function 动画的速度曲线 ease, linear, ease-in, ease-out, ease-in-out, cubic-bezier() ease
animation-delay 动画开始前的延迟时间 时间值(s或ms) 0s
animation-iteration-count 动画播放次数 数字或infinite 1
animation-direction 动画播放方向 normal, reverse, alternate, alternate-reverse normal
animation-fill-mode 动画外部的样式应用方式 none, forwards, backwards, both none
animation-play-state 动画播放状态 running, paused running

3.3 animation 简写语法

css 复制代码
animation: name duration timing-function delay iteration-count direction fill-mode play-state;

示例:

css 复制代码
.element {
animation: slide-in 2s ease-in-out 0.5s infinite alternate forwards;
}

4. 综合应用示例

4.1 基本动画效果

css 复制代码
.box {
width: 100px;
height: 100px;
background: blue;
animation: bounce 2s ease-in-out infinite;
}
@keyframes bounce {
0%, 100% {
transform: translateY(0);
}
50% {
transform: translateY(-30px);
}
}

4.2 复杂变换动画

css 复制代码
.card {
transform-origin: center;
animation: card-animation 3s cubic-bezier(0.25, 0.46, 0.45, 0.94) alternate;
}
@keyframes card-animation {
0% {
transform: perspective(500px) rotateY(0deg) scale(0.8);
opacity: 0;
}
50% {
transform: perspective(500px) rotateY(180deg) scale(1.1);
opacity: 1;
}
100% {
transform: perspective(500px) rotateY(360deg) scale(1);
opacity: 1;
}
}

5. 浏览器兼容性提示

虽然现代浏览器对CSS动画和变换的支持良好,但在某些旧版本浏览器中可能需要添加供应商前缀:

css 复制代码
.element {
-webkit-transform: rotate(45deg); /* Chrome, Safari */
-moz-transform: rotate(45deg); /* Firefox */
-ms-transform: rotate(45deg); /* IE 9 */
-o-transform: rotate(45deg); /* Opera */
transform: rotate(45deg);
}
@-webkit-keyframes example { /* Webkit前缀 */
from { opacity: 0; }
to { opacity: 1; }
}

以上表格和示例涵盖了CSS变换和动画的核心概念,可作为日常开发的快速参考。

相关推荐
jinanwuhuaguo2 分钟前
(第二十九篇)OpenClaw 实时与具身的跃迁——从异步孤岛到数字世界的“原住民”
前端·网络·人工智能·重构·openclaw
广州华水科技8 分钟前
深度测评2026年单北斗GNSS位移监测系统推荐,与高口碑变形监测设备一同引领行业新风尚
前端
Alice-YUE1 小时前
【js高频八股】防抖与节流
开发语言·前端·javascript·笔记·学习·ecmascript
是上好佳佳佳呀2 小时前
【前端(十一)】JavaScript 语法基础笔记(多语言对比)
前端·javascript·笔记
CDN3603 小时前
排查实录:网站偶发502/504错误?360CDN回源超时配置与日志分析技巧
前端·数据库
之歆3 小时前
Day07_CSS盒子模型 · 样式继承 · 用户代理样式
前端·css
DanCheOo3 小时前
AI 应用的安全架构:Prompt 注入、数据泄露、权限边界
前端·人工智能·prompt·安全架构
We་ct4 小时前
深度剖析浏览器跨域问题
开发语言·前端·浏览器·跨域·cors·同源·浏览器跨域
weixin_427771615 小时前
前端调试隐藏元素
前端
爱上好庆祝6 小时前
学习js的第五天
前端·css·学习·html·css3·js