【日常记录】【CSS】利用动画延迟实现复杂动画

news2025/9/21 10:16:36

文章目录

    • 1、介绍
    • 2、原理
    • 3、代码
    • 4、参考链接

1、介绍

在这里插入图片描述

对于这个效果而言,最先想到的就是 监听滑块的input事件来做一些操作 ,但是会发现,对于某一个节点的时候,这个样式操作起来比较麻烦

在这里插入图片描述

只看这个代码的话,发现他用的是动画,那 动画与下面的滑块怎么联动?

2、原理

在css中,可以自定义动画

CSS animation 属性是 animation-name,animation-duration, animation-timing-function,animation-delay,animation-iteration-count,animation-direction,animation-fill-mode 和 animation-play-state 属性的一个简写属性形式。

animation-delay 是控制动画延迟的
正值表示动画应在指定的时间量过去后开始。默认值为 0s,表示动画应立即开始。
负值会导致动画立即开始,但是从动画循环的某个时间点开始。例如,如果你将 -1s 作为动画延迟时间,则动画将立即开始,但是将在动画序列的第 1 秒开始。如果你为动画延迟指定负值,但起始值是隐含的,则起始值取自应用动画到元素的时刻。

在这里插入图片描述

其实,核心就在这里,这样的话就可以 通过动画的延迟属性 与 滑块的input 事件联动,实时设置动画的延迟属性的值

animation-play-state 是控制动画运行还是暂停。

在这里插入图片描述

那其实就是说,我先可以先做好这个自定义动画,并且动画设置暂停,通过脚本来实时控制当前这个动画,延迟 多少秒,在那个时间点,开始执行

/* 举个例子,  @keyframes 后面跟的是 动画名称, */
    @keyframes faceColor {
      0% {
        background-color: tomato;
      }
      100% {
        background-color: #3cb371;
      }
    }

3、代码

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    input[type=range]::-webkit-slider-thumb {
      -webkit-appearance: none;
    }


    .container {
      width: 100%;
      height: 100vh;
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
    }



    .face {
      --delay: 0s;
      position: relative;
      width: 150px;
      height: 150px;
      border-radius: 50%;
      background-color: red;
      animation: faceColor 1s var(--delay) linear forwards paused;
    }

    .eye,
    .eye2 {
      position: absolute;
      top: 50px;
      left: 20px;
      width: 30px;
      height: 30px;
      background-color: #fff;
      border-radius: 50%;
      clip-path: polygon(0 90%, 100% 0, 100% 100%, 0% 100%);
      animation: eye 1s var(--delay) linear forwards paused;
    }

    .eye2 {
      top: 50px;
      right: 20px;
      left: unset;
      clip-path: polygon(0 0, 100% 90%, 100% 100%, 0% 100%);
    }

    .range {
      margin-top: 10px;
    }


    @keyframes faceColor {
      0% {
        background-color: tomato;
      }

      25% {
        background-color: orange;
      }

      50% {
        background-color: #1e90ff;
      }

      75% {
        background-color: orchid;
      }

      100% {
        background-color: #3cb371;
      }
    }

    @keyframes eye {
      0% {
        clip-path: polygon(0 90%, 100% 0, 100% 100%, 0% 100%);
      }

      25% {
        clip-path: polygon(0 70%, 100% 0, 100% 100%, 0% 100%);
      }

      50% {
        clip-path: polygon(0 50%, 100% 0, 100% 100%, 0% 100%);
      }

      75% {
        clip-path: polygon(0 20%, 100% 0, 100% 100%, 0% 100%);
      }

      100% {
        clip-path: polygon(0 0%, 100% 0, 100% 100%, 0% 100%);
      }
    }
  </style>
</head>

<body>
  <div class="container">
    <div class="face">
      <div class="eye"></div>
      <div class="eye2"></div>
    </div>
    <input type="range" name="" id="" max="1" min="0" step="0.01" class="range" value="0">
  </div>
  <script>
    let rangeEl = document.querySelector('.range');
    let faceEl = document.querySelector('.face');
    faceEl.style.backgroundColor = 'red';
    rangeEl.addEventListener('input', function (e) {
      console.log(e);
      let value = this.value;
      faceEl.style.setProperty('--delay', '-' + value + 's');
    })
  </script>
</body>

