因项目需要,需要在元素上实现动画效果,并且需要有动画间隔。坑爹的是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. 批量执行app自动化测试思路设计图

  2. LB服务:硬件如何被软件取代(上)

    [摘要] 大业务上云,难免要用到LB.可是,您是否了解LB的来龙去脉?本文浅谈一下LB,从硬件走到软件,他们经历了什么转变. 大业务上云,难免要用到LB.可是,您是否了解LB的来龙去脉?本文浅谈一下L ...

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

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

  4. 聊聊依赖注入注解@Resource和@Autowired

    1. 前言 @Resource和@Autowired注解都可以在Spring Framework应用中进行声明式的依赖注入.而且面试中经常涉及到这两个注解的知识点.今天我们来总结一下它们. 2. @R ...

  5. (一)linux三剑客之grep

    给自己提出以下6个问题,看自己是否真正掌握了grep [1] grep 是什么? [2] grep 有什么作用 ? [4] grep 常用于何处 ? [5] grep 的基本用法 ? [6] grep ...

  6. android日常开发总结的技术经验60条

    全部Activity可继承自BaseActivity,便于统一风格与处理公共事件,构建对话框统一构建器的建立,万一需要整体变动,一处修改到处有效. 数据库表段字段常量和SQL逻辑分离,更清晰,建议使用 ...

  7. 由软件构造引申的OOP与POP的心得体会

    在大一初学C语言的时候,所解决的问题都是一些轻量级的简单问题,当时写过一个教学管理系统.这个教学管理系统的功能很简单,思想就是“流水线”:按部就班的实现所有流程.要完成整个教学管理系统,实际上就是完成 ...

  8. [computer graphics]简单光照模型(Phong和Blinn-Phong)和明暗处理

    简单光照模型(Phong和Blinn-Phong)和明暗处理 支持点光源和平行光,是一种简单光照模型,它将光照分解成了三个部分,分别为 漫反射 镜面反射 环境光 如图所示,是一个简单的几何模型. \( ...

  9. router路由配置

    vue项目中router路由配置   介绍 路由:控制组件之间的跳转,不会实现请求.不用页面刷新,直接跳转-切换组件>>> 安装 本地环境安装路由插件vue-router:    c ...

  10. 学习nginx从入门到实践(五) 场景实践之静态资源web服务

    一.静态资源web服务 1.1 静态资源 静态资源定义:非服务器动态生成的文件. 1.2 静态资源服务场景-CDN 1.3 文件读取配置 1.3.1 sendfile 配置语法: syntax: se ...