码迷,mamicode.com
首页 > 其他好文 > 详细

前端动画小记---bilibili ( ゜-゜)つロ客户下载小动画

时间:2018-03-06 17:11:26      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:对象状态   客户端   htm   模块   class   bug   mouse   enter   持续时间   

逛哔哩哔哩 ( ゜-゜)つロPC版的时候看到一个蛮有意思的动画,指导用户去下载客户端,示意图如下。

技术分享图片

看起来蛮复杂的样子,还有线条的幻化成各种形状。debug一下得出真相,此乃动画雪碧图实现的。

雪碧图概念:雪碧图也叫css精灵,一种网页图片应用处理方式,将页面涉及到的图片零星图片集中到一张图上使用,主要利用css background-position 定位要显示的图片位置。

 

雪碧图文件:

技术分享图片

 

html代码:很简单的一句,引入一个div空间用于展示图片。

<div id="elevator-mobile-app" class="app-icon" style="background-position-x: 0px;"></div>

  

css代码:动画的实现几乎全在这里了。

  /*设置一下div框的大小等属性*/
.app-icon { position: absolute; left: 100px; width: 80px; height: 80px; background-image: url(../img/app-download.png); }
/*定义鼠标进入元素模块时的动画*/
.easy-in {
            animation-timing-function: steps(15);
            animation-name: phone-in;
            animation-duration: 1.5s;
            animation-iteration-count: 1;
            animation-fill-mode: forwards;
            background-position: left;
        }

        @keyframes phone-in {
             0% {
                 background-position: left;
             }

             100% {
                 background-position: right;
             }
         }
        /* opera */
        @-o-keyframes  phone-in {
            0% {
                background-position: left;
            }

            100% {
                background-position: right;
            }
        }
        /* firefox */
        @-moz-keyframes  phone-in {
            0% {
                background-position: left;
            }

            100% {
                background-position: right;
            }
        }
        /* safari 和 chrome */
        @-webkit-keyframes  phone-in {
            0% {
                background-position: left;
            }

            100% {
                background-position: right;
            }
        }

  定义鼠标移出元素块时的动画

.easy-out {
            /*
            * 检索或设置动画过渡类型,两个参数。
            * 当设置为step函数时,第一个参数必须是正整数,指定函数的步数;
            * 第二个参数取值可以是start或end,指定每一步的值发生变化的时间点。第二个参数是可选的,默认值为end。
            */
            animation-timing-function: steps(15,start);
            /*动画名称*/
            animation-name: phone-out;
            /*动画持续时间*/
            animation-duration: 1.5s;
            /*动画循环次数,取值一infinite:无限循环  取值二具体数字*/
            animation-iteration-count: 1;
            /*检索或设置对象动画时间之外的状态
            * none:默认值。不设置对象动画之外的状态
            * forwards:设置对象状态为动画结束时的状态
            * backwards:设置对象状态为动画开始时的状态
            * both:设置对象状态为动画结束或开始的状态
            */
            animation-fill-mode: forwards;
            background-position: right;
        }

        @keyframes phone-out {
            0% {
                background-position: right;
            }

            100% {
                background-position: left;
            }
        }

        @-o-keyframes phone-out {
            0% {
                background-position: right;
            }

            100% {
                background-position: left;
            }
        }

        @-moz-keyframes phone-out {
            0% {
                background-position: right;
            }

            100% {
                background-position: left;
            }
        }

        @-webkit-keyframes phone-out {
            0% {
                background-position: right;
            }

            100% {
                background-position: left;
            }
        }

  javascript 鼠标事件:

//鼠标指针穿过被选元素时,才会触发 mouseenter 事件。
    $(‘#elevator-mobile-app‘).mouseenter(function () {
        $(‘#elevator-mobile-app‘).removeClass(‘easy-out‘);
        $(‘#elevator-mobile-app‘).addClass(‘easy-in‘);
    })

    //在鼠标指针离开被选元素时,才会触发 mouseleave 事件。
    $(‘#elevator-mobile-app‘).mouseleave(function () {
        $(‘#elevator-mobile-app‘).removeClass(‘easy-in‘);      
        $(‘#elevator-mobile-app‘).addClass(‘easy-out‘);
    })

  最终效果:

技术分享图片

前端动画小记---bilibili ( ゜-゜)つロ客户下载小动画

标签:对象状态   客户端   htm   模块   class   bug   mouse   enter   持续时间   

原文地址:https://www.cnblogs.com/hongdiandian/p/8514709.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!