js实现导航栏上下动画效果

js实现导航栏上下动画效果

本文实例为大家分享了js实现导航栏上下动画的具体代码,供大家参考,具体内容如下

obj.currentStyle[name] getComputedStyle(obj,false)[name],一个是支持IE 一个支持FE
完美运动js插件,能根据传进来的值,进行匹配,从而得到了理想的运动效果,也就是运行逻辑。
实现上下动画动画效果就是控制元素height的值,通过不断的修改该值,就能呈现所谓的动画效果,这里就需要用到定时器

定时器有两种

重复不断的定时器 setInterval(fn,time);
延时只在设定时间后只出现一次的定时器 setTimeout(fn,time)
在遍历传进的每一个值,需要使用一个boolean来控制是否完成解析,解析成功则返回true,结束定时器,返回false,知道返回true位置

function getStyle(obj, attr) {     if(obj.currentStyle)     {         return obj.currentStyle[attr];     }     else     {         return getComputedStyle(obj, false)[attr];     } } function startMove(obj,json,fnEnd){     if(obj.timer){         clearInterval(obj.timer);     };     obj.timer=setInterval(function(){         var bStop = true; //假设全部找到         for(var attr in json){             var icurr = 0;             if(attr=='opacity'){//匹配key                 icurr=Math.round(parseFloat(getStyle(obj,attr))*100); //获取元素的属性值             }else{                 icurr=parseInt(getStyle(obj,attr));             };             var sPeed = (json[attr]-icurr)/8;             sPeed=sPeed>0?Math.ceil(sPeed):Math.floor(sPeed);             if(attr=='opacity'){                 obj.style.filter="alpha(opacity:"+(icurr+sPeed)+")";                 obj.style.opacity=(icurr+sPeed)/100;             }else{                 obj.style[attr]=icurr+sPeed+'px';             }             if(icurr!=json[attr]){                 bStop=false;             }         }         if(bStop){             clearInterval(obj.timer);             if(fnEnd){                 fnEnd();             }         }     },30); } // alert('dffe');

html布局

<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <link rel="stylesheet" type="text/css" href="css/common.css" /> <script src="js/move.js"></script> <script src="js/common.js"></script> <title></title> </head> <body> <div id="box"> <div><a href="javascript:;" class="a01"></a><em>关于</em><span></span></div> <div><a href="javascript:;" class="a02"></a><em>招聘</em><span></span></div> <div><a href="javascript:;" class="a04"></a><em>产品</em><span></span></div> <div><a href="javascript:;" class="a03"></a><em>公司</em><span></span></div> </div> </body> </html>

css文件

*{     margin: 0;     padding: 0; } a{     text-decoration: none; } body{     background-color: #c1c1c1; } #box{     width: 880px;     margin: 100px auto;     overflow: hidden; } #box div{     width: 200px;     height: 100px;     float: left;     overflow: hidden;     position: relative; } #box div a{     position: absolute;     left: 0;     top: 0;     width: 200px;     height: 100px;     display: block;     /* background-color: red; */ background: url(../images/1.webp) no-repeat; } #box div span{     display: block;     width: 200px;     height: 100px;     position: absolute;     background: url(../images/window.webp) left top repeat-x; } #box div em{     display: block;     width: 100%;     height: 100%;     background-color: #999;     position: absolute;     text-align: center;     line-height: 100px;     font-family: Verdana;     font-style: normal;     font-size: 30px;     color: white;     text-shadow: 2px 1px 4px black;     top: 0; } #box div a.a01{         /* background: url(../images/1.webp) 0 5px no-repeat; */     background-position: 0 5px; } #box div a.a02{         /* background: url(../images/1.webp) 0 5px no-repeat; */     background-position: -200px 5px; } #box div a.a03{         /* background: url(../images/1.webp) 0 5px no-repeat; */     background-position: -400px 5px; } #box div a.a04{         /* background: url(../images/1.webp) 0 5px no-repeat; */     background-position: -600px 5px; }

window.οnlοad=fn

window.onload=function(){     var oDiv = document.getElementById('box');     var aDiv = oDiv.getElementsByTagName('div');     var aEm = oDiv.getElementsByTagName('em');         var aEm = oDiv.getElementsByTagName('em');     for(var i=0;i<aDiv.length;i++)         {             aDiv[i].index = i;             aDiv[i].onmouseover = function()             {                 startMove(aEm[this.index],{top:-aEm[this.index].offsetHeight})             }             aDiv[i].onmouseout = function()             {                 startMove(aEm[this.index],{top:0})             }         } }

推荐阅读

    js设置div的边框|怎样给div设置边框

    js设置div的边框|怎样给div设置边框,,1. 怎样给div设置边框1、首先新建一个html文件,输入基本的内容,这里设置一个div,并把它的class设置为de

    js设置样式|js设置样式类

    js设置样式|js设置样式类,,js设置样式    javascript改变CSS样式分为局部和全局,分别如下:  一、局部改变样式    有三种方法:直接

    an测试动画快捷键|an中的快捷键

    an测试动画快捷键|an中的快捷键,,1. an中的快捷键步骤如下:1、 Ctrl+S:保存 大家在写文章或者做其他其他应用软件做东西的时候,最怕的就是忘

    js用代码实现简单购物车

    js用代码实现简单购物车,,图: 选择所有按钮: 复制代码代码如下所示: 选择 笔记本电脑:3000元 笔记本电脑:3000元 笔记本电脑:3000元 笔记本电脑:3

    js设置背景色|js设置颜色

    js设置背景色|js设置颜色,,js设置背景色首先通过js定位到div的子元素,再通过setatteibute方法给属性添加背景色。js设置颜色js改变字体的颜

    动画设置打开快捷键|动画制作快捷键

    动画设置打开快捷键|动画制作快捷键,,1. 动画制作快捷键1、选中圆形,点击动画,添加任意动画效果。2、选中圆形,点击动画选项卡中的动画刷,然后

    Safari调试iOS中的js

    Safari调试iOS中的js,页面,设备,概述对于HTML5的开发,大家都知道Chrome的DevTools工具有强大的功能和友好的用户体验,不仅能快速方便调试Jav

    wps动画保存为|wps保存视频文件

    wps动画保存为|wps保存视频文件,保存为,动画,wps,1.wps怎么保存视频文件点击wps插入2113选项卡中的【对5261象】按钮。请点击输入图4102片