如何用tween.js实现导航条滑动_html/css_WEB-ITnose

WBOY
Freigeben: 2016-06-21 08:49:53
Original
1703 Leute haben es durchsucht

导航条在大多数网站都有应用,今天我们用Tween.js来做一个下方有动态效果的导航条。

图片来源于网络.jpg

HTML5部分

什么是tween.js?

tween.js是一款可生成平滑动画效果的js动画库。tween.js允许你以平滑的方式修改元素的属性值。它可以通过设置生成各种类似CSS3的动画效果。

<body>        <!--div.wrap>div{按钮$}*4-->        <div class="wrap">            <div class="middle">                <div>按钮1</div>                <div>按钮2</div>                <div>按钮3</div>                <div>按钮4</div>            </div>        </div>        <div class="slider"></div>    </body>
Nach dem Login kopieren

CSS3样式部分

<style type="text/css">            .wrap{                width: 400px;                height: 100px;                background-color: gray;            }            .middle{                width: 100%;                height: 80px;                background-color: greenyellow;            }            .middle>div{                width: 100px;                height: 100%;                text-align: center;                font-size: 20px;                line-height: 80px;                float: left;            }            .slider{                width: 100px;                height: 10px;                border-radius: 5px;                background-color: brown;                position: absolute;            }        </style>
Nach dem Login kopieren

以上部分除了slider要绝对定位没什么要特别注意的静态效果如下

静态.PNG

js部分

分析逻辑

1.鼠标在导航条外时,下彩条slider在起始位置2.slider随鼠标滑动到相应位置

tween.js效果说明-来源于网络

首先引入tween.js然后定义变量 tween.js下载链接 http://www.cnblogs.com/cloudgamer/archive/2009/01/06/Tween.html

文件.png

如果放在别的文件夹里就引用自相对的文件夹

<script src="js/tween.js" type="text/javascript"></script>    <script type="text/javascript">        var divs=document.querySelectorAll(".middle>div");        var slider=document.querySelector(".slider");        var timer = null;
Nach dem Login kopieren
操作
        for(var i=0;i<divs.length;i++){            divs[i].index=i;             divs[i].onmouseover=function(){                var start = slider.offsetLeft                //多加的8是网页自带的边框                var end = this.index*100+8;                var change = end-start;                var t=0;                //duration循环次数                var d=20;                //防止定时器混乱,每次用前清一下                clearInterval(timer);                timer = setInterval(function () {                    t++;                    if (t >= d) {                        clearInterval(timer);                    }                    //结构:Tween动画库.Back动画类型.easeOut缓冲类型                    slider.style.left = Tween.Back.easeOut(t, start, change, d) + "px";                }, 30);            }        }    </script>
Nach dem Login kopieren

此处说明1.var end = this.index*100+8;的8是浏览器自带样式,如果用了

*{     margin:0;    padding:0}
Nach dem Login kopieren

等类似清楚浏览器样式代码则不用加8;2.Tween动画库.Back动画类型.easeOut缓冲类型(缓冲类型3种,动画类型10种,详细样式看上图效果说明);3.t起始时间;start起始位置;change变化量;d循环次数 4.为防止每次点击效果互相影响,每次调用前清定时器clearInterval(timer);5.slider.style.left后记得加px;动态效果如下

效果.gif

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage