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

yizhihongxing

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日

相关文章

  • CSS实现div不设高度完全居中

    CSS实现div不设高度完全居中的完整攻略主要包括以下几个步骤: 设置父元素为相对定位 .parent { position: relative; } 设置子元素为绝对定位 .child { position: absolute; } 设置子元素的top, left, right, bottom属性为0,并使用margin:auto属性来实现水平和垂直居中 …

    css 2023年6月10日
    00
  • jQuery实现弹窗下底部页面禁止滑动效果

    下面是详细的攻略: 需求描述 在使用弹窗作为页面交互组件的时候,我们通常需要禁止页面在弹窗打开的过程中滑动。本文将介绍使用 jQuery 实现在弹窗弹出的同时禁止页面的滑动,并在弹窗关闭后恢复页面的滑动。 实现思路 实现这个效果主要分为以下两个步骤: 在弹窗弹出的时候,为 body 添加一个 overflow: hidden 样式,并记录当前的滚动位置; 在…

    css 2023年6月10日
    00
  • PHP根据传入参数合并多个JS和CSS文件的简单实现

    以下是“PHP根据传入参数合并多个JS和CSS文件的简单实现”的完整攻略: 1. 前置条件 在开始实现之前,需要先确保以下前置条件已满足: 网站已部署在PHP环境中,并且可以使用PHP的相关函数库; 需要合并的CSS和JS文件已经存在于服务器中,并且可以被脚本访问到; 网站的页面模板中使用了相应的CSS和JS文件,并且可以通过传入参数来指定需要合并的文件。 …

    css 2023年6月9日
    00
  • 利用CSS3在Angular中实现动画

    下面是详细的攻略: 利用CSS3在Angular中实现动画 1. 前置条件 在开始利用CSS3在Angular中实现动画之前,需要确保以下工具和技术已经具备: Angular的基本概念和使用方法 CSS3动画的基本知识和使用方法 2. 新建Angular应用 首先,我们需要新建一个Angular应用。可以使用Angular CLI来快速生成一个基础项目: n…

    css 2023年6月10日
    00
  • jQuery给表格添加分页效果

    下面我将详细讲解如何使用jQuery给表格添加分页效果。 1. 引入jQuery和分页插件 首先,在页面中引入jQuery和分页插件。这里以bootstrap-table插件为例,它是一个基于Bootstrap样式的表格插件,并且可以很方便地实现分页、搜索、排序、导出等功能。 <!– 引入jquery –> <script src=&q…

    css 2023年6月10日
    00
  • css3 flex布局 justify-content:space-between 最后一行左对齐

    当使用css3 flex布局时,可以通过设置justify-content: space-between来使得弹性容器中的子元素在弹性容器内均匀分布,并且在容器的两端留下相等的空白间距。但是,当弹性容器的子元素个数无法充满弹性容器时,最后一行的元素会出现左对齐的问题,而不是空白间距均分。 这种情况下,我们可以通过使用 :last-child 选择器来对最后一…

    css 2023年6月10日
    00
  • CSS的最大高度、最小高度及宽度在IE6下没有效果问题

    在IE6浏览器中,CSS属性的最大高度、最小高度及宽度设置可能无效,这是因为IE6浏览器对这些属性的解释不够准确,无法正确实现。 解决这个问题的方法有两种,具体如下: 方法一:使用IE6专用hack方式 CSS Hack是一种针对特定版本浏览器编写特定样式代码的技巧。在IE6中解决最大高度、最小高度及宽度设置失效的问题,可以使用以下hack方式: /* 最大…

    css 2023年6月10日
    00
  • CSS3点击按钮实现背景渐变动画效果

    CSS3点击按钮实现背景渐变动画效果的步骤如下: 1. 编写HTML代码 首先,我们需要在HTML代码中添加一个按钮元素,示例如下: <button class="btn">点击我</button> 2. 定义CSS样式 然后,在CSS样式文件中,我们需要定义按钮的基本样式,以及按钮被点击时的动画效果。具体步骤如下…

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