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变换和动画的核心概念,可作为日常开发的快速参考。

相关推荐
blackorbird2 小时前
谷歌 Chrome 浏览器的指纹识别技术,一边反追踪一边搞追踪
前端·chrome
Mintopia2 小时前
🚀 共绩算力:3分钟拥有自己的图像优化服务-CodeFormer:先进的图像算法优化、修复马赛克、提升图片清晰度等
前端·人工智能·ai编程
Lhuu(重开版2 小时前
html语法
前端·html
月弦笙音3 小时前
【vue3】这些不常用的API,却很实用
前端·vue.js·面试
小只笨笨狗~3 小时前
css-文字背景渐变色
前端·css·html
BingoGo3 小时前
CSS 也要支持 if 了 !!!CSS if() 函数来了!
前端·css
用户6600676685393 小时前
深入解析JavaScript数组:从内存原理到高效遍历实践
前端·javascript
用户12039112947263 小时前
CSS定位全解析:从静态到粘性,掌握元素布局的核心技巧
css