JS实现带缓动动画的导航栏效果
作者:交互手记时间:2026-10-21 20:25:08浏览:428
本文介绍如何使用JavaScript结合CSS实现带有缓动效果的导航栏。通过动态计算位置并应用过渡属性,使导航项切换时产生平滑的动画效果,提升用户体验。
JS实现带缓动动画的导航栏效果
接下来展示具体的实现代码。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<style type="text/css">
ul,li { padding: 0; margin: 0; }
li { list-style: none; }
#box{
height: 48px;
width: 900px;
background-color: #459DF5;
margin: 50px auto;
position: relative;
}
#caution {
width: 150px;
height: 48px;
background-color: #4B92D8;
position: absolute;
top: 0;
left: 0;
}
#list {
position: absolute;
}
#list li {
width: 150px;
height: 48px;
float: left;
color: #fff;
font: 500 20px/48px "微软雅黑";
text-align: center;
cursor: pointer;
}
</style>
<script type="text/javascript">
window.onload = function(){
//获取ul ID
var oUl = document.getElementById("list");
// 获取span ID
var caution = document.getElementById("caution");
//获取ul 所有孩子
var aLi = oUl.children;
//定时器管理
var timer = null;
//缓动
var leader = 0;
var target = 0;
//停留
var current = 0;
for(var i = 0;i<aLi.length;i++){
//鼠标移动
aLi[i].onmouseover = function(){
//关闭定时器
clearInterval(timer);
//获取当前的left值
target = this.offsetLeft;
//开启定时器
timer = setInterval(autoCaution,20);
}
//鼠标点击
aLi[i].onmousedown = function(){
//清楚所有高亮的文字
for(var j = 0;j<aLi.length;j++){
aLi[j].style.color = "#fff";
}
//当前点击栏变为红色
this.style.color = "#ccc";
//提示框
current = this.offsetLeft;
caution.style.left = current+"px";
}
}
//鼠标离开
oUl.onmouseout = function(){
//关闭定时器
clearInterval(timer);
target = current;
timer = setInterval(autoCaution,20);
}
//缓动动画
function autoCaution(){
leader = leader +(target - leader) /10;
caution.style.left = leader+"px";
}
}
</script>
</head>
<body>
<div id="box">
<span id="caution"></span>
<ul id="list">
<li>首页</li>
<li>公司简介</li>
<li>企业文化</li>
<li>招贤纳士</li>
<li>企业论坛</li>
</ul>
</div>
</body>
</html>
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持本站!
作者最新文章
JS怎么实现页面强制刷新
2026-11-05 14:53:38
点击JS链接直接运行不下载?前端实现.js文件强制下载的三种方法
2026-11-05 12:12:23
怎么封装一个通用的JS创建元素辅助函数
2026-11-05 11:41:41
Swiper.js 怎么监听滑动结束并获取当前索引
2026-11-05 10:57:15
HTML、CSS和JS的关系:Web前端三件套怎么协作
2026-11-04 15:41:40