</html>

4、参考链接

  • animation MDN
  • css-clip-path 在线裁剪工具

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1592650.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是T型槽铸铁平板中内应力——河北北重厂家

T型槽铸铁平板中的内应力指的是平板内部受到的内部力&#xff0c;包括拉应力和剪应力。在T型槽铸铁平板使用过程中&#xff0c;由于自身重量、外力加载等原因&#xff0c;会产生内部应力。这些内应力是平板内部各部分之间的相互作用力&#xff0c;使得平板各部分受到不同的拉伸…

部署HDFS集群(完全分布式模式、hadoop用户控制集群、hadoop-3.3.4+安装包)

目录 前置 一、上传&解压 &#xff08;一 &#xff09;上传 &#xff08;二&#xff09;解压 二、修改配置文件 &#xff08;一&#xff09;配置workers文件 &#xff08;二&#xff09;配置hadoop-env.sh文件 &#xff08;三&#xff09;配置core-site.xml文件 &…

【深度学习】图像风格混合——StyleGAN2原理解析

1、前言 上一篇文章&#xff0c;我们详细讲解了StyleGAN的原理。这篇文章&#xff0c;我们就来讲解一下StyleGAN2&#xff0c;也就是StyleGAN的改进版。 原论文&#xff1a;Analyzing and Improving the Image Quality of StyleGAN 参考代码&#xff1a;①Pytorch版本&#…

腐蚀Rust 服务端搭建架设个人社区服务器Windows教程

腐蚀Rust 服务端搭建架设个人社区服务器Windows教程 大家好我是艾西&#xff0c;一个做服务器租用的网络架构师也是游戏热爱者。最近在steam发现rust腐蚀自建的服务器以及玩家还是非常多的&#xff0c;那么作为服务器供应商对这商机肯定是不会放过的哈哈哈&#xff01; 艾西这…

wangeditor与deaftjs的停止维护,2024编辑器该如何做技术选型(一)

wangeditor暂停维护的声明&#xff1a; wangeditor是国内开发者开发的编辑器&#xff0c;用户也挺多&#xff0c;但是由于作者时间关系&#xff0c;暂停维护。 deaft的弃坑的声明&#xff1a; draft是Facebook开源的&#xff0c;但是也弃坑了&#xff0c;说明设计的时候存在很大…

第二证券策略:股指预计维持震荡格局 关注汽车、工程机械等板块

第二证券指出&#xff0c;指数自今年2月份阶段低点反弹以来&#xff0c;3月份持续高位整理。进入4月份之后面对年报和一季报的双重财报发表期&#xff0c;预计指数短期保持高位整理概率比较大。前期缺乏成绩支撑的概念股或有回落的危险&#xff0c;主张重视成绩稳定、估值低、分…

Redis队列与Stream

Redis队列与Stream、Redis 6多线程详解 Redis队列与StreamStream总述常用操作命令生产端消费端单消费者消费组消息消费 Redis队列几种实现的总结基于List的 LPUSHBRPOP 的实现基于Sorted-Set的实现PUB/SUB&#xff0c;订阅/发布模式基于Stream类型的实现与Java的集成消息队列问…

Tuxera Ntfs for mac 2023中文解锁版安装、密钥下载与激活教程 Tuxera激活码 tuxera破解

Tuxera Ntfs for mac2023是Mac中专用于读写外置存储的工具&#xff0c;具有强大的磁盘管理和修复功能&#xff0c;它在Mac上完全读写NTFS格式硬盘&#xff0c;快捷的访问、编辑、存储和传输文件。能够在 Mac 上读写 Windows NTFS 文件系统。Tuxera NTFS 实现在Mac OS X系统读写…

根据ELK官网指引部署ELK- ECK-Elastic-​ Kibana​-Learn-ELK-(一)

**Attention: 1、You need open the ELK official website and step by step to deploy . 2、If you copy my command ,you must check them if it not match your environment . 一、official website Elastic documentation | Elastic Check there. 二、 ECK简介…

napi系列学习高阶篇——通过IDE集成C/C++三方库并开发napi接口

简介 应用在调用系统固件集成的C/C三方库时&#xff0c;可能会由于系统固件集成端与IDE的NDK中libc版本不一致导致调用失败&#xff0c;而且系统固件集成的C/C三方库对于应用的调式也很不友好&#xff0c;需要多方编译调试&#xff0c;很不方便。因此本文将通过在IDE上适配ope…

