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 getComputedStyle获取和设置style的原理
Oct 10 Javascript
JavaScript+CSS实现的可折叠二级菜单实例
Feb 29 Javascript
javascript中的后退和刷新实现方法
Nov 10 Javascript
常用原生js自定义函数总结
Nov 20 Javascript
JS出现失效的情况总结
Jan 20 Javascript
JavaScript 事件对内存和性能的影响
Jan 22 Javascript
JS文件/图片从电脑里面拖拽到浏览器上传文件/图片
Mar 08 Javascript
JS实现的杨辉三角【帕斯卡三角形】算法示例
Feb 26 Javascript
微信小程序JS加载esmap地图的实例详解
Sep 04 Javascript
javascript用defineProperty实现简单的双向绑定方法
Apr 03 Javascript
JS如何定义用字符串拼接的变量
Jul 11 Javascript
Vue——前端生成二维码的示例
Dec 19 Vue.js
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中的Session和Cookie
2013/06/21 PHP
完善CodeIgniter在IDE中代码提示功能的方法
2014/07/19 PHP
使用Composer安装Yii框架的方法
2016/03/15 PHP
php 实现301重定向跳转实例代码
2016/07/18 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
JavaScript获得选中文本内容的方法
2008/12/02 Javascript
JS的get和set使用示例
2014/02/20 Javascript
JQuery插件jcarousellite的参数中文说明
2015/05/11 Javascript
不得不分享的JavaScript常用方法函数集(下)
2015/12/25 Javascript
JS实现回到页面顶部动画效果的简单实例
2016/05/24 Javascript
JavaScript简单生成 N~M 之间随机数的方法
2017/01/13 Javascript
js以及jquery实现手风琴效果
2020/04/17 Javascript
JavaScript设计模式之单例模式简单实例教程
2018/07/02 Javascript
移动端滑动切换组件封装 vue-swiper-router实例详解
2018/11/25 Javascript
实例详解vue中的$root和$parent
2019/04/29 Javascript
JS实现长图上下滚动效果
2020/03/19 Javascript
JavaScript创建表格的方法
2020/04/13 Javascript
openlayers实现地图测距测面
2020/09/25 Javascript
使用Python对SQLite数据库操作
2017/04/06 Python
Python内置函数delattr的具体用法
2017/11/23 Python
Python实现替换文件中指定内容的方法
2018/03/19 Python
使用Matplotlib 绘制精美的数学图形例子
2019/12/13 Python
Python实现链表反转的方法分析【迭代法与递归法】
2020/02/22 Python
Python如何使用队列方式实现多线程爬虫
2020/05/12 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
2020/05/22 Python
查找适用于matplotlib的中文字体名称与实际文件名对应关系的方法
2021/01/05 Python
StubHub哥伦比亚:购买和出售您的门票
2016/10/20 全球购物
香港草莓网:Strawberrynet香港
2019/05/10 全球购物
本科生学习总结的自我评价
2013/10/02 职场文书
2014教师党员个人自我评议
2014/09/20 职场文书
2015年幼儿园新年寄语
2014/12/08 职场文书
同学聚会通知短信
2015/04/20 职场文书
小学大队干部竞选稿
2015/11/20 职场文书
Python文件的操作示例的详细讲解
2021/04/08 Python
tensorflow中的数据类型dtype用法说明
2021/05/26 Python
关于html选择框创建占位符的问题
2021/06/09 HTML / CSS