JS+CSS实现鼠标滑过时动态翻滚的导航条效果


Posted in Javascript onSeptember 24, 2015

本文实例讲述了JS+CSS实现鼠标滑过时动态翻滚的导航条效果。分享给大家供大家参考。具体如下:

这是一款鼠标悬停时动态翻滚的导航条,注意这里用了两个背景图,请等待网页加载完成或多刷新几次,这个是使用JavaScript实现的,不过代码好像是从jQuery里摘出来的,有点像。

运行效果截图如下:

JS+CSS实现鼠标滑过时动态翻滚的导航条效果

在线演示地址如下:

具体代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>动态翻滚的导航条</title>
<style type="text/css">
.clear:after{content:"."; display:block; height:0; clear:both; visibility:hidden}.clear{display:inline-block}.clear{display:block}
div#nav{height:32px; background:url(images/YL29.jpg) repeat-x}
div#nav ul{
  width:705px;
  list-style:none;
  margin-top: 0;
  margin-right: auto;
  margin-bottom: 0;
  margin-left: 0px;
}
div#nav ul li{
  float:left;
  height:32px;
  overflow:hidden;
  background-image: url(images/YL30.jpg);
  background-repeat: repeat-y;
  background-position: right 0;
  padding-top: 0;
  padding-right: 1px;
  padding-bottom: 0;
  padding-left: 0px;
  font-family: Arial;
  font-size: 12px;
  line-height: 32px;
  font-weight: bold;
}
div#nav ul li a{
  float:left;
  height:100%;
  width: 77px;
  background:url(images/YL28.jpg) repeat-x;
  color:#fff;
  text-decoration:none;
  padding-top: 0;
  padding-right: 5px;
  padding-bottom: 0;
  padding-left: 5px;
  text-align:center;
}
div#nav ul li a.hover{
  clear:both;
  background-position:0 -32px;
  width: 77px;
}
div#nav ul li.on a{
  background-position:0 -32px;
}
div#nav ul li.nobg{background:none}
/* ]]> */
</style>
</head>
<body>
<div id="nav">
<ul class="clear">
<li><a href="#">三水点靠木</a></li>
<li><a href="#">网页特效</a></li>
<li><a href="#">工具软件</a></li>
<li><a href="#">脚本下载</a></li>
<li><a href="#">菜单导航</a></li>
<li><a href="#">层和布局</a></li>
<li><a href="#">论坛社区</a></li>
<li><a href="#">广告联系</a></li>
<li class="nobg"></li>
</ul>
</div>
<script type="text/javascript"> 
/* <![CDATA[ */
function nav(c, config){
  this.config = config || {speed: 10, num: 2};
  this.container = (typeof(c)=="object") ? c : document.getElementById(c);
  this.lineHeight = this.container.offsetHeight;
  this.scrollTimeId = null;
  var _this = this;  
  this.__construct = function (){
    var inner,el,href;
    inner = _this.container.childNodes[0].innerHTML;
    href = _this.container.childNodes[0].href;
    el = document.createElement("a");
    el.innerHTML = inner;
    el.href = href;
    el.className = 'hover';
    _this.container.appendChild(el);
    _this.container.onmouseover = function (){_this.start()};
    _this.container.onmouseout = function (){_this.end()};
  }();
  this.start = function (){
    _this.clear();
    _this.scrollTimeId = setTimeout(function(){_this.scrollUp();}, _this.config.speed);
  };
  this.end = function (){
    _this.clear();
    _this.scrollTimeId = setTimeout(function(){_this.scrollDown();}, _this.config.speed);
  };
  this.scrollUp = function (){
    var c = _this.container;  
    if(c.scrollTop >= _this.lineHeight){c.scrollTop = _this.lineHeight;return;}
    c.scrollTop += _this.config.num;
    _this.scrollTimeId = setTimeout(function(){_this.scrollUp();}, _this.config.speed);
  };
  this.scrollDown = function (){
    var c = _this.container;
    
    if(c.scrollTop <= 0){c.scrollTop = 0;return;}
    c.scrollTop -= _this.config.num;
    _this.scrollTimeId = setTimeout(function(){_this.scrollDown();}, _this.config.speed);
  };
  this.clear = function (){clearTimeout(_this.scrollTimeId)};
}
(function(){
  var container = document.getElementById('nav');
  var el_li = container.getElementsByTagName('li');
  var arr = [];
  for( var i = 0; i < el_li.length; i++){
    if(el_li[i].className == 'on') continue;
    arr[i] = new nav(el_li[i], {speed: 10, num: 4});
  }
})
();
/* ]]> */
</script>
</body>
</html>

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

