效果如下:http://campus.51job.com/test/zengxl/js

html:

 <div class="mainnav">
<div class="navwrap">
<ul class="navul">
<li class="navlist"><a class="nav_a" href="index.html">首页<br/><span>Home</span></a></li>
<li class="navlist"><a class="nav_a" href="#dotwrap">奖励说明<br/><span>Award description</span></a></li class="navlist">
<li class="navlist"><a class="nav_a" href="#">人气投票<br/><span>Popular vote</span></a></li>
<li class="navlist"><a class="nav_a" href="#">Q&amp;A<br/><span>interlocution</span></a></li>
<li class="navlist">
<a class="nav_a" href="#">关于Marvell<br/><span>About Marvell</span></a>
<div class="downlist clear">
<ul>
<li class="navitem"><a href="#">美满全球</a></li>
<li class="navitem lastitem"><a href="#">美满中国</a></li>
</ul>
</div>
</li>
</ul>
</div>
</div>

css:

 .mainnav{
background: url(../images/mainnavbg.png) repeat-x;
height: 73px;
width: 100%;
position: relative;
z-index:;
}
.navwrap .navul{
position: relative;
height: 100%;
float: left;
margin-left: 150px;
}
.mainnav .navwrap{
width: 933px;
margin: 0 auto;
height: 73px;
}
.mainnav li.navlist{
float: left;
height: 70px;
position: relative;
z-index:;
}
.nav_bg{
background: #a24601;
}
.mainnav a.nav_a{
padding:10px 28px 0;
font-size: 17px;
color: #000;
text-align: center;
}
.mainnav a span{
font-size: 13px;
}
.downlist .navitem{
float: left;
height: 48px;
line-height: 48px;
margin: 0 18px;
border-bottom: 1px solid #7c3500;
padding: 0 18px;
}
.downlist .lastitem{
border-bottom: none;
}
.downlist{
position: absolute;
top: 70px;
left:;
width: 98.5%;
border: 1px solid #472201;
background-color: #ff7817;
z-index:;
display: none;
}
.navitem a{
font-size: 18px;
color: #000;
}
.navitem .dl_hover{
color: #fff;
}

js:

 /**
* 动态添加导航下方的滑动条
*/
var navul = document.getElementsByClassName('navul');
//创建div元素
var navBtn = document.createElement('div');
//设置css样式,注意transition:all
navBtn.style.cssText = 'position:absolute;width:0;bottom:3px;left:0;z-index:998;height:5px;background-color:#4486d4;'+
'box-shadow:0 0 3px #fff;transition:all .5s ease;'
//把创建的这个div添加到ul中
navul[0].appendChild(navBtn);
//获取里面的a元素
var nav_a = document.getElementsByClassName('nav_a');
var len = nav_a.length;
for (var i = 0; i < len; i++) {
//currentStyle:IE的选中样式。 getComputedStyle:FF的计算后样式
var style = nav_a[i].currentStyle||getComputedStyle(nav_a[i]);
//style.paddingLeft得到的值是带有'px'的,所以转换成Number类型
var pL = parseInt(style.paddingLeft,10);
var pR = parseInt(style.paddingRight,10)
//样式初始化
navBtn.style.width = (nav_a[0].offsetWidth-pL-pR)+'px';
navBtn.style.left = (nav_a[0].offsetLeft+pL)+'px';
//给当前对象添加事件。
nav_a[i].addEventListener('mouseenter',function(){
//this指的是当前的这个对象
navBtn.style.width = (this.offsetWidth-pL-pR)+'px';
navBtn.style.left = (this.offsetParent.offsetLeft+pL)+'px';
},false);
nav_a[i].addEventListener('mouseleave',function(){
navBtn.style.width = (nav_a[0].offsetWidth-pL-pR)+'px';
navBtn.style.left = (nav_a[0].offsetLeft+pL)+'px';
},false);
}

