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

css之一个元素可以同时应用多个动画效果

  • 一个元素可以同时运行多个CSS动画

  • 通过animation属性使用逗号分隔多个动画值来实现

  • 每个动画可以有自己的持续时间、延迟、重复次数和时间函数

  • 可以复制自行查看效果,希望可以帮到你

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>CSS多重动画演示</title><style>body {font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;display: flex;flex-direction: column;align-items: center;justify-content: center;min-height: 100vh;background: linear-gradient(135deg, #6a11cb 0%, #2575fc 100%);color: white;margin: 0;padding: 20px;}h1 {text-align: center;margin-bottom: 10px;text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3);}.subtitle {text-align: center;margin-bottom: 40px;font-size: 1.2em;opacity: 0.9;}.container {display: flex;flex-wrap: wrap;justify-content: center;gap: 30px;margin-bottom: 40px;}.example {background: rgba(255, 255, 255, 0.1);border-radius: 15px;padding: 20px;width: 300px;text-align: center;box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);backdrop-filter: blur(5px);}.example h2 {margin-top: 0;color: #ffdd59;}.animated-element {width: 100px;height: 100px;margin: 20px auto;border-radius: 10px;display: flex;align-items: center;justify-content: center;color: #333;font-weight: bold;}/* 第一个例子:颜色变化 + 旋转 */.example-1 .animated-element {background-color: #ff6b6b;animation: color-change 4s infinite alternate,rotate 3s infinite linear;}/* 第二个例子:脉动 + 移动 */.example-2 .animated-element {background-color: #48dbfb;animation: pulse 2s infinite ease-in-out,move 5s infinite alternate;}/* 第三个例子:形状变化 + 阴影动画 */.example-3 .animated-element {background-color: #1dd1a1;animation: shape-shift 6s infinite alternate,shadow-pulse 3s infinite ease-in-out;}/* 关键帧动画定义 */@keyframes color-change {0% { background-color: #ff6b6b; }25% { background-color: #ff9ff3; }50% { background-color: #feca57; }75% { background-color: #54a0ff; }100% { background-color: #00d2d3; }}@keyframes rotate {from { transform: rotate(0deg); }to { transform: rotate(360deg); }}@keyframes pulse {0% { transform: scale(1); }50% { transform: scale(1.2); }100% { transform: scale(1); }}@keyframes move {0% { transform: translateX(-50px); }100% { transform: translateX(50px); }}@keyframes shape-shift {0% { border-radius: 10px; }25% { border-radius: 50%; }50% { border-radius: 10px; transform: skewX(0deg); }75% { border-radius: 50%; transform: skewX(20deg); }100% { border-radius: 10px; transform: skewX(0deg); }}@keyframes shadow-pulse {0% { box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.4); }70% { box-shadow: 0 0 0 20px rgba(0, 0, 0, 0); }100% { box-shadow: 0 0 0 0 rgba(0, 0, 0, 0); }}.code-block {background: rgba(0, 0, 0, 0.2);border-radius: 8px;padding: 15px;font-family: 'Courier New', monospace;text-align: left;margin: 15px 0;overflow-x: auto;}.btn {background: #ff9f43;border: none;padding: 12px 25px;border-radius: 50px;color: white;font-weight: bold;cursor: pointer;transition: all 0.3s;box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);}.btn:hover {background: #ffaf60;transform: translateY(-2px);box-shadow: 0 6px 15px rgba(0, 0, 0, 0.3);}.btn:active {transform: translateY(0);}.explanation {max-width: 800px;background: rgba(255, 255, 255, 0.1);border-radius: 15px;padding: 25px;margin-top: 20px;box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);}.explanation h2 {color: #ffdd59;margin-top: 0;}</style>
    </head>
    <body><h1>CSS多重动画演示</h1><p class="subtitle">一个元素可以同时应用多个动画效果</p><div class="container"><div class="example example-1"><h2>颜色变化 + 旋转</h2><div class="animated-element">动画1</div><div class="code-block">animation: <br>&nbsp;&nbsp;color-change 4s infinite alternate,<br>&nbsp;&nbsp;rotate 3s infinite linear;</div></div><div class="example example-2"><h2>脉动 + 移动</h2><div class="animated-element">动画2</div><div class="code-block">animation: <br>&nbsp;&nbsp;pulse 2s infinite ease-in-out,<br>&nbsp;&nbsp;move 5s infinite alternate;</div></div><div class="example example-3"><h2>形状变化 + 阴影动画</h2><div class="animated-element">动画3</div><div class="code-block">animation: <br>&nbsp;&nbsp;shape-shift 6s infinite alternate,<br>&nbsp;&nbsp;shadow-pulse 3s infinite ease-in-out;</div></div></div><button class="btn" onclick="restartAnimations()">重新播放动画</button><div class="explanation"><h2>实现说明</h2><p>在CSS中,可以通过在<code>animation</code>属性中使用逗号分隔多个动画值来同时应用多个动画效果。</p><p>每个动画可以独立设置其持续时间、延迟、重复次数、时间函数和方向等属性。</p><p>语法示例:</p><div class="code-block">.element {<br>&nbsp;&nbsp;animation: <br>&nbsp;&nbsp;&nbsp;&nbsp;animation1 3s ease-in-out infinite alternate,<br>&nbsp;&nbsp;&nbsp;&nbsp;animation2 5s linear infinite;<br>}</div><p>上面的代码同时应用了两个动画:animation1和animation2,它们具有不同的持续时间和时间函数。</p></div><script>function restartAnimations() {const elements = document.querySelectorAll('.animated-element');elements.forEach(element => {// 先移除动画element.style.animation = 'none';// 触发重绘void element.offsetWidth;// 重新应用动画const example = element.closest('.example');if (example.classList.contains('example-1')) {element.style.animation = 'color-change 4s infinite alternate, rotate 3s infinite linear';} else if (example.classList.contains('example-2')) {element.style.animation = 'pulse 2s infinite ease-in-out, move 5s infinite alternate';} else if (example.classList.contains('example-3')) {element.style.animation = 'shape-shift 6s infinite alternate, shadow-pulse 3s infinite ease-in-out';}});}</script>
    </body>
    </html>


文章转载自:

http://ifXFZObo.ddxjr.cn
http://ddKZGIcf.ddxjr.cn
http://9PBJSjEr.ddxjr.cn
http://NJcCYmLZ.ddxjr.cn
http://v07uc4Z3.ddxjr.cn
http://jEqJK6OW.ddxjr.cn
http://mCGi0TES.ddxjr.cn
http://wuMi1LPy.ddxjr.cn
http://ZKhoeh4Q.ddxjr.cn
http://3pnSGf9a.ddxjr.cn
http://shfbeE7O.ddxjr.cn
http://0o6HVh94.ddxjr.cn
http://1q3vxThy.ddxjr.cn
http://xnY8RYXL.ddxjr.cn
http://TwlDttfh.ddxjr.cn
http://asZ7Poed.ddxjr.cn
http://uQ0J3mZD.ddxjr.cn
http://nj7fVq5o.ddxjr.cn
http://ibMy9xxy.ddxjr.cn
http://mfjeMFlE.ddxjr.cn
http://Y3kiOSrz.ddxjr.cn
http://n2YAt8uc.ddxjr.cn
http://yAA4v6oU.ddxjr.cn
http://V4H9AgFZ.ddxjr.cn
http://LTL0h5Lr.ddxjr.cn
http://3pcC472S.ddxjr.cn
http://172jaYQZ.ddxjr.cn
http://ifNJb00N.ddxjr.cn
http://iRISxAwf.ddxjr.cn
http://bTErSWdA.ddxjr.cn
http://www.dtcms.com/a/378928.html

相关文章:

  • STM32之水质浑浊度传感器模块
  • 【Qt】【C++】虚析构函数及 virtual ~Base() = default
  • 马斯克访谈深度解读:机器人、AI芯片与人类文明的未来
  • 深入理解 CMake 脚本片段:文件查找、字符串替换与条件处理
  • Google Ads广告验证全攻略:如何借助动态住宅IP精准投放?
  • Linux防火墙配置指南:限制特定IP访问并允许其他所有流量
  • 使用动态IP 需要注意什么
  • 2025年- H128-Lc205. 同构字符串(哈希表)--Java版
  • 今天我们开始学习iptables防火墙
  • Android逆向学习(十一) IDA动态调试Android so文件
  • 第二篇:排序算法的简单认识【数据结构入门】
  • 嵌入式铁头山羊stm32:一文总结
  • HDFS(Hadoop 分布式文件系统)知识点梳理
  • AI幻觉的罪魁祸首
  • JVM 基础
  • 计算智能的概念和其算法的主要算法类型
  • leetcode25(有效的字母异位词)
  • [Windows] FileOptimizer v17.1.0_一款文件批量压缩工具
  • 淘宝/天猫按图搜索(拍立淘)item_search_img API接口实战指南
  • Java优选算法——二分查找
  • leetcode380:RandomizedSet - O(1)时间插入删除和获取随机元素(数组+哈希表的巧妙结合)
  • 经典蓝牙的 BR(Basic Rate(基础速率))
  • 牛客周赛 Round 108题解
  • Rocky9.0去堆叠双发arp(支持“ARP 广播双发”)
  • 「京墨」1.15.0 诗词、成语、对联、句子、诗歌…
  • AWS TechFest 2025: 风险模型的转变、流程设计的转型、生成式 AI 从实验走向实施的三大关键要素、评估生成式 AI 用例的适配度
  • 【Blender】二次元人物制作【二】:五官的制作
  • MinIO集群部署详细步骤(高性能的分布式对象存储系统)
  • 带地图的 RAG:多模态 + 地理空间 在 Elasticsearch 中
  • 使用 Spring AI Alibaba Graph 实现工作流