当前位置: 首页 > article >正文

CSS Animation 详解

CSS Animation 允许元素平滑地从一个样式状态过渡到另一个样式状态。通过设置关键帧(keyframes),可以控制动画序列中的中间步骤。

一、核心概念

1.关键帧(Keyframes)

  1. 使用 @keyframes 规则定义动画序列
  2. 通过百分比或 from/to 指定动画阶段
  3. 每个阶段可以设置元素的样式属性

2.动画属性

  1. animation-name: 指定关键帧名称
  2. animation-duration: 动画持续时间(秒或毫秒)
  3. animation-delay: 动画延迟开始时间
  4. animation-iteration-count: 循环次数(数字或 infinite
  5. animation-direction: 动画方向(normalreversealternate
  6. animation-timing-function: 速度曲线(easelinearease-in-out
  7. animation-fill-mode: 动画前后的状态(forwardsbackwardsboth
  8. animation-play-state: 动画播放状态(runningpaused

3.示例代码

下面是一个包含多种动画效果的完整示例:

html

预览

<!DOCTYPE html>
<html>
<head>
<style>
/* 基础样式 */
.container {width: 500px;height: 300px;border: 1px solid #ccc;margin: 20px auto;position: relative;
}/* 1. 简单移动动画 */
.box {width: 50px;height: 50px;background: #3498db;position: absolute;top: 20px;/* 应用动画 */animation: move 3s infinite;
}@keyframes move {0% { left: 20px; }50% { left: 430px; }100% { left: 20px; }
}/* 2. 旋转+透明度变化 */
.circle {width: 40px;height: 40px;background: #e74c3c;border-radius: 50%;position: absolute;top: 100px;left: 20px;animation: rotateAndFade 4s infinite linear;
}@keyframes rotateAndFade {0% { transform: rotate(0deg); opacity: 1; }50% { opacity: 0.3; }100% { transform: rotate(360deg); opacity: 1; }
}/* 3. 弹跳动画 */
.ball {width: 30px;height: 30px;background: #2ecc71;border-radius: 50%;position: absolute;top: 180px;left: 20px;animation: bounce 1s infinite alternate ease-in;
}@keyframes bounce {to {top: 220px;height: 25px;}
}/* 4. 悬停触发动画 */
.button {position: absolute;top: 240px;left: 20px;padding: 10px 20px;background: #9b59b6;color: white;border-radius: 5px;text-align: center;cursor: pointer;transition: all 0.3s;
}.button:hover {animation: pulse 1s infinite;
}@keyframes pulse {0% { transform: scale(1); }50% { transform: scale(1.05); }100% { transform: scale(1); }
}/* 5. 复杂动画序列 */
.combo {width: 40px;height: 40px;background: #f39c12;position: absolute;top: 100px;left: 440px;animation: combo 6s infinite;
}@keyframes combo {0% { transform: translate(0, 0) rotate(0deg); }25% { transform: translate(-200px, 0) rotate(90deg); }50% { transform: translate(-200px, 100px) rotate(180deg); }75% { transform: translate(0, 100px) rotate(270deg); }100% { transform: translate(0, 0) rotate(360deg); }
}</style>
</head>
<body><div class="container"><div class="box"></div><div class="circle"></div><div class="ball"></div><div class="button">Hover Me</div><div class="combo"></div>
</div></body>
</html>

二、高级技巧

1.多动画组合

css

.element {animation: fadeIn 1s,slideUp 0.8s ease-out,pulse 3s 2s infinite;
}
  1. 动画事件监听(JavaScript)

    javascript

    const element = document.querySelector('.box');element.addEventListener('animationstart', () => {console.log('动画开始');
    });element.addEventListener('animationend', () => {console.log('动画结束');
    });element.addEventListener('animationiteration', () => {console.log('动画循环一次');
    });
    
  2. 使用 cubic-bezier 自定义速度曲线

    css

    animation-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1);
    

三、浏览器兼容性

大多数现代浏览器都支持 CSS Animation,但建议添加前缀以确保兼容性:

css

.element {-webkit-animation: fadeIn 1s; /* Safari 4+ */-moz-animation: fadeIn 1s; /* Firefox 5+ */-o-animation: fadeIn 1s; /* Opera 12+ */animation: fadeIn 1s; /* Chrome, IE 10+ */
}

CSS Animation 为网页添加了丰富的交互体验,合理使用可以增强用户体验而不会造成干扰。

http://www.lryc.cn/news/2395332.html

相关文章:

  • LabVIEW 中内存释放相关问题
  • 【HarmonyOS 5】鸿蒙中的UIAbility详解(三)
  • 基于内存高效算法的 LLM Token 优化:一个有效降低 API 成本的技术方案
  • vue-11(命名路由和命名视图)
  • (附代码)自定义 LangChain 文档分割器,深入探索 LangChain 文档分割策略与应用
  • Python打卡训练营Day42
  • 基于微信小程序的scratch学习系统
  • MATLAB实战:机器学习分类回归示例
  • 动态库导出符号与extern “C“
  • 小知识:STM32 printf 重定向(串口输出)--让数据 “开口说话” 的关键技巧
  • `docker commit` 和 `docker save`区别
  • 【C++ 多态】—— 礼器九鼎,釉下乾坤,多态中的 “风水寻龙诀“
  • SCSAI平台面向对象建模技术的设计与实现
  • pikachu通关教程-CSRF
  • 智能体觉醒:AI开始自己“动手”了-自主进化开启任务革命时代
  • Python爬虫实战:研究Aiohttp库相关技术
  • 【C++指南】C++ list容器完全解读(二):list模拟实现,底层架构揭秘
  • [神经网络]使用olivettiface数据集进行训练并优化,观察对比loss结果
  • 小明的Java面试奇遇之智能家装平台架构设计与JVM调优实战
  • n8n:技术团队的智能工作流自动化助手
  • Flink 核心机制与源码剖析系列
  • 华院计算出席信创论坛,分享AI教育创新实践并与燧原科技共同推出教育一体机
  • 华为OD机试真题——会议接待 /代表团坐车(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
  • LabVIEW Val (Sgnl) 属性
  • STM32G4 电机外设篇(三) TIM1 发波 和 ADC COMP DAC级联
  • DAY 35 超大力王爱学Python
  • 【数据结构】图的存储(十字链表)
  • 005 flutter基础,初始文件讲解(4)
  • Redis最佳实践——秒杀系统设计详解
  • STM32软件spi和硬件spi