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 相关文章推荐
编写高效jQuery代码的4个原则和5个技巧
Apr 24 Javascript
Javascript检查图片大小不要让大图片撑破页面
Nov 04 Javascript
jQuery插件jRumble实现网页元素抖动
Jun 05 Javascript
JS实现自定义简单网页软键盘效果代码
Nov 05 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
Oct 31 Javascript
Bootstrap导航条鼠标悬停下拉菜单
Jan 04 Javascript
javascript history对象详解
Feb 09 Javascript
jQuery.ajax向后台传递数组问题的解决方法
May 12 jQuery
Vue.js递归组件构建树形菜单
Dec 24 Javascript
Angular实现搜索框及价格上下限功能
Jan 19 Javascript
js动态添加表格逐行添加、删除、遍历取值的实例代码
Jan 25 Javascript
jquery实现联想词搜索框和搜索结果分页的示例
Oct 10 jQuery
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
PHP生成随机密码类分享
2014/06/25 PHP
Laravel 5框架学习之用户认证
2015/04/09 PHP
PHP简单实现数字分页功能示例
2016/08/24 PHP
PHP面向对象程序设计组合模式与装饰模式详解
2016/12/02 PHP
PHP7变量处理机制修改
2021/03/09 PHP
用js判断浏览器是否是IE的比较好的办法
2007/05/08 Javascript
JQuery 选择器、过滤器介绍
2011/02/14 Javascript
js弹出框轻量级插件jquery.boxy使用介绍
2013/01/15 Javascript
改变文件域的样式实现思路同时兼容ie、firefox
2013/10/23 Javascript
js中opener与parent的区别详细解析
2014/01/14 Javascript
自编jQuery插件实现模拟alert和confirm
2014/09/01 Javascript
JS 对象属性相关(检查属性、枚举属性等)
2015/04/05 Javascript
微信小程序 二维码canvas绘制实例详解
2017/01/06 Javascript
在node中如何使用 ES6
2017/04/22 Javascript
利用jsonp与代理服务器方案解决跨域问题
2017/09/14 Javascript
浅谈JS对象添加getter与setter的5种方法
2018/06/09 Javascript
Node.js 获取微信JS-SDK CONFIG的方法示例
2019/05/21 Javascript
详解nvm管理多版本node踩坑
2019/07/26 Javascript
[09:22]2014DOTA2西雅图国际邀请赛 主赛事第二日TOPPLAY
2014/07/21 DOTA
python批量修改图片后缀的方法(png到jpg)
2018/10/25 Python
利用python如何在前程无忧高效投递简历
2019/05/07 Python
python 基于卡方值分箱算法的实现示例
2020/07/17 Python
python获取整个网页源码的方法
2020/08/03 Python
英国最大的婴儿监视器网上商店:Baby Monitors Direct
2018/04/24 全球购物
打造完美自荐信
2014/01/24 职场文书
项目总经理岗位职责
2014/02/14 职场文书
免职证明样本
2014/10/23 职场文书
预备党员转正材料
2014/12/19 职场文书
自主招生自荐信格式范文
2015/03/25 职场文书
2015年学生会部门工作总结
2015/04/21 职场文书
2016学习雷锋精神活动倡议书
2015/04/27 职场文书
《地震中的父与子》教学反思
2016/02/16 职场文书
《草虫的村落》教学反思
2016/02/20 职场文书
广播稿:校园广播稿范文
2019/04/17 职场文书
matplotlib之pyplot模块实现添加子图subplot的使用
2021/04/25 Python
pytorch 如何把图像数据集进行划分成train,test和val
2021/05/31 Python