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 相关文章推荐
JS 控制CSS样式表
Aug 20 Javascript
JavaScript Sort 表格排序
Oct 31 Javascript
在表单提交前进行验证的几种方式整理
Jul 31 Javascript
jquery实现的网页自动播放声音
Apr 30 Javascript
jQuery及JS实现循环中暂停的方法
Feb 02 Javascript
javascript实现复选框选中属性
Mar 25 Javascript
jquery实现模拟百分比进度条渐变效果代码
Oct 29 Javascript
详解AngularJs中$sce与$sceDelegate上下文转义服务
Sep 21 Javascript
JavaScript之cookie技术详解
Nov 18 Javascript
jQuery返回定位插件详解
May 15 jQuery
VeeValidate 的使用场景以及配置详解
Jan 11 Javascript
图解JS原型和原型链实现原理
Sep 15 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
Zend 输出产生XML解析错误
2009/03/03 PHP
PHP编译安装时常见错误解决办法
2015/05/28 PHP
Laravel find in set排序实例
2019/10/09 PHP
Aster vs KG BO3 第一场2.18
2021/03/10 DOTA
浅谈JavaScript中面向对象技术的模拟
2006/09/25 Javascript
extjs 学习笔记(二) Ext.Element类
2009/10/13 Javascript
javascript面向对象编程(一) 实例代码
2010/06/25 Javascript
JavaScript建立一个语法高亮输入框实现思路
2013/02/26 Javascript
图片轮换效果实现代码(点击按钮停止执行)
2013/04/12 Javascript
JS delegate与live浅析
2013/12/21 Javascript
详解 javascript中offsetleft属性的用法
2015/11/11 Javascript
JS禁用页面上所有控件的实现方法(附demo源码下载)
2015/12/17 Javascript
初探nodeJS
2017/01/24 NodeJs
纯jQuery实现前端分页功能
2017/03/23 jQuery
jQuery 循环遍历改变a标签的href(实例讲解)
2017/07/12 jQuery
详解Angular4 路由设置相关
2017/08/26 Javascript
vue实现登陆登出的实现示例
2017/09/15 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
以v-model与promise两种方式实现vue弹窗组件
2018/05/21 Javascript
大转盘抽奖小程序版 转盘抽奖网页版
2020/04/16 Javascript
TypeScript开发Node.js程序的方法
2019/04/30 Javascript
[48:32]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs VG
2018/04/01 DOTA
Python3 操作符重载方法示例
2017/11/23 Python
Python设计模式之策略模式实例详解
2019/01/21 Python
利用python实现AR教程
2019/11/20 Python
解决pycharm上的jupyter notebook端口被占用问题
2019/12/17 Python
Pytorch之view及view_as使用详解
2019/12/31 Python
Python根据URL地址下载文件并保存至对应目录的实现
2020/11/15 Python
css3类选择器之结合元素选择器和多类选择器用法
2017/03/09 HTML / CSS
世界上最大的在线学习和教学市场:Udemy
2017/11/08 全球购物
全世界最美丽的四星和五星级酒店预订:Prestigia.com
2017/11/15 全球购物
问卷调查计划书
2014/01/10 职场文书
寻找成龙观后感
2015/06/12 职场文书
小学四年级作文之最感动的一件事
2019/11/01 职场文书
python状态机transitions库详解
2021/06/02 Python
SpringRetry重试框架的具体使用
2021/07/25 Java/Android