JS+CSS实现滑动切换tab菜单效果的攻略:
- 前端HTML结构设计:
首先在HTML页面中,需要定义一个具有一定宽度的容器,用于承载tab菜单和对应的内容项。在该容器中,使用无序列表添加tab菜单项,并在li内添加标签页的名称等内容。同时,在该容器中添加对应的内容项,使用具有相同class的div元素作为内容项的容器,并在其内添加对应的标签页内容。具体的HTML结构示例如下所示:
<div class="tabs-container">
<ul class="tabs-menu">
<li class="active"><a href="#tabs-1">Tab 1</a></li>
<li><a href="#tabs-2">Tab 2</a></li>
<li><a href="#tabs-3">Tab 3</a></li>
</ul>
<div id="tabs-1" class="tab-content active">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus auctor justo vel metus commodo, ac pretium massa placerat. Morbi sapien mauris, condimentum nec orci vel, feugiat laoreet elit. In in tempor enim.</p>
</div>
<div id="tabs-2" class="tab-content">
<p>Ut fringilla in ex nec iaculis. Pellentesque ut lectus vel eros iaculis porttitor. Donec nulla urna, efficitur sit amet volutpat sit amet, pretium eu ante. Aliquam consequat leo vel lacinia iaculis.</p>
</div>
<div id="tabs-3" class="tab-content">
<p>Sed porttitor molestie enim a facilisis. Integer ac rutrum quam, non bibendum lacus. Sed malesuada magna auctor, blandit metus vel, bibendum leo. Nulla a sapien malesuada, consequat tellus eget, egestas lacus.</p>
</div>
</div>
在这里,.tabs-container
作为容器的class值,.tabs-menu
和.tab-content
作为菜单列表和内容项的class值。
- CSS样式设置
在HTML页面中创建好菜单项和内容项容器后,需要将样式设置好。主要用到flex布局和定位属性,具体CSS代码如下:
.tabs-container{
width: 100%;
display: flex;
flex-direction: column;
}
.tabs-menu{
list-style: none;
padding: 0;
margin: 0;
display: flex;
justify-content: space-evenly;
}
.tabs-menu li{
padding: 10px 15px;
cursor: pointer;
border-radius: 0 0 5px 5px;
}
.tabs-menu li.active{
background-color: #007bc7 !important;
color: #FFFFFF;
position: relative;
}
.tab-content{
display: none;
}
.tab-content.active{
display: block;
}
在这里,我们为.tabs-container采用flex布局,设为纵向排列。接着对.tabs-menu设置了样式:设定更加美观的对齐方式、去除原来的圆点效果并去掉父元素左边距。同时,对于每一个li元素,设置了点击鼠标指针的手势和一定的圆角,以增加美感。对于选定的菜单项,我们使用了背景色和文字颜色的变化,并设置其active状态,以此区别出选定和未选定的标签页。在样式的最后,我们对.tab-content设置了display为none,隐藏内容项。而对于选定的.tab-content元素,使用了.active状态,将其display设为block,这样就可以实现对应标签页内容的显示。
- JS实现效果
在HTML和CSS的基础上,使用JS实现切换标签页的效果。我们需要响应鼠标的点击动作,并根据点击的事件实现内容项的滑动切换效果。实现代码如下:
const tabLinks = document.querySelectorAll(".tabs-menu a");
const tabContent = document.querySelectorAll(".tab-content");
const firstContent = document.querySelector(".tab-content:first-child");
firstContent.classList.add("active");
tabLinks.forEach((eachLink) => {
eachLink.addEventListener("click", (e) => {
e.preventDefault();
const currentLink = e.target.getAttribute("href");
const currentTab = document.querySelector(currentLink);
tabContent.forEach((eachTab) => {
eachTab.classList.remove("active");
});
tabLinks.forEach((eachLink) => {
eachLink.classList.remove("active");
});
currentTab.classList.add("active");
eachLink.classList.add("active");
});
});
这个代码块完成了以下三个步骤:
+ 首先,选择所有的菜单项和内容项,并将第一个内容项设置为“active”状态。
+ 然后,为tabLinks中的每个链接元素添加click事件,并在点击时进行操作,包括删除所有的.tab-content.active类和.tabs-menu li.active类,以确保没有其他标签被选中。
+ 最后,将当前标签页与对应的菜单项添加.active类,使其突出显示。
这两个示例都采用了相同的HTML结构和CSS样式,但第一个示例在JS中使用了遍历数组进行操作,而第二个示例中直接对对应的标签页进行操作。无论是哪一种方式,都可以实现完美的切换tab菜单的效果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS+CSS实现滑动切换tab菜单效果 - Python技术站