美文网首页H5技术栈
CSS3 连续执行两个动画

CSS3 连续执行两个动画

作者: Amfishers | 来源:发表于2016-04-20 16:04 被阅读5528次

    在w3school上面查到一下,CSS3中的动画由animation和@keyframes 结合实现出来的。以往项目已来,一直做的是单个动画,现在讲解一下两个动画效果如何组合在一起

    首先了解一下animation的所有属性 W3school是这样定义的:

    [animation-name]               规定需要绑定到选择器的 keyframe 名称。。
    
    [animation-duration]           规定完成动画所花费的时间,以秒或毫秒计。
    
    [animation-timing-function]    规定动画的速度曲线。
    
    [animation-delay]              规定在动画开始之前的延迟。
    
    [animation-iteration-count]    规定动画应该播放的次数。
    
    [animation-direction]          规定是否应该轮流反向播放动画。
    
    

    然后我们用@keyframes 规则来创建两个我们要执行的动画

    例如:
    @keyframes Effect1{
        0%{ transform:translateY(-200px); opacity:0;}  
        100%{ transform:translateY(0px); opacity:1; }
    }
    @keyframes Effect2{
        0%{ margin-top:20px; }
        100%{ margin-top:0px; }
    }
    
    0%表示开始时候的形式,0%表示结束时候的形式。
    

    接下来我们把写好的两个效果捆绑在“div”元素上 , 如下:

    .div{
        animation-name:Effect1, Effect2;
        animation-duration:3s, 2s;
        animation-timing-function:linear, linear;
        animation-delay:0, 2s;
        animation-iteration-count:1, infinite;
        animation-fill-mode:forwards, forwards;
        animation-direction:normal, alternate;
    }
    

    这样效果就完成了。

    【PS】这里并没有写兼容,说一下浏览器兼容。

    -webkit代表谷歌内核识别码
    -o代表欧朋内核识别码
    -moz代表火狐内核识别码
    -ms代表ie内核识别码
    
    这里写-webkit的兼容
    .div{
        animation-name:Effect1, Effect2;
        animation-duration:3s, 2s;
        animation-timing-function:linear, linear;
        animation-delay:0, 2s;
        animation-iteration-count:1, infinite;
        animation-fill-mode:forwards, forwards;
        animation-direction:normal, alternate;
    
        -webkit-animation-name:Effect1, Effect2;
        -webkit-animation-duration:3s, 2s;
        -webkit-animation-timing-function:linear, linear;
        -webkit-animation-delay:0, 2s;
        -webkit-animation-iteration-count:1, infinite;
        -webkit-animation-fill-mode:forwards, forwards;
        -webkit-animation-direction:normal, alternate;
    }
    

    附上项目案例

    Vanguard

    相关文章

      网友评论

      • 明天你好_057f:作者你好,我想问下,如果我要这两个动画都要无限运行怎么解决,就是 animation-iteration-count:infinite, infinite;
      • 寻水鱼:看了项目案例,没什么新颖,swiper可以做到
        寻水鱼:@JoinFisher zepto好用吗?我没用过
        Amfishers:项目都是按需来制作,技术只有适不适用。swiper没压缩要166k,我这里不用swiper而用zepto压缩之后只有36k,哪个更好:smiley:

      本文标题:CSS3 连续执行两个动画

      本文链接:https://www.haomeiwen.com/subject/newzlttx.html