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 相关文章推荐
将json当数据库一样操作的javascript lib
Oct 28 Javascript
多引号嵌套的变量命名的问题
May 09 Javascript
js模仿java的Map集合详解
Jan 06 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
Jan 07 Javascript
JS iFrame加载慢怎么解决
May 13 Javascript
jQuery得到多个值只能用取Class ,不能用取ID的方法
Dec 04 Javascript
微信小程序中使用wxss加载图片并实现动画效果
Aug 13 Javascript
详解vue-cli3使用
Aug 14 Javascript
JS实现百度网盘任意文件强制下载功能
Aug 31 Javascript
Vue 处理表单input单行文本框的实例代码
May 09 Javascript
Webpack 4如何动态切割JS注入文件名详解
Jul 09 Javascript
小程序实现图片移动缩放效果
May 26 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
一步一步学习PHP(4) php 函数 补充2
2010/02/15 PHP
php无限分类且支持输出树状图的详细介绍
2013/06/19 PHP
PHP中的Memcache详解
2014/04/05 PHP
PHP双向链表定义与用法示例
2018/01/31 PHP
jquery动态加载js三种方法实例
2013/08/03 Javascript
js页面跳转的问题(跳转到父页面、最外层页面、本页面)
2013/08/14 Javascript
JS获取文件大小方法小结
2015/12/08 Javascript
JavaScript jQuery 中定义数组与操作及jquery数组操作
2015/12/18 Javascript
js实现一个猜数字游戏
2017/03/31 Javascript
Angularjs 实现动态添加控件功能
2017/05/25 Javascript
laydate 显示结束时间不小于开始时间的实例
2017/08/11 Javascript
react-native-fs实现文件下载、文本存储的示例代码
2017/09/22 Javascript
Vue中的混入的使用(vue mixins)
2018/06/01 Javascript
jQuery实现监听下拉框选中内容发生改变操作示例
2018/07/13 jQuery
AjaxFileUpload.js实现异步上传文件功能
2019/04/19 Javascript
vue 实现动态路由的方法
2020/07/06 Javascript
[44:30]完美世界DOTA2联赛PWL S2 GXR vs Magma 第一场 11.25
2020/11/26 DOTA
Python字符串拼接、截取及替换方法总结分析
2016/04/13 Python
Python调用C++程序的方法详解
2017/01/24 Python
查看django执行的sql语句及消耗时间的两种方法
2018/05/29 Python
Python实现判断一个整数是否为回文数算法示例
2019/03/02 Python
opencv与numpy的图像基本操作
2019/03/08 Python
python从list列表中选出一个数和其对应的坐标方法
2019/07/20 Python
python隐藏类中属性的3种实现方法
2019/12/19 Python
基于python实现语音录入识别代码实例
2020/01/17 Python
pymysql 插入数据 转义处理方式
2020/03/02 Python
Python切片列表字符串如何实现切换
2020/08/06 Python
python statsmodel的使用
2020/12/21 Python
深入解读CSS3中transform变换模型的渲染
2016/05/27 HTML / CSS
巧用HTML5给按钮背景设计不同的动画简单实例
2016/08/09 HTML / CSS
mysql的最长数据库名,表名,字段名可以是多长
2014/04/21 面试题
民主评议党员自我评价材料
2014/09/18 职场文书
2015入党个人自传范文
2015/06/26 职场文书
详细介绍python类及类的用法
2021/05/31 Python
TV动画《神废柴☆偶像》公布先导PV
2022/03/20 日漫
Win10玩csgo闪退如何解决?Win10玩csgo闪退的解决方法
2022/07/23 数码科技