美文网首页
四、CSS3 Animation元素运动实现

四、CSS3 Animation元素运动实现

作者: 咕咚咚bells | 来源:发表于2016-10-19 21:51 被阅读469次

我们用关键帧关键帧可以实现精灵图的切换,同时通过background-size背景解决了自适应的问题,这样还是不够的,元素还仅仅只是在原地进行帧动画,要让一个元素动起来必须要配合元素坐标的变化
因此在实现上,让元素动起来:
运动 = 关键帧动画 + 坐标变化
关键帧动画我们已经实现了,那坐标的变化就很简单了,一般来说前端能用到的手段
元素.position定位,修改top,left坐标修改
通过css3transform属性的translate

无论用那种需要记住的是元素的坐标 都是 position+translate的值的总和
transitioncss3引入的"过渡"属性,可以让css的属性值在一定的时间区间内平滑地过渡,考虑兼容性问题,这里会额外引入一个插件jquery.transit,这个就是具体封装了transition的CSS3过渡动画的实现
接下来代码部分就非常简单了
transition的使用与jQuery提供的animate()方法基本差不多,所以使用上很容易接受,让飞鸟执行一个飞的动作,可以这样用

$(".bird").transition({ 'right': "3rem",},  
           10000,'linear',function(){ alert("结束")});

只要给出position的坐标值,同时给出变化的时间就让元素动起来了,结合一下精灵动画,是不是看起来物体运动就是那么回事了?

<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <title>圣诞主题</title>
    <style type="text/css">
    .bird {
        min-width: 4rem;
        min-height: 2rem;
        top: 10%;
        right: 0;
        position: absolute;
        z-index: 10;
        background: url(http://img.mukewang.com/55ade1700001b38302730071.png);
        background-size: 300% 100%;
    }
    
    .birdFly {
        /*写法1*/
        -moz-animation-name: bird-slow;
        -moz-animation-duration: 400ms;
        -moz-animation-timing-function: steps(1,start);
        -moz-animation-iteration-count: infinite;

        /*写法2*/
        -webkit-animation:bird-slow 400ms steps(3) infinite;
    }
    
    @-webkit-keyframes bird-slow {
        0% {
            background-position: -0% 0%;
        }
        100% {
            background-position: -300% 0%;
        }
    }
    
    @-moz-keyframes bird-slow {
        0% {
            background-position: -0% 0%;
        }
        50% {
            background-position: -100% 0%;
        }
        75% {
            background-position: -200% 0%;
        }
        100% {
            background-position: -300% 0%;
        }
    }
    </style>
  <script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script><script src="http://cdn.bootcss.com/jquery.transit/0.9.12/jquery.transit.min.js"></script>
</head>

<body>
    <div class="bird birdFly"></div>
    <button>点击运动</button>
</body>
<script type="text/javascript">

$("button").on("click",function(){
    /**
     * 通过transition的方式改变运动
     */
    $(".bird").transition({
    'right': "3rem",
    }, 10000,'linear',function(){
    alert("结束")
});
})

var docEl = document.documentElement,
    resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
    recalc = function() {
        //设置根字体大小
        docEl.style.fontSize = 20 * (docEl.clientWidth / 320) + 'px';
    };

//绑定浏览器缩放与加载时间
window.addEventListener(resizeEvt, recalc, false);
document.addEventListener('DOMContentLoaded', recalc, false);
</script>

</html>

相关文章

  • 四、CSS3 Animation元素运动实现

    我们用关键帧关键帧可以实现精灵图的切换,同时通过background-size背景解决了自适应的问题,这样还是不够...

  • CSS3 动画

    动画属性 动画(animation)是CSS3新增的属性,动画属性可以为元素创建动画,CSS3以前在网页上实现动画...

  • H5动画效果

    我们使用CSS3可以实现动画,主要的方式是通过animation 实现的。 animation属性 animati...

  • 随笔03

    1、css3中transfrom和transition、animation的区别 transfrom描述元素静态样...

  • css3中的animation

    CSS3的Animation有八个属性:animation-name运动的名称(规定需要绑定的keyframe 名...

  • CSS3动画

    在CSS3中,动画效果使用animation属性来实现。animation属性和transition属性功能是相同...

  • 实现动画的6种方案

    通常,前端实现动画的方案主要有6种:CSS3 transition、CSS3 animation、Canvas动画...

  • CSS3 animation关键帧运动

    一.animation关键帧运动 设置运动规则及运动属性,并把运动规则的名称指定给相应元素 animation-d...

  • 用css实现幻灯片效果

    实现过程比较简单,用css3新属性animation配合@keyframes就可以实现了

  • CSS3 Animation实现加载动画

    利用CSS3中的animation,可以实现很多很炫的效果。今天就来利用animation属性完成如上图所示的加载...

网友评论

      本文标题:四、CSS3 Animation元素运动实现

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