JS+CSS实现鼠标悬停动态翻滚导航条
作者:页面旅途时间:2026-10-29 14:58:58浏览:269
本文介绍如何使用JavaScript与CSS结合实现鼠标悬停时动态翻滚的导航条效果。通过加载两个背景图,利用JavaScript控制动画,实现流畅的交互体验。
JS+CSS实现鼠标悬停动态翻滚导航条
本文分享一个使用JavaScript和CSS实现的鼠标悬停时动态翻滚的导航条效果,供读者参考。
该导航条在鼠标悬停时会产生动态翻滚效果,使用了两个背景图。请注意等待网页加载完成或多次刷新页面以查看完整效果。此效果由JavaScript实现,代码风格类似于jQuery。
运行效果截图如下:

在线演示地址如下:
http://demo.jb51.net/js/2015/js-css-mouse-over-nav-scroll-style-codes/
具体代码如下:
<!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程序设计有所帮助。
作者最新文章
JS监听滚动事件:回到顶部按钮的显示与隐藏逻辑
2026-11-05 16:19:37
JavaScript怎么读写LocalStorage与SessionStorage
2026-11-05 15:40:11
anime.js 与 GSAP 对比:轻量级项目该怎么选择动画库
2026-11-05 11:24:55
flv.js 与 hls.js 在直播场景下的选型对比
2026-11-05 08:18:52
JavaScript能做什么?前端开发中的作用与应用场景解析
2026-11-04 23:17:54
