项目中经常会用到 tab 切换功能,有的还会有一个 更多 按钮,我们可以用下面这个方法实现一个多功能的 tab 切换。
效果图:不好看,请见谅。

HTML:
<div class="box"> <div class="cat-tab"> <span class="tab on">tab1</span> <span class="tab">tab2</span> <div class="more"> <a href="">更多a></a> <a href="" style="display: none">更多b></a> </div> </div> <ul class="list-box active"> <li>这是一段文字这是一段文字</li> <li>这是一段文字这是一段文字</li> <li>这是一段文字这是一段文字</li> <li>这是一段文字这是一段文字</li> <li>这是一段文字这是一段文字</li> <li>这是一段文字这是一段文字</li> </ul> <ul class="list-box"> <li>这是一段文字这是一段文字2</li> <li>这是一段文字这是一段文字2</li> <li>这是一段文字这是一段文字2</li> <li>这是一段文字这是一段文字2</li> <li>这是一段文字这是一段文字2</li> <li>这是一段文字这是一段文字2</li> </ul> </div>
CSS:
*{
padding: 0;
margin: 0;
box-sizing: border-box;
}
.box{
width: 500px;
margin: 20px auto;
background: #eee;
border: 1px solid #999;
}
.cat-tab{
padding-left: 10px;
height: 40px;
border-bottom: 3px solid #00b0f0;
}
.tab{
display: inline-block;
width: 50px;
height: 30px;
line-height: 30px;
text-align: center;
margin-top: 10px;
float: left;
}
.tab.on{
background: #00b0f0;
color: #FFF;
}
.list-box{
list-style: none;
padding: 10px;
display: none;
}
.list-box.active{
display: block;
}
.list-box li{
line-height: 26px;
}
.more{
float: right;
padding-top: 10px;
padding-right: 10px;
}
.more a{
text-decoration: none;
color: #666;
}
JS:注意需要jQuery支持
$(document).ready(function () {
var $tab_li = $('.cat-tab .tab');
$tab_li.click(function () {
$(this).addClass('on').siblings().removeClass('on');
var index = $tab_li.index(this);
$('.list-box').eq(index).addClass("active").siblings().removeClass("active");
$('.more a').eq(index).show().siblings().hide();
});
});
siblings() 获得匹配集合中每个元素的同胞,通过选择器进行筛选是可选的。
语法:
.siblings(selector)
实例:
$("p").siblings(".selected")
原创文章,作者:306829225,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/231229.html