JS滑动下划线导航菜单实现原理的更多相关文章

  1. 20款jquery下拉导航菜单特效代码分享

    20款jquery下拉导航菜单特效代码分享 jquery仿京东商城左侧分类导航下拉菜单代码 jQuery企业网站下拉导航菜单代码 jQuery css3黑色的多级导航菜单下拉列表代码 jquery响应 ...

  2. jQuery实现淡入淡出二级下拉导航菜单的方法

    本文实例讲述了jQuery实现淡入淡出二级下拉导航菜单的方法.分享给大家供大家参考.具体如下: 这是一款基于jQuery实现的导航菜单,淡入淡出二级的菜单导航,很经常见到的效果,这里使用的是jquer ...

  3. 在 jQuery 中使用滑入滑出动画效果,实现二级下拉导航菜单的显示与隐藏效果

    查看本章节 查看作业目录 需求说明: 在 jQuery 中使用滑入滑出动画效果,实现二级下拉导航菜单的显示与隐藏效果 用户将光标移动到"最新动态页"或"帮助查询" ...

  4. MDNavBarView下拉导航菜单(仿美团导航下拉菜单)

    说到下拉导航菜单这个东西用得还真不少,细心算一下做开发以来这样的菜单已经写了第三次了,但基本都是不能复用.感觉特累人.不经意看到同事写一个类似的下拉菜单,但他引用了开源库仿大众菜单的库,大致看了一下, ...

  5. 一款jQuery立体感动态下拉导航菜单特效

    一款jQuery立体感动态下拉导航菜单特效,鼠标经过,在菜单栏上方下拉出一个背景图片,效果十分不错的一款jquery特效. 对IE6都是兼容的,希望大家好好研究研究. 适用浏览器:IE6.IE7.IE ...

  6. 基于jQuery动画二级下拉导航菜单

    春节回来给大家分享一款基于jQuery动画二级下拉导航菜单.鼠标经过的时候以动画的形式出现二级导航.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div id=" ...

  7. 纯CSS实现二级下拉导航菜单

    这是一款纯CSS菜单,二级下拉导航效果,是最简洁的CSS导航菜单,兼容性也很棒,IE7/8.火狐等都支持,而且它还是学习CSS菜单编写的典型教程,让你学会很多CSS技巧. 运行效果截图如下: < ...

  8. 纯CSS下拉导航菜单

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<a href="h ...

  9. 简单的CSS 下拉导航菜单实现代码

    <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head> <met ...

随机推荐

  1. 不要使用Android Studio的Git Commit了---->记一次debug

    今天下午写了一些代码,吃晚饭时分用Android Studio commit了一下,不知道有没有选择Commit and push,结果刚才代码出bug我想回滚到上个版本的时候,发现Android S ...

  2. Android Studio & Butter Knife —— 快速开发

    Butter Knife是一个Android的注解框架,可以帮助用户快速完成视图.资源与对象的绑定,完成事件的监听.(也就是少写findViewById()) 具体的介绍可以参考官方主页: http: ...

  3. 每天一个linux命令(12):nl命令

    版权声明更新:2017-05-16博主:LuckyAlan联系:liuwenvip163@163.com声明:吃水不忘挖井人,转载请注明出处! 1 文章介绍 本文介绍了Linux下面的mv命令. 2. ...

  4. 使用UIBezierPath添加投影效果

                             代码: ViewController.h #import <UIKit/UIKit.h> @interface ViewControlle ...

  5. 冷备手工完全恢复(recover database,recover tablespace,recover datafile)

    冷备手工完全恢复 1.   手工完全恢复三种级别: recover database: 所有或大部分datafile丢失,一般是在mount状态完成.recover tablespace:    非关 ...

  6. 51nod 1450 闯关游戏——期望dp

    题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1450 想了半天,不知道不能走的状态(即最后不足m个的状态)怎么办. ...

  7. 机器学习:Jupyter Notebook中numpy的使用

    一.Jupyter Notebook的魔法命令 # 模块/方法 + ?或者help(模块/方法):查看模块/方法的解释文档: 1)%run # 机械学习中主要应用两个魔法命令:%run.%timeit ...

  8. 问题11:如何进行反向迭代 & 如何实现反向迭代

    # 有关列表问题,参考:Python:列表list 案例: 需求:实现一个连续浮点数发生器FloatRange(和range类似),根据给定范围(start,end)和步进值(step),产生一系列连 ...

  9. <正则吃饺子> :关于mybatis中使用的问题(一)

    在公司项目开始之前,根据springboot .mybatis.Swagger2 整合了一个demo,在测试时候,遇到的问题,简单记录.之前在使用mybatis时候,没有注意到这一点. 1.错误:Th ...

  10. CF1041F Ray in the tube

    挂上Chester大神的解题报告 有一个思维跳跃的地方,就是不应该枚举所有的$B$点,而是应该在选定一个$A$点之后枚举距离计算. 然后我们发现枚举距离是$2^k$的长度就可以了,证明如下: 假如距离 ...