首页 >web前端 >html教程 >css3 同时加载两个动画_html/css_WEB-ITnose

css3 同时加载两个动画_html/css_WEB-ITnose

WBOY
WBOY原创
2016-06-24 11:24:231602浏览

最近在做H5,遇到这样的需求(如题)

先上一部分代码:

.cur .p1d1d4{
  width: 3rem;
  margin: 2rem 5.3rem 0 0;
  -webkit-animation: p1d1d4 1s ease-out;
  animation: p1d1d4 1s ease-out;
}


@keyframes p1d1d4 {
  0% {
    margin: 2rem 10rem 0 0;
  }
  100% {
    margin: 2rem 5.3rem 0 0;
  }
}

@-webkit-keyframes p1d1d4{
  0% {
    margin: 2rem 10rem 0 0;
  }
  100% {
    margin: 2rem 5.3rem 0 0;
  }

  

正常情况下基本思路是: 

 监听webkitAnimationEnd动画结束以后再add另一个class

1 document.querySelector('.p1d1d4').addEventListener("webkitAnimationEnd", function(e){
2      this.classList.add('p1d1d4Scale')
3 })  

  这样的话两个 动画连接在一起(自己脑补效果),但是这样做有个问题是如果这个方案是单页面形式的,回到之前页面过后会发现这个页面始终保留在p1d1d4Scale的动画结束效果,如果想再次执行之前的效果的话,可能要把之前的class效果去掉然后再加上

  但是我想在一个class中实现这个效果怎么实现呢

pasting

  在这里我想到了transition

  简单介绍一下这个属性
  这个方法有4个属性

  transition-property     指定缓动的属性

  transition-duration     缓动的执行时间

  transition-timing-function  缓动类型

  transition-delay         在指定时间之后执行(延期执行) 

说道这里大家应该就懂了

.cur .p1d1d4{
  width: 3rem;
  margin: 2rem 5.3rem 0 0;
  -webkit-animation: p1d1d4 1s ease-out;
  animation: p1d1d4 1s ease-out;
  -webkit-transform: scale(1.3);
  -moz-transform: scale(1.3);
  -ms-transform: scale(1.3);
  -o-transform: scale(1.3);
  transform: scale(1.3);
  transition: all 1s ease-out 2s;
  -webkit-transition: all 1s ease-out 2s;
  -moz-transition: all 1s ease-out 2s;
  -o-transition: all 1s ease-out 2s;
  -ms-transition: all 1s ease-out 2s;
}

  动画结束之后2秒执行,分享到此结束 

从今天起我打算随心一些写博客,可能会基本的分享思路和方案或者技巧,言外之意就是可能会很简短,我上次的随笔 react demo是真东西,可以直接上手项目,全局ES6写法 webpack打包加载  热加载  react-router 总之汇集了一个小的demo,欢迎关注

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn