JS滑动下划线导航菜单实现原理
效果如下: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&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滑动下划线导航菜单实现原理的更多相关文章
- 20款jquery下拉导航菜单特效代码分享
20款jquery下拉导航菜单特效代码分享 jquery仿京东商城左侧分类导航下拉菜单代码 jQuery企业网站下拉导航菜单代码 jQuery css3黑色的多级导航菜单下拉列表代码 jquery响应 ...
- jQuery实现淡入淡出二级下拉导航菜单的方法
本文实例讲述了jQuery实现淡入淡出二级下拉导航菜单的方法.分享给大家供大家参考.具体如下: 这是一款基于jQuery实现的导航菜单,淡入淡出二级的菜单导航,很经常见到的效果,这里使用的是jquer ...
- 在 jQuery 中使用滑入滑出动画效果,实现二级下拉导航菜单的显示与隐藏效果
查看本章节 查看作业目录 需求说明: 在 jQuery 中使用滑入滑出动画效果,实现二级下拉导航菜单的显示与隐藏效果 用户将光标移动到"最新动态页"或"帮助查询" ...
- MDNavBarView下拉导航菜单(仿美团导航下拉菜单)
说到下拉导航菜单这个东西用得还真不少,细心算一下做开发以来这样的菜单已经写了第三次了,但基本都是不能复用.感觉特累人.不经意看到同事写一个类似的下拉菜单,但他引用了开源库仿大众菜单的库,大致看了一下, ...
- 一款jQuery立体感动态下拉导航菜单特效
一款jQuery立体感动态下拉导航菜单特效,鼠标经过,在菜单栏上方下拉出一个背景图片,效果十分不错的一款jquery特效. 对IE6都是兼容的,希望大家好好研究研究. 适用浏览器:IE6.IE7.IE ...
- 基于jQuery动画二级下拉导航菜单
春节回来给大家分享一款基于jQuery动画二级下拉导航菜单.鼠标经过的时候以动画的形式出现二级导航.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div id=" ...
- 纯CSS实现二级下拉导航菜单
这是一款纯CSS菜单,二级下拉导航效果,是最简洁的CSS导航菜单,兼容性也很棒,IE7/8.火狐等都支持,而且它还是学习CSS菜单编写的典型教程,让你学会很多CSS技巧. 运行效果截图如下: < ...
- 纯CSS下拉导航菜单
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<a href="h ...
- 简单的CSS 下拉导航菜单实现代码
<html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head> <met ...
随机推荐
- Android之单元测试学习
1.单元测试概念 单元测试(又称为模块测试),检验程序模块(软件设计的最小单位)正确性的测试工作,常常是程序员写的一段代码.对于面向对象编程,最小单元就是方法,包括基类(超类).抽象类.或者派生类(子 ...
- I.MX6 Python3 OpenCV
/************************************************************************* * I.MX6 Python3 OpenCV * ...
- bzoj1059ZJOI2017矩阵游戏
小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏——矩阵游戏.矩阵游戏在一个N *N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行两种操作:行交换操作:选 ...
- 记一次编译tensorflow-gpu爬过的坑
废话不多说,先说最终成功的版本:系统=>centos7 ,cuda=>10.0 ,cudnn=>7.5 ,nccl=>源码编译, tensorflow=>最新版本源码编译 ...
- 【JSON解析】JSON解析
前三篇博客分别介绍了xml的三种解析方法,分别是SAX,DOM,PULL解析XML,兴趣的朋友可以去看一下这[XML解析(一)]SAX解析XML,[XML解析(二)]DOM解析XML,[XML解析(三 ...
- cloudera上面安装Spark2.0
Cloudera默认值是提供Spark1.6的安装,下面介绍如何来安装spark2.1 1. csd包:http://archive.cloudera.com/spark2/csd/ 2. parce ...
- 【转】 Pro Android学习笔记(五九):Preferences(3):EditText和Ringtone Preference
目录(?)[-] EditText Preferences xml文件 设备的存贮文件 Ringtone Preferences EditText Preferences xml文件 在res/xml ...
- C#自定义控件 ————进度条
先看看样式 一个扇形的进度条 对外公开的方法和属性 事件 value_change;//值改变时触发的事件progress_finshed;//进度条跑完时触发的事件 属性 Max_value//获取 ...
- 问题:C# params类型参数;结果:C#的参数类型:params、out和ref
C#的参数类型:params.out和ref PS:由于水平有限,难免会有错误和遗漏,欢迎各位看官批评和指正,谢谢~ 首先回顾一下C#声明一个方法的语法和各项元素,[]代表可选 [访问修饰符] 返回值 ...
- ES6之箭头函数中的this
在讲箭头函数中的this之前我们先介绍一下普通函数中的this. 普通函数中的this: (1)this指向它的直接调用者 (2)默认的,非严格模式下,没找到直接调用者则指向window ( ...