Other_1.利用JS伸缩变动导航栏宽度的效果。

本文介绍了一种使用JavaScript实现的导航栏伸缩效果。通过鼠标悬停和离开事件,可以使导航栏项宽度动态变化。但存在快速切换时显示不流畅的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

该教程是我从慕课网上学习到的,觉得对初学JS有比较好的帮助。这是利用JS的循环语句和鼠标经过、鼠标离开时间写的。但是有一个BUG就是,效果不够流畅,当用户快速在导航栏之间切换的时候,很容易会出现文字变成竖型排列,而不是横向排列。

<html>  

 <head>  

 <meta charset="utf-8">  

 <title>JS伸缩变动导航栏效果</title>  

 <style>  

 *{margin: 0;padding: 0;text-decoration: none;list-style: none;}  

 nav{width: 100%;height: 40px;border-bottom: 10px solid #FC751B;}  

 nav ul{margin:20px 0 0 20px;width: 800px;}  

 nav ul li{float: left;height: 40px;margin-right: 5px;background: #EAEAEA;line-height: 30px;}  

 nav ul li a{display: block;width: 120px;height: 30px;color:#000;text-align: center;padding:5px 0}  

 nav ul li a:hover{background: #FC751B;color:#fff;}  

   </style>  

 <script>  

 window.onload=function () {  

 var aA=document.getElementsByTagName('a');  

 for(var i=0;i<aA.length;i++)  

 {  

 aA[i].onmouseover=function(){  

 clearInterval(this.time);  

 var This = this;  

 This.time=setInterval(function(){  

 This.style.width=This.offsetWidth+8+"px";  

 if (This.offsetWidth>=160) {  

 clearInterval(This.time);  

 }  

 },30)  

 }  

   aA[i].onmouseout=function(){  

 clearInterval(this.time);  

 var This = this;  

 This.time=setInterval(function(){  

 This.style.width=This.offsetWidth-8+"px";  

 if (This.offsetWidth<=120) {  

 This.offsetWidth="120px";  

 clearInterval(This.time);  

 }  

 },30)  

 }  

 }  

 }  

 </script> 

 </head>  

 <body>  

 <div class="box">  

 <nav>  

 <ul>  

 <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>  

 </ul>  

 </nav>  

 </div>  

 </body>  

 </html> 

原状态:


变动效果:鼠标所碰到的导航栏会被撑开


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值