js实现带缓动动画的导航栏效果


Posted in Javascript onJanuary 16, 2017

 话不多说,请看实例代码:

<!DOCTYPE html>
<html lang="en">
 <head>
  <meta charset="utf-8">
  <style type="text/css">
  ul,li { padding: 0; margin: 0; }
  li { list-style: none; }
   #box{
   height: 48px;
   width: 900px;
   background-color: #459DF5;
   margin: 50px auto;
   position: relative;
   }
   #caution {
   width: 150px;
   height: 48px;
   background-color: #4B92D8;
   position: absolute;
   top: 0;
   left: 0;
   }
 #list {
 position: absolute;
 }
   #list li {
   width: 150px;
   height: 48px;
   float: left;
   color: #fff;
   font: 500 20px/48px "微软雅黑";
   text-align: center;
   cursor: pointer;
   }
  </style>
  <script type="text/javascript">
   window.onload = function(){
   //获取ul ID
   var oUl = document.getElementById("list");
   // 获取span ID
   var caution = document.getElementById("caution");
   //获取ul 所有孩子
   var aLi = oUl.children;
   //定时器管理
   var timer = null;
   //缓动
   var leader = 0;
   var target = 0;
    //停留
    var current = 0;
   for(var i = 0;i<aLi.length;i++){
     //鼠标移动
   aLi[i].onmouseover = function(){
      //关闭定时器
   clearInterval(timer);
      //获取当前的left值
   target = this.offsetLeft;
      //开启定时器
   timer = setInterval(autoCaution,20);   
   }
     //鼠标点击
     aLi[i].onmousedown = function(){
      //清楚所有高亮的文字
      for(var j = 0;j<aLi.length;j++){
       aLi[j].style.color = "#fff"; 
      }
      //当前点击栏变为红色
      this.style.color = "#ccc";
      //提示框
      current = this.offsetLeft;
      caution.style.left = current+"px";      
     }
   }
    //鼠标离开
   oUl.onmouseout = function(){
     //关闭定时器
     clearInterval(timer);
     target = current;
     timer = setInterval(autoCaution,20);
   }
   //缓动动画
   function autoCaution(){   
   leader = leader +(target - leader) /10;
   caution.style.left = leader+"px";
   }
   }
  </script>
 </head>
 <body>
  <div id="box">
  <span id="caution"></span>
  <ul id="list">
  <li>首页</li>
  <li>公司简介</li>
  <li>企业文化</li>
  <li>招贤纳士</li>
  <li>企业论坛</li>
  </ul>
  </div>
 </body>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
javascript之通用简单的table选项卡实现(二)
May 09 Javascript
javaScript array(数组)使用字符串作为数组下标的方法
Nov 19 Javascript
js实现div的切换特效上一个下一个
Feb 11 Javascript
JavaScript中的Web worker多线程API研究
Dec 06 Javascript
JS实现将数字金额转换为大写人民币汉字的方法
Aug 02 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
Aug 18 Javascript
Vue 组件传值几种常用方法【总结】
May 28 Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
Aug 12 Javascript
vue2.0 + ele的循环表单及验证字段方法
Sep 18 Javascript
详解vue2.0 资源文件assets和static的区别
Nov 27 Javascript
vue cli使用融云实现聊天功能的实例代码
Apr 19 Javascript
基于Vue中的父子传值问题解决
Jul 27 Javascript
jQuery居中元素scrollleft计算方法示例
Jan 16 #Javascript
jQuery使用正则表达式替换dom元素标签用法示例
Jan 16 #Javascript
JavaScript日期选择功能示例
Jan 16 #Javascript
jquery——九宫格大转盘抽奖实例
Jan 16 #Javascript
jQuery的ajax中使用FormData实现页面无刷新上传功能
Jan 16 #Javascript
Node.js中用D3.js的方法示例
Jan 16 #Javascript
JavaScript实现的select点菜功能示例
Jan 16 #Javascript
You might like
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
PHP随机数函数rand()与mt_rand()的讲解
2019/03/25 PHP
PHP 实现base64编码文件上传出现问题详解
2020/09/01 PHP
基于jquery的一个浮动框(扩展性比较好 )
2010/08/27 Javascript
IE6-IE9不支持table.innerHTML的解决方法分享
2012/09/14 Javascript
Jquery带搜索框的下拉菜单
2013/05/06 Javascript
js监听滚动条滚动事件使得某个标签内容始终位于同一位置
2014/01/24 Javascript
Jquery获得控件值的三种方法总结
2014/02/13 Javascript
jQuery调取jSon数据并展示的方法
2015/01/29 Javascript
JS实现5秒钟自动封锁div层的方法
2015/02/20 Javascript
JavaScript中reduce()方法的使用详解
2015/06/09 Javascript
浅谈JavaScript中setInterval和setTimeout的使用问题
2015/08/01 Javascript
javascript省市区三级联动下拉框菜单实例演示
2015/11/29 Javascript
Node.js服务器环境下使用Mock.js拦截AJAX请求的教程
2016/05/23 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
2016/07/08 Javascript
vue项目中使用axios上传图片等文件操作
2017/11/02 Javascript
js数组去重的N种方法(小结)
2018/06/07 Javascript
使用Typescript和ES模块发布Node模块的方法
2020/05/25 Javascript
详解js创建对象的几种方式和对象方法
2021/03/01 Javascript
python每次处理固定个数的字符的方法总结
2013/01/29 Python
探寻python多线程ctrl+c退出问题解决方案
2014/10/23 Python
python中os操作文件及文件路径实例汇总
2015/01/15 Python
连接Python程序与MySQL的教程
2015/04/29 Python
Python中exit、return、sys.exit()等使用实例和区别
2015/05/28 Python
python交互式图形编程实例(三)
2017/11/17 Python
全面了解Nginx, WSGI, Flask之间的关系
2018/01/09 Python
python目标检测给图画框,bbox画到图上并保存案例
2020/03/10 Python
Python importlib动态导入模块实现代码
2020/04/16 Python
Python如何将函数值赋给变量
2020/04/28 Python
施华洛世奇德国官网:SWAROVSKI德国
2017/02/01 全球购物
会议开场欢迎词
2014/01/15 职场文书
教师三严三实心得体会
2014/10/11 职场文书
全陪导游词开场白
2015/05/29 职场文书
Python虚拟环境virtualenv是如何使用的
2021/06/20 Python
详解Spring事件发布与监听机制
2021/06/30 Java/Android
Java如何实现通过键盘输入一个数组
2022/02/15 Java/Android