CSS3核心特性-第10章-10.1-动画基础语法

CSS3核心特性-第10章-10.1-动画基础语法

· 2026年03月16日 · HTML5+CSS3教程

点击向下滚动

CSS3核心特性-第10章-10.1-动画基础语法

# CSS3核心特性-第10章-10.1-动画基础语法 ## 学习目标 - 掌握 `@keyframes` 关键帧规则的定义方法 - 理解 `animation` 属性的核心子属性及其取值 - 能够编写简单的循环动画和单次动画效果 - 区分动画与过渡(`transition`)的适用场景 ## 概念讲解 CSS3 动画(Animation)是通过 `@keyframes` 定义关键帧序列,控制元素从一个样式状态平滑过渡到另一个状态的技术。与过渡(`transition`)相比,动画具有更强的灵活性: - 支持多阶段状态变化(过渡仅支持开始→结束两个状态) - 可自动触发(过渡需事件触发如 `:hover`) - 支持循环播放、方向控制、暂停/继续等高级功能 **核心术语**: - **关键帧(Keyframe)**:动画过程中的特定状态(如开始、中间、结束状态) - **动画属性(Animation)**:控制动画的播放方式(时长、延迟、循环次数等) - **动画状态**:`running`(运行)/`paused`(暂停) ## 语法参考 ### 1. `@keyframes` 规则 用于定义动画的关键帧序列,语法如下: ```css @keyframes 动画名称 { 0% { 样式属性: 值; } /* 动画开始状态 */ 50% { 样式属性: 值; } /* 动画中间状态 */ 100% { 样式属性: 值; } /* 动画结束状态 */ } /* 或使用 from/to 简化(仅开始和结束状态) */ @keyframes 动画名称 { from { 样式属性: 值; } /* 等价于 0% */ to { 样式属性: 值; } /* 等价于 100% */ } ``` ### 2. `animation` 属性 用于将动画应用到元素,是以下子属性的简写: ```css /* 完整语法 */ animation: 动画名称 时长 时间函数 延迟 循环次数 方向 填充模式 播放状态; /* 常用子属性 */ animation-name: none | ; /* 必选,指定关键帧名称 */ animation-duration: ; /* 必选,动画持续时间(如 2s、500ms) */ animation-timing-function: ease | linear | ...; /* 动画速度曲线(默认 ease) */ animation-iteration-count: | infinite; /* 循环次数(默认 1,infinite 为无限循环) */ animation-direction: normal | reverse | alternate;/* 动画方向(默认 normal) */ ``` **时间函数取值**: | 取值 | 描述 | 应用场景 | | ----------------------- | ---------------- | -------------------------- | | `ease` | 慢→快→慢(默认) | 自然过渡效果 | | `linear` | 匀速 | 机械运动(如时钟旋转) | | `ease-in` | 慢进 | 渐入效果 | | `ease-out` | 慢出 | 渐出效果 | | `cubic-bezier(n,n,n,n)` | 自定义贝塞尔曲线 | 复杂曲线控制(如弹性效果) | ## 实战示例 ### 示例1:简单旋转动画 ```html
``` **效果**:正方形元素以中心为轴匀速旋转,形成loading效果。 ### 示例2:多状态颜色渐变动画 ```css /* 定义关键帧 */ @keyframes colorChange { 0% { background: red; transform: scale(1); } 50% { background: yellow; transform: scale(1.2); } 100% { background: blue; transform: scale(1); } } /* 应用动画 */ .button { padding: 10px 20px; border: none; color: white; font-size: 16px; /* 动画:名称 3s 慢→快→慢 1s延迟 无限交替 */ animation: colorChange 3s ease 1s infinite alternate; } ``` **效果**:按钮背景色从红→黄→蓝渐变,同时大小从1→1.2→1缩放,动画结束后反向播放(`alternate`)。 ## 注意事项 1. **浏览器兼容性**: - 现代浏览器(Chrome 43+、Firefox 16+、Edge 12+)原生支持,无需前缀 - 旧版浏览器(如 IE10-)需添加 `-ms-` 前缀,且不支持部分属性(如 `animation-fill-mode`) 2. **性能优化**: - 优先使用 `transform` 和 `opacity` 属性动画(浏览器可硬件加速) - 避免动画大量元素或复杂计算(如 `box-shadow` 动画易导致卡顿) - 长动画建议添加 `will-change: transform` 提示浏览器优化 3. **与过渡的区别**: - **动画**:适合多状态变化、自动触发、循环播放(如加载动画、轮播图) - **过渡**:适合简单状态切换、事件触发(如 hover 效果、弹窗显示) ## 自测题 1. 如何让动画播放3次后停止在结束状态? ```css /* 答案 */ animation: myAnim 2s forwards 3; /* forwards 使动画结束后保持最后一帧状态 */ ``` 2. 写出一个元素从左侧滑入(`translateX(-100%)`→`translateX(0)`)的关键帧定义。 ```css /* 答案 */ @keyframes slideIn { from { transform: translateX(-100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } } ``` 3. `animation: move 2s ease-in-out 1s infinite alternate;` 的含义是? - 动画名称 `move`,持续2秒,慢进慢出,延迟1秒开始,无限循环,交替方向播放。
1 分钟阅读 174 字
×

微信扫一扫分享

微信分享二维码

打开微信扫一扫,分享文章给朋友

如果文章对您有帮助,欢迎支持作者继续创作

×

扫码打赏

imadmin
imadmin
热爱技术,热爱生活,记录每一天的成长与收获。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注