Javascript 相关文章推荐
javascript 点击整页变灰的效果(可做退出效果)。
Jan 09 Javascript
为jquery的ajaxfileupload增加附加参数的方法
Mar 04 Javascript
js使用html()或text()方法获取设置p标签的显示的值
Aug 01 Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
Nov 06 Javascript
AngularJS 输入验证详解及实例代码
Jul 28 Javascript
微信小程序 textarea 组件详解及简单实例
Jan 10 Javascript
D3.js实现简洁实用的动态仪表盘的示例
Apr 04 Javascript
给localStorage设置一个过期时间的方法分享
Nov 06 Javascript
微信小程序按钮点击跳转页面详解
May 06 Javascript
vue-router两种模式区别及使用注意事项详解
Aug 01 Javascript
在Vue项目中使用Typescript的实现
Dec 19 Javascript
javascript canvas封装动态时钟
Sep 30 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
Sep 24 #Javascript
JS+CSS实现简易的滑动门效果代码
Sep 24 #Javascript
JS实现网站菜单拖拽移位效果的方法
Sep 24 #Javascript
jQuery实现的经典竖向伸缩菜单效果代码
Sep 24 #Javascript
JS+CSS实现经典的左侧竖向滑动菜单效果
Sep 23 #Javascript
直接拿来用的15个jQuery代码片段
Sep 23 #Javascript
JS实现漂亮的淡蓝色滑动门效果代码
Sep 23 #Javascript
You might like
Windows下php+mysql5.7配置教程
2017/05/16 PHP
thinkphp框架使用JWTtoken的方法详解
2019/10/10 PHP
js中判断数字\字母\中文的正则表达式 (实例)
2012/06/29 Javascript
div浮层,滚动条移动,位置保持不变的4种方法汇总
2013/12/11 Javascript
js的正则test,match,exec详细解析
2014/01/29 Javascript
Javascript中实现trim()函数的两种方法
2015/02/04 Javascript
详细分析Javascript中创建对象的四种方式
2016/08/17 Javascript
js获取form表单所有数据的简单方法
2016/08/18 Javascript
Seajs是什么及sea.js 由来,特点以及优势
2016/10/13 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
2017/02/14 Javascript
深究AngularJS之ui-router详解
2017/06/13 Javascript
使用travis-ci如何持续部署node.js应用详解
2017/07/30 Javascript
JQuery 获取多个select标签option的text内容(实例)
2017/09/07 jQuery
Vue实现简易计算器
2020/02/25 Javascript
vue自动添加浏览器兼容前后缀操作
2020/08/13 Javascript
Openlayers实现测量功能
2020/09/25 Javascript
[03:17]2014DOTA2 国际邀请赛中国区预选赛 四强专访
2014/05/23 DOTA
Python创建对称矩阵的方法示例【基于numpy模块】
2017/10/12 Python
基于python实现名片管理系统
2018/11/30 Python
python用win32gui遍历窗口并设置窗口位置的方法
2019/07/26 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
2019/08/02 Python
opencv-python 提取sift特征并匹配的实例
2019/12/09 Python
python 实现PIL模块在图片画线写字
2020/05/16 Python
python如何爬取网页中的文字
2020/07/28 Python
python获得命令行输入的参数的两种方式
2020/11/02 Python
python解包概念及实例
2021/02/17 Python
国际旅客访问北美最大的汽车租赁提供商:Alamo Rent A Car
2018/06/13 全球购物
企业年度评优方案
2014/06/02 职场文书
学校安全责任书范本
2014/07/23 职场文书
旷工辞退通知书
2015/04/17 职场文书
小学少先队活动总结
2015/05/08 职场文书
2016年教师新年寄语
2015/08/18 职场文书
《跨越海峡的生命桥》教学反思
2016/02/18 职场文书
员工试用期工作总结
2019/06/20 职场文书
解决Windows Server2012 R2 无法安装 .NET Framework 3.5
2022/04/29 Servers
Java处理延时任务的常用几种解决方案
2022/06/01 Java/Android