JS+CSS实现滑动切换tab菜单效果

JS+CSS实现滑动切换tab菜单效果的攻略:

  1. 前端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值。

  1. 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,这样就可以实现对应标签页内容的显示。

  1. 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类,使其突出显示。

  1. 示例说明:
    下面给出两个JS+CSS实现滑动切换tab菜单效果的示例:
    1. 源码地址
    1. 源码地址

这两个示例都采用了相同的HTML结构和CSS样式,但第一个示例在JS中使用了遍历数组进行操作,而第二个示例中直接对对应的标签页进行操作。无论是哪一种方式,都可以实现完美的切换tab菜单的效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS+CSS实现滑动切换tab菜单效果 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 详解CSS3中常用的样式【基本文本和字体样式】

    下面我就来详细讲解 CSS3 中常用的样式基本文本和字体样式,包括字体、文本颜色、文本阴影、文字格式化、文本间距等。 字体 CSS3 中定义字体的方式有多种,其中最常见的为 font-family 属性,它用于指定元素的字体系列。常见的字体系列有 Serif、Sans-Serif、Monospace 等,如果想自定义字体系列,可以使用 @font-face …

    css 2023年6月9日
    00
  • Python selenium根据class定位页面元素的方法

    当使用Selenium在Web页面中定位元素时,有多种方式可以选择。其中定位某个元素的class属性是一种常见的方法。下面是根据class定位页面元素的步骤和代码示例。 步骤 打开Web页面; 使用find_element_by_class_name方法来定位所需的元素; 使用send_keys方法或click方法来操作这个元素。 代码示例 下面是两种不同的…

    css 2023年6月10日
    00
  • IE7.0以下版本列表li中的元素错位一个上一个下的解决方法

    首先介绍一下这个问题的原因:IE7.0以及更低版本的浏览器在处理列表元素(<li>)高度不一致的情况下会出现错位的问题。具体而言,当一个 <li> 元素高度较短,而下一个 <li> 元素高度较高时,两个元素之间的间距会变得比正常情况下大一些。 现在给出两种解决方法: 方法一:使用float来清除浮动 在IE7及以下版本的浏…

    css 2023年6月10日
    00
  • css3+贝塞尔曲线实现可伸缩input搜索框效果

    让我来详细介绍一下“CSS3+贝塞尔曲线实现可伸缩input搜索框效果”的完整攻略。 1. 贝塞尔曲线 在介绍实现搜索框效果之前,我们先来了解一下贝塞尔曲线。 贝塞尔曲线是计算机图形学中广泛使用的一种数学工具,可以通过控制点和曲线的阶数来生成平滑的曲线。 在实现搜索框效果时,我们可以使用贝塞尔曲线来实现输入框的可伸缩效果。 2. 实现搜索框效果 实现搜索框伸…

    css 2023年6月10日
    00
  • CSS对浏览器的兼容性技巧总结

    CSS对浏览器的兼容性技巧总结 在Web开发中,不同的浏览器对CSS的支持程度不同,因此需要开发者采用一些技巧来保证CSS在不同浏览器中的兼容性。本攻略将详细讲解CSS对浏览器的兼容性技巧,包括CSS Hack、CSS Reset、CSS Prefix、CSS Polyfill等。 1. CSS Hack CSS Hack是一种通过针对不同浏览器的特定CSS…

    css 2023年5月18日
    00
  • React使用emotion写css代码

    当我们使用React来构建Web应用程序时,通常使用CSS来美化和布局页面。而使用emotion可以帮助我们更轻松地编写和管理CSS,并将样式与组件紧密耦合。下面我将为你提供完整的React使用emotion写CSS代码的攻略。 安装emotion 首先,我们需要使用npm或yarn安装emotion: npm install –save @emotion…

    css 2023年6月9日
    00
  • IE6无法识别伪对象:first-letter和:first-line解决方法

    首先,需要明确的是IE6无法识别CSS的伪对象:first-letter和:first-line。这两个伪对象在设计中非常常用,因此需要找到解决方法。 以下是两种解决方法的示例说明: 使用JavaScript解决 在IE6中,我们可以使用JavaScript来实现:first-letter和:first-line的样式效果。需要用到的JavaScript代码…

    css 2023年6月10日
    00
  • 详解css中inline-block的最小宽度值

    下面是针对“详解CSS中inline-block的最小宽度值”的完整攻略: 标题 inline-block 的基本特点 inline-block 是 CSS 属性中的一种,它可以让元素像 inline 元素一样排列在文本流中,但是同时又可以具有 block 元素的(box)特点。 在使用 inline-block 的元素中,元素之间有一个非零间距(通常为 4…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部