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 相关文章推荐
JavaScript动态操作表格实例(添加,删除行,列及单元格)
Nov 25 Javascript
jquery如何扑捉回车键触发的事件
Apr 24 Javascript
深入理解JavaScript系列(25):设计模式之单例模式详解
Mar 03 Javascript
jQuery实现商品活动倒计时
Oct 16 Javascript
vue.js根据代码运行环境选择baseurl的方法
Feb 28 Javascript
vue-cli脚手架build目录下utils.js工具配置文件详解
Sep 14 Javascript
Nuxt.js SSR与权限验证的实现
Nov 21 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
May 08 Javascript
使用p5.js实现动态GIF图片临摹重现
Oct 23 Javascript
Electron整合React使用搭建开发环境的步骤详解
Jun 07 Javascript
jQuery中event.target和this的区别详解
Aug 13 jQuery
vue项目两种方式实现竖向表格的思路分析
Apr 28 Vue.js
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
使用PHPMyAdmin修复论坛数据库的图文方法
2012/01/09 PHP
具有时效性的php加密解密函数代码
2013/06/19 PHP
解析PHP正则提取或替换img标记属性
2013/06/26 PHP
php不使用copy()函数复制文件的方法
2015/03/13 PHP
php格式化电话号码的方法
2015/04/24 PHP
PHP使用token防止表单重复提交的方法
2016/04/07 PHP
比较全面的event对像在IE与FF中的区别 推荐
2009/09/21 Javascript
ClearTimeout消除闪动实例代码
2016/02/29 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
JS动态给对象添加属性和值的实现方法
2016/10/21 Javascript
javascript实现滑动解锁功能
2017/03/22 Javascript
jQuery中库的引用方法
2018/01/06 jQuery
在webstorm开发微信小程序之使用阿里自定义字体图标的方法
2018/11/15 Javascript
[30:37]【全国守擂赛】第三周擂主赛 Dark Knight vs. Leopard Gaming
2020/05/04 DOTA
Python WEB应用部署的实现方法
2019/01/02 Python
python制作朋友圈九宫格图片
2019/11/03 Python
基于Python中isfile函数和isdir函数使用详解
2019/11/29 Python
python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案
2020/02/18 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
2021/01/28 Python
用python制作个视频下载器
2021/02/01 Python
利用 Canvas实现绘画一个未闭合的带进度条的圆环
2019/07/26 HTML / CSS
伯利陶器:Burleigh Pottery
2018/01/03 全球购物
五年级语文教学反思
2014/01/30 职场文书
春节请假条
2014/04/11 职场文书
公司年底活动方案
2014/08/17 职场文书
个人专业技术总结
2015/03/05 职场文书
销售开票员岗位职责
2015/04/15 职场文书
居住证明范文
2015/06/17 职场文书
小学感恩主题班会
2015/08/12 职场文书
2016年记者节感言
2015/12/08 职场文书
详解MySQL InnoDB存储引擎的内存管理
2021/04/08 MySQL
解决golang在import自己的包报错的问题
2021/04/29 Golang
Python中 range | np.arange | np.linspace三者的区别
2022/03/22 Python
vue项目proxyTable配置和部署服务器
2022/04/14 Vue.js
spring IOC容器的Bean管理XML自动装配过程
2022/05/30 Java/Android
win10系统xps文件怎么打开?win10打开xps文件的两种操作方法
2022/07/23 数码科技