js实现的动画导航菜单效果代码


Posted in Javascript onSeptember 10, 2015

本文实例讲述了js实现的动画导航菜单效果代码。分享给大家供大家参考。具体如下:

这是一款简单的动画导航菜单效果,每个菜单项的下边有一个横线会随着鼠标的对应而自动滑动,指明当前菜单的位置。

运行效果截图如下:

js实现的动画导航菜单效果代码

在线演示地址如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>动画导航菜单</title>
<style type="text/css">
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote{margin:0; padding:0;}
body { font:12px "\5B8B\4F53",san-serif; color:#808080; padding-top:6px; }
a { text-decoration:none; color:#808080 }
a:hover { text-decoration:underline; color:#ba2636 }
ul, li { list-style:none; }
#nav{ padding:41px 0 0 0; height:27px;width:542px; overflow:hidden; float:right; margin-right:17px;position:relative ;}
#nav ul{ height:27px; width:100%; background: url(i/naVbotBdr.gif) repeat-x 0 100%; }
#nav ul li{ width:67px; height:24px; float:left; padding-right:28px; display:inline; cursor:pointer; overflow:hidden}
#nav a{background:#999;width:100%; height:24px; display:block; float:left; outline:none; color:#fff; line-height:24px; text-align:center; font-size:16px; font-weight:bold; overflow:hidden}
#navCur{ position:absolute; left:0; bottom:0; height:3px; color:#F00; width:67px; margin:0; padding:0; display: block; float:none; background:#FF0000; cursor:pointer; overflow:hidden}
</style>
</head>
<body>
  <div id="nav">
  <ul class="cf">
  <li><a href="" hidefocus="true">1</a></li>
  <li><a href="1" hidefocus="true">2</a></li>
  <li class="cur"><a href="2" hidefocus="true">3</a></li>
  <li><a href="3" hidefocus="true">4</a></li>
  <li><a href="4" hidefocus="true">5</a></li>
  <li><a href="5" hidefocus="true">6</a></li>
 </ul>
  <span id="navCur"></span>
 </div>
<script type="text/javascript">
(function(){
 var curPostion,thisLeft, curPostion_1;
 var obj = getId('nav').getElementsByTagName('ul')[0], timer = null ,navCur = getId('navCur'),x,liArr = getId('nav').getElementsByTagName('li'),liLength = liArr.length-1;
 for (var x=0;x<liArr.length; x++ ){
  liArr[liLength].style.paddingRight = "0";
  var li = liArr[x],curPostion = navCur.offsetLeft;
  if(li.className == "cur"){ 
   navCur.style.left = li.offsetLeft + "px";
  }
  li.onmouseover=function(){
   clearTimeout(timer);
   thisLeft = this.offsetLeft;
   if (thisLeft > navCur.offsetLeft)
   {
    hover();
   }
   else
   {
    curPostion_1 = this.offsetLeft;
    out();
   }
  };
  li.onmouseout=function(){
   clearTimeout(timer);
   if (curPostion < navCur.offsetLeft)
   {
    curPostion_1 = curPostion;
    out();
   }
   else
   {
    thisLeft = curPostion;
    hover();
   }
  };
 }
 function hover(){
  if (navCur.offsetLeft <= thisLeft)
  {
   var a = Math.max(parseInt((thisLeft - navCur.offsetLeft) / 15), 3);
   navCur.style.left = navCur.offsetLeft + a + "px";
   timer = setTimeout(arguments.callee, 5);
  }
  else
  {
   navCur.style.left = thisLeft + "px";
   clearTimeout(timer);
  }
 }
 function out(){
  if (navCur.offsetLeft >= curPostion_1)
  {
   var a = Math.max(parseInt((navCur.offsetLeft - curPostion_1) / 15), 3);
   navCur.style.left = navCur.offsetLeft - a + "px";
   timer = setTimeout(arguments.callee, 5);
  }
  else
  {
   navCur.style.left = curPostion_1 + "px";
   clearTimeout(timer);
  }
 }
 function getId(id){
  return document.getElementById(id)
 }
})();
</script>
</body>
</html>

希望本文所述对大家的JavaScript程序设计有所帮助。

Javascript 相关文章推荐
一个对于Array的简单扩展
Oct 03 Javascript
JS上传前预览图片实例
Mar 25 Javascript
Angular设置title信息解决SEO方面存在问题
Aug 19 Javascript
JQ选择器_选择同类元素的第N个子元素的实现方法
Sep 08 Javascript
Javascript中的 “&amp;” 和 “|” 详解
Feb 02 Javascript
Vue.js基础学习之class与样式绑定
Mar 20 Javascript
vue.js利用defineProperty实现数据的双向绑定
Apr 28 Javascript
详解ES6中的代理模式——Proxy
Jan 08 Javascript
JavaScript实现一个带AI的井字棋游戏源码
May 21 Javascript
如何为vuex实现带参数的 getter和state.commit
Jan 04 Javascript
详解JavaScript作用域和作用域链
Mar 19 Javascript
绘制微信小程序验证码功能的实例代码
Jan 05 Javascript
js实现3D图片逐张轮播幻灯片特效代码分享
Sep 09 #Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
Sep 09 #Javascript
jQuery实现MSN中文网滑动Tab菜单效果代码
Sep 09 #Javascript
js基于面向对象实现网页TAB选项卡菜单效果代码
Sep 09 #Javascript
JS实现自动变换的菜单效果代码
Sep 09 #Javascript
jQuery实现点击小图片淡入淡出显示大图片特效
Sep 09 #Javascript
JS实现自动变化的导航菜单效果代码
Sep 09 #Javascript
You might like
php横向重复区域显示二法
2008/09/25 PHP
ThinkPHP连接数据库的方式汇总
2014/12/05 PHP
PHP CURL 内存泄露问题解决方法
2015/02/12 PHP
PHP实现全角字符转为半角方法汇总
2015/07/09 PHP
Zend Framework教程之Zend_Config_Xml用法分析
2016/03/23 PHP
PHP微信开发之查询微信精选文章
2016/06/23 PHP
JQuery与JSon实现的无刷新分页代码
2011/09/13 Javascript
CSS(js)限制页面显示的文本字符长度
2012/12/27 Javascript
javascript中的缓动效果实现程序
2012/12/29 Javascript
javascript 数组排序函数sort和reverse使用介绍
2013/11/21 Javascript
ie下$.getJSON出现问题的解决方法
2014/02/12 Javascript
分析了一下JQuery中的extend方法实现原理
2015/02/27 Javascript
浏览器中url存储的JavaScript实现
2015/07/07 Javascript
JavaScript Promise 用法
2016/06/14 Javascript
探究Vue.js 2.0新增的虚拟DOM
2016/10/20 Javascript
带你快速理解javascript中的事件模型
2017/08/14 Javascript
详解基于vue-router的动态权限控制实现方案
2017/09/28 Javascript
Vue 项目部署到服务器的问题解决方法
2017/12/05 Javascript
你可能不知道的前端算法之文字避让(inMap)
2018/01/12 Javascript
vue使用keep-alive保持滚动条位置的实现方法
2019/04/09 Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
2019/06/07 Javascript
浅谈vue使用axios的回调函数中this不指向vue实例,为undefined
2020/09/21 Javascript
在Python3中使用asyncio库进行快速数据抓取的教程
2015/04/02 Python
python简单分割文件的方法
2015/07/30 Python
Python中正则表达式的用法总结
2019/02/22 Python
如何在Python中实现goto语句的方法
2019/05/18 Python
python使用自定义钉钉机器人的示例代码
2020/06/24 Python
大专生工程监理求职信
2013/10/04 职场文书
七年级音乐教学反思
2014/01/26 职场文书
个人承诺书怎么写
2014/05/24 职场文书
医院2014国庆节活动策划方案
2014/09/21 职场文书
活动宣传稿范文
2015/07/23 职场文书
母亲节感言
2015/08/03 职场文书
你有一份《诚信考试承诺书》待领取
2019/11/13 职场文书
PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤
2021/05/21 PostgreSQL
MySQL如何使备份得数据保持一致
2022/05/02 MySQL