因项目需要,需要在元素上实现动画效果,并且需要有动画间隔。坑爹的是animation-delay只有在第一次动画开始的时候才起效。

在网上找了很多方法,最终的方法基本都是改动画规则,比如

@keyframes move{
/* 此处从75%开始 */
75%{ transform: translateX(0px);}
100%{ transform: translateX(100px);}
}

但是项目的特殊性在于元素都是组件类型的,意思就是给每个元素写单个的动画效果是不现实的。因为动画效果是通用的,不能因为某个元素就更改。

css的方法走不通,就只有走js了,我就想到了用定时器,核心思想就是根据动画时间和间隔时间对组件的style.animation属性进行更改

代码如下

function  getStyle (item) {
// item解释:这是个包含组件的style信息的对象,属性就是style的各个属性,里面还有一个id,id就是我要设置的组件id let nowStyle = item.style;
let nowId = item.id;
let nowStyleObj = {}
let nowAnimationStr = ‘‘
nowAnimationStr = nowStyle.code + ‘ ‘ + nowStyle.duration + ‘s ‘ + nowStyle.timingFunction + ‘ ‘ + nowStyle.iterationCount + ‘ ‘ + nowStyle.direction;// 拼出animation属性字符串
nowStyleObj = {
animation: nowAnimationStr
}
if (nowStyle.interval) {//先判断是否需要间隔
setTimeout(function () {
document.getElementById(nowId).parentElement.style.animation = ‘‘
setTimeout(function () {
document.getElementById(nowId).parentElement.style.animation = nowAnimationStr
}, nowStyle.interval * 1000)
}, nowStyle.duration * 1000)
setTimeout(function () {
setInterval(function () {
document.getElementById(nowId).parentElement.style.animation = ‘‘
setTimeout(function () {
document.getElementById(nowId).parentElement.style.animation = nowAnimationStr
}, nowStyle.interval * 1000)
}, (nowStyle.duration + nowStyle.interval) * 1000)
}, nowStyle.duration * 1000)
}
return nowStyleObj
}

代码如上,至于为什么定时器嵌套这么多,主要是为了第一次加载的时候展示正确的动画效果,如果对初次加载不在意的,可以直接使用setInterval那段代码就行。

css3动画添加间隔的更多相关文章

  1. JavaScript - 基于CSS3动画的实现

    在痛苦的IE8时代,所有的动画都只能基于自己计算相关动画属性,开定时器setTimeout/setInterval轮询动画任务. 而肩负重任的HTML5,早已注意到了日益增强的动画,随着HTML5的降 ...

  2. CSS3动画属性和flex弹性布局各个属性

    [CSS3动画的使用] 1.声明一个关键帧(动画): @keynames name{ from{} to{} } 每个阶段的写法: ①可以直接使用from-to的写法 ②可以设置0%-100%的写法, ...

  3. CSS3动画详解(结合实例)

    一.使用CSS3动画代替JS动画 JS动画频繁操作DOM导致效率非常低 在频繁的操作DOM和CSS时,浏览器会不停的执行重排(reflow)和重绘(repaint) 可以避免占用JS主线程 这边就不细 ...

  4. CSS3动画的使用以及优化

    CSS3 动画 目录 1. 定义动画2. animation 属性3. animation 属性的兼容4. animation与transition 属性的取别5. animate.css 动画库6. ...

  5. 用CSS3动画,让页面动起来

    以前就听说过有个库,叫animate.css,但是自己并没有在实际项目中使用过,这次正好要做个招聘页面,得以利用一下这个库,在经常会卡顿的UC浏览器中也能流畅执行. 扫描下面的二维码,可以看到在线的d ...

  6. CSS3动画几个平时没注意的属性

    一.timing-function: steps() 一开始在使用CSS3的时候并没有太注意这个timing-function,只是注意到自定义贝塞尔曲线. 1)一个项目中的实例 先来看看左边加了st ...

  7. 用CSS3动画特效实现弹窗效果

    提示:如果大家觉得本篇实现的弹窗效果有用,可持续关注.接下会添加更多效果并且封装成插件,这样使用就方便了.效果查看: https://heavis.github.io/hidialog/index.h ...

  8. CSS3动画事件

    CSS3 的动画效果强大,在移动端使用广泛,动画执行开始和结束都可以使用JS来监听其事件. animationstart animationend 以下是一个示例 <!DOCTYPE html& ...

  9. css3动画简介以及动画库animate.css的使用

    在这个年代,你要是不懂一点点css3的知识,你都不好意思说你是个美工.美你妹啊,请叫我前端工程师好不好.呃..好吧,攻城尸...呵呵,作为一个攻城尸,没有点高端大气上档次的东西怎么能行呢,那么css3 ...

随机推荐

  1. Java实现 蓝桥杯 历届试题 带分数

    问题描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714. 还可以表示为:100 = 82 + 3546 / 197. 注意特征:带分数中,数字1~9分别出现且只出现一次( ...

  2. uniapp每隔几秒执行一下网络请求(h5端亲测可以,其他端未测试)

    methods: { //执行网络请求 run() { uni.request({ method: 'GET',//请求方式 url: ‘’//请求地址 }).then(res=>{ conso ...

  3. 自动把网页px单位转换成rem

    自动把网页px单位转换成rem 首先在你的项目开发环境中安装2个插件 然后在vue.config.js文件引入并重新启动服务器 这样就配置成功了,一起看看效果

  4. kka-typed(5) - cluster:集群节点状态监视

    akka-cluster对每个节点的每种状态变化都会在系统消息队列里发布相关的事件.通过订阅有关节点状态变化的消息就可以获取每个节点的状态.这部分已经在之前关于akka-cluster的讨论里介绍过了 ...

  5. 使用FFT进行频谱分析

    import numpy as np import matplotlib.pyplot as plt from scipy.fftpack import fft fs=100 #采样频率 N=128 ...

  6. 数据湖&数据仓库,别再傻傻分不清了

    摘要:什么是数据湖?它有什么作用?今天将由华为云技术专家从理论出发,将问题抽丝剥茧,从技术维度娓娓道来. 什么是数据湖 如果需要给数据湖下一个定义,可以定义为这样:数据湖是一个存储企业的各种各样原始数 ...

  7. IP地址和端口

    IP地址是网络中计算机的唯一标识.没有IP地址,计算机无法接入互联网. IPv4地址32bit,用点分十进制表示,如202.38.64.3 IPv6地址128bit,用冒号分割十六进制表示,如2001 ...

  8. HTML中doctype的作用及几种类型详解

    一.DOCTYPE标签的定义与作用 <!DOCTYPE>是一个用于声明当前HTMl版本,用来告知web浏览器该文档使用是哪种 HTML 或者 XHTML 规范来解析页面,以便浏览器更加准确 ...

  9. beego register db `default`, sql: unknown driver "mysql" (forgotten import?)

    首先先去你的目录下找找这个文件里有没有东西,或者有没有这个文件 如果没有 执行下面两个命令: 下载:go get github.com/Go-SQL-Driver/MySQL 安装:go instal ...

  10. 9.实战交付一套dubbo微服务到k8s集群(2)之Jenkins部署

    1.下载Jenkins镜像打包上传harbor上 [root@hdss7- ~]# docker pull jenkins/jenkins:2.190. [root@hdss7- ~]# docker ...