jQuery选项卡中嵌套选项卡切换效果
jQuery选项卡中嵌套选项卡切换效果
html:
Markup
<div class="wrap">
<ul>
<li class="active">a</li>
<li>b</li>
<li>c</li>
<li>d</li>
</ul>
<div class="cont">
<div class="inner active">
<span>a1</span>
<p>
<a href="javascript:;" class="active">a1</a>
<a href="javascript:;">a2</a>
<a href="javascript:;">a3</a>
<a href="javascript:;">a4</a>
<a href="javascript:;">a5</a>
<a href="javascript:;">a6</a>
</p>
</div>
<div class="inner">
<span>b1</span>
<p>
<a href="javascript:;" class="active">b1</a>
<a href="javascript:;">b2</a>
<a href="javascript:;">b3</a>
<a href="javascript:;">b4</a>
<a href="javascript:;">b5</a>
<a href="javascript:;">b6</a>
</p>
</div>
<div class="inner">
<span>c1</span>
<p>
<a href="javascript:;" class="active">c1</a>
<a href="javascript:;">c2</a>
<a href="javascript:;">c3</a>
<a href="javascript:;">c4</a>
<a href="javascript:;">c5</a>
<a href="javascript:;">c6</a>
</p>
</div>
<div class="inner">
<span>d1</span>
<p>
<a href="javascript:;" class="active">d1</a>
<a href="javascript:;">d2</a>
<a href="javascript:;">d3</a>
<a href="javascript:;">d4</a>
<a href="javascript:;">d5</a>
<a href="javascript:;">d6</a>
</p>
</div>
</div>
</div>
创建样式表文件index.css
CSS
*{
margin: 0;
padding: 0;
list-style: none;
text-decoration: none;
}
.wrap{
width: 800px;
height: 400px;
border: 2px solid blue;
margin: 20px auto;
display: flex;
}
.wrap>ul{
width: 150px;
height: 100%;
}
.wrap>ul li{
height: 100px;
background-color: red;
text-align: center;
line-height: 100px;
color: #fff;
font-size: 30px;
border-bottom: 1px solid blue;
box-sizing: border-box;
}
.wrap>ul .active{
background-color: yellow;
color: #fff;
}
.wrap>.cont{
width: 650px;
height: 400px;
background-color: cadetblue;
position: relative;
}
.wrap>.cont>.inner{
width: 100%;
height: 100%;
box-sizing: border-box;
position: absolute;
top: 0;
left: 0;
display: none;
}
.wrap>.cont>.inner.active{
display: block;
}
.wrap>.cont>.inner>span{
width: 100%;
height: 350px;
line-height: 350px;
background-color: lightgreen;
text-align: center;
font-size: 50px;
color: #fff;
display: inline-block;
}
.wrap>.cont>.inner>p{
display: flex;
}
.wrap>.cont>.inner>p>a{
color: #fff;
background-color: purple;
text-align: center;
line-height: 50px;
flex-grow: 1;
}
.wrap>.cont>.inner>p>a.active{
background-color: #fff;
color: #000;
}
将样式表,引入到index.html文件中,预览效果如下所示:
接着,我们开始写jquery效果,
鼠标滑过底部的a超链接时,类名叫inner的div盒子里的span的内容改变
JavaScript
// 鼠标滑过底部的a超链接时,类名叫inner的div盒子里的span的内容改变
$('.wrap .cont .inner p a').mouseenter(function(){
// 鼠标悬停到当前a超链接时,让其高亮显示;让它的兄弟节点a不要高亮显示
$(this).addClass('active').siblings().removeClass('active');
// 找当前a超链接的父元素p,然后从找父元素p的上一个兄弟节点span
// 把当前a超链接的内容$(this).html() 获取到,放置到父亲的兄弟节点span标签中
$(this).parent().prev().html($(this).html());
})
预览效果如下所示:
接着,我们把 鼠标滑过左侧每个li,显示右侧对应的inner,inner和li下标是一致的
JavaScript
// 鼠标滑过左侧每个li,显示右侧对应的inner,inner和li下标是一致的
// 鼠标滑过左侧ul中的li的时候,右侧对应的显示对应inner中的内容
$('.wrap ul li').mouseenter(function(){
// 获取当前li的索引值
var i = $(this).index();
console.log(i);
// 鼠标悬停到当前li时,让其高亮显示;让它的兄弟节点a不要高亮显示
$(this).addClass('active').siblings().removeClass('active');
// 找当前li的父元素ul的下一个兄弟节点 类名叫.cont的div
// 到这个div中找他的子元素 类名叫.inner的div
// 接着,我们按索引对找 对应的.inner盒子,找到后,给其添加active类,接着找.inner盒子的兄弟,让它的兄弟们不要用这个active类
$(this).parent().next().find('.inner').eq(i).addClass('active').siblings().removeClass('active');
})
预览:
