Jquery制作Tab选项卡菜单(转载)
转载原出处: http://blog.sina.com.cn/s/blog_850223a70100ti4l.html
jquery制作常见的网页tab选项卡菜单的两种方法及思路:
tab选项卡的常见html代码如下:(这几乎也是所有tab选项卡的基本结构)
<div id="tabBox"> <ul> <li class="tabIn">科技</li> //这里的第一个里运用了一个class类,让他区别于其他的li选项 <li>新闻</li> <li>体育</li> <li>财经</li> </ul> <div class="tabCont">科技对应的内容 </div> //这里的第一个div内容也运用了一个class类,使之区别于其他的内容 <div>新闻对应的内容 </div> <div>体育对应的内容 </div> <div>财经对对应的内容 </div> </div>
tab菜单的效果是当鼠标移动到一个li选项卡时,对应的那个div的内容显示出来,而其他的内容是不可见的,所以关键就在于ul后面那个div的操作。第一种思路就是利用css的display属性,设置ul后面所有的div内容全部都是不可见的,只有当鼠标滑过相应的li时,它对应的div才出现。这个通过jquery实现
接下来我们利用css构建基本的样式:
<style> *{ margin:0; padding:0;} body{ font-family:Verdana, Geneva, sans-serif; font-size:14px;} #tabBox { width:420px; margin:30px auto; } #tabBox li{ float:left; width:100px; background:#ccc; color:#09F; height:30px; line-height:30px; text-align:center; cursor:pointer; margin-right:3px; font-weight:bold;} #tabBox li.tabIn{ background:#999;color:#F0F;} #tabBox div{ width:400px; padding: 15px 5px; color:#000; height:135px; clear:left; display:none; background:#999;}//注意这里设置整个容器里的div为不可见的 #tabBox div.tabCont{ display:block;} //注意这里设置只有具有tabCont的div内容才可见
</style>最后的效果如图:
<div id="tabBox"> <ul> <li class="tabIn">科技</li> //这里的第一个里运用了一个class类,让他区别于其他的li选项 <li>新闻</li> <li>体育</li> <li>财经</li> </ul> <div class="tabCont">科技对应的内容 </div> //这里的第一个div内容也运用了一个class类,使之区别于其他的内容 <div>新闻对应的内容 </div> <div>体育对应的内容 </div> <div>财经对对应的内容 </div> </div>
css代码不变:
js代码:
<script src="jquery-1.4.2.min.js"></script> //首先引入jquery.js文件 <script> //接下来是主体部分 $(function (){
menu_li.mouseover(function(){ $(this).addClass("tabIn").siblings().removeClass("tabIn"); //给当前的li增加一个tabIn类,同时让它所有的同级的li不显示 var index=menu_li.index(this); //定义一个变量,获取每次鼠标滑过时候对应的li的索引值; $("#tabBox>div").eq(index).show().siblings().hide(); //找到tabBox下的div,获取相应的索引值,然后然后显示出来,同时让它所有的同级的div不显示 }) }) 做到这里,貌似可以了,但是当我们把鼠标滑动到任意一个li上时,会出现如图的效果:
我通过邮件询问了《锋利的jquery》作者单东林先生。他给我的答复是:
$("#tabBox div").eq(index).show().siblings().hide(); id 为tabbox 里的第index个div显示,同时将它的同级元素隐藏。 因为你的选项卡ul和 div 是同级元素,所以会被隐藏,你可以通过增加div方法来解决这个问题
这个时候才豁然开朗。
所有这里必须要改变一下html结构:
<div id="tabBox"> <ul> <li class="tabIn">科技</li> <li>新闻</li> <li>体育</li> <li>财经</li> </ul> <div id="kk"> //这里嵌套了一个父层div <div class="tabCont">科技对应的内容 </div> <div>新闻对应的内容 </div> <div>体育对应的内容 </div> <div>财经对对应的内容 </div> </div> </div>
css代码:
<style> *{ margin:0; padding:0;} body{ font-family:Verdana, Geneva, sans-serif; font-size:14px;} #tabBox { width:420px; margin:30px auto; } #tabBox li{ float:left; width:100px; background:#ccc; color:#09F; height:30px; line-height:30px; text-align:center; cursor:pointer; margin-right:3px; font-weight:bold;} #tabBox li.tabIn{ background:#999;color:#F0F;} #kk{width:430px; color:#fff; height:135px; overflow:hidden;} #kk div{display:none; background:#999; height:135px;width:400px;padding: 15px 5px;} #kk div.tabCont{ display:block;}
</style>
js代码:
<script src="jquery-1.4.2.min.js"></script> <script> $(function(){ var menu_li=$("#tabBox li"); menu_li.mouseover(function(){ $(this).addClass("tabIn").siblings().removeClass("tabIn"); var index=menu_li.index(this); $("#kk>div").eq(index).show().siblings().hide(); }) })
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律