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

 更新时间:2015年09月10日 09:19:33   作者:企鹅  
这篇文章主要介绍了js实现的动画导航菜单效果代码,涉及JavaScript通过鼠标事件控制页面元素样式动态变换的技巧,具有一定参考借鉴价值,需要的朋友可以参考下

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

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

运行效果截图如下:

在线演示地址如下:

http://demo.jb51.net/js/2015/js-animate-nav-menu-style-codes/

<!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程序设计有所帮助。

相关文章

  • uniapp调用百度语音实现录音转文字功能

    uniapp调用百度语音实现录音转文字功能

    这篇文章主要介绍了uniapp通过调用百度语音,实现录音转文字的功能。文中的示例代码对我们学习或工作有一定的帮助,感兴趣的小伙伴可以跟随小编学习一下
    2021-12-12
  • js实现石头剪刀布游戏

    js实现石头剪刀布游戏

    这篇文章主要为大家详细介绍了js实现石头剪刀布游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-10-10
  • 原生js封装运动框架的示例讲解

    原生js封装运动框架的示例讲解

    下面小编就为大家带来一篇原生js封装运动框架的示例讲解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • JS typeof fn === ''function'' && fn()详解

    JS typeof fn === ''function'' && fn()详解

    最近在学习js的时候发现很多人都喜欢在JS 中存在fn && fn() 执行语句或者typeof fn === 'function' && fn(),下面这篇文章就为大家分享一下
    2020-08-08
  • 使用window.prompt()实现弹出用户输入的对话框

    使用window.prompt()实现弹出用户输入的对话框

    window对象的最后一种对话框是提示对话框,它显示了预先设置的信息并提供文本域供用户输入应答。它包括两个按钮,即Cancel和Ok,允许用户用两个相反的期望值来关闭这个对话框:取消整个操作或接收输入到对话框中的文本
    2015-04-04
  • JS实现的计数排序与基数排序算法示例

    JS实现的计数排序与基数排序算法示例

    这篇文章主要介绍了JS实现的计数排序与基数排序算法,结合实例形式简单分析了计数排序与基数排序的原理与JS实现技巧,需要的朋友可以参考下
    2017-12-12
  • JavaScript遍历对象的七种方法汇总

    JavaScript遍历对象的七种方法汇总

    这篇文章主要介绍了JavaScript遍历对象的七种方法汇总,文章通过从属性可枚举性问题与遍历方法两个大方面讲述全文,具有一定的参考价值,需要的朋友可以参考一下
    2022-08-08
  • javascript数据结构之双链表插入排序实例详解

    javascript数据结构之双链表插入排序实例详解

    这篇文章主要介绍了javascript数据结构之双链表插入排序实现方法,较为详细的分析了插入排序的原理及双链表插入排序的实现技巧,对于学习JavaScript数据结构具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • js操作浏览器的参数方法

    js操作浏览器的参数方法

    下面小编就为大家带来一篇js操作浏览器的参数方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • JavaScript中各种时间转换问题详解(YYYY-MM-DD、时间戳、中国标准时间)

    JavaScript中各种时间转换问题详解(YYYY-MM-DD、时间戳、中国标准时间)

    在某些场景下,需要将时间转换为字符串进行展示或传递,下面这篇文章主要给大家介绍了关于JavaScript中各种时间转换问题(YYYY-MM-DD、时间戳、中国标准时间)的相关资料,需要的朋友可以参考下
    2024-02-02

最新评论