文件IO/标准IO

1.标准I/O 标准&#xff1a; 任何操作系统皆可使用&#xff1b;使用范围很广 系统调用和库函数 系统调用&#xff1a;操作系统给我们提供的接口 man 2 printf 可以调用内核中的接口 直接驱动显卡运行 printf实际是库函数中的函数&#xff0c;然后调用系…

目标检测笔记

目标检测笔记 one-stage和two-stage目标检测算法Two-Stage 目标检测算法One-Stage 目标检测算法既然Faster R-CNN使得候选区域生成和目标检测可以在同一个网络中端到端训练&#xff0c;为什么它还是属于Two-stage算法&#xff1f; 目标检测模型&#xff0c;训练中的正负样本是什…

分布式技术--------------ELK大规模日志实时收集分析系统

目录 一、ELK日志分析系统 1.1ELK介绍 1.2ELK各组件介绍 1.2.1ElasticSearch 1.2.2Kiabana 1.2.3Logstash 1.2.4可以添加的其它组件 1.2.4.1Filebeat filebeat 结合logstash 带来好处 1.2.4.2缓存/消息队列&#xff08;redis、kafka、RabbitMQ等&#xff09; 1.2.4.…

AI PC元年,华为的一张航海图、一艘渡轮和一张船票

今天&#xff0c;从学术研究者到产业投资者&#xff0c;无不认为大模型掀起了一场人工智能的完美风暴。 所谓“完美风暴”&#xff0c;指的是一项新技术的各个要素&#xff0c;以新的方式互相影响、彼此加强&#xff0c;组合在一起形成了摧枯拉朽般的力量。 而我们每个人&#…

Singleton单例设计模式详解

目录 模式定义应用场景实现方式1.懒汉模式&#xff1a;2.饿汉模式&#xff1a;3.静态内部类反射如何防止反射攻击破坏&#xff1f; 枚举类型序列化 部分源码中的应用定位Spring & JDKTomcat反序列化指定数据源 模式定义 保证一个类只有一个实例&#xff0c;并且提供一个全…

jmeter使用之生成html测试报告

测试的最终结果是需要给出一份报告&#xff0c;那么在用jmeter测试时怎么生成一份报告呢&#xff0c;以下针对jmeter如何生成html报告进行简单介绍 一、首先把测试脚本写好二、利用命令生成html报告 命令&#xff1a;jmeter -n -t 【Jmx脚本位置】-l 【结果文件result.jtl存放…

DBSCAN简介

1. 简介 常用聚类方法有&#xff1a; 1. 层次的方法(hierarchical method)&#xff1b; 2. 划分方法(partitioning method)&#xff1b; 3. 基于密度的方法(density-based method)&#xff1b; 4. 基于网格的方法(grid-based method)&#xff1b; 5. 基于模型的方法(model-base…

[MAUI]集成富文本编辑器Editor.js至.NET MAUI Blazor项目

文章目录 获取资源从源码构建从CDN获取获取扩展插件 创建项目创建控件创建Blazor组件初始化保存销毁编写渲染逻辑 实现只读/编辑功能切换模式获取只读模式状态响应切换事件 实现明/暗主题切换项目地址 Editor.js 是一个基于 Web 的所见即所得富文本编辑器&#xff0c;它由CodeX…

【opencv】示例-npr_demo.cpp 非真实感渲染:边缘保留平滑、细节增强、铅笔素描/彩色铅笔绘图和风格化处理...

Edge Preserve Smoothing- Using Normalized convolution Filter Edge Preserve Smoothing-Using Recursive Filter Detail Enhancement Pencil sketch/Color Pencil Drawing Stylization /* * npr_demo.cpp * * 作者: * Siddharth Kherada <siddharthkherada27[at]gmail[do…

最优算法100例之46-单链表逆置-头插法

专栏主页:计算机专业基础知识总结(适用于期末复习考研刷题求职面试)系列文章https://blog.csdn.net/seeker1994/category_12585732.html 题目描述 单链表逆置-头插法 题解报告 1)带头结点 带头结点的反转链表,头结点一直不动,后移head->next。不带头结点的反转,后移…