js实现选项卡内容切换以及折叠和展开效果【推荐】

下面我会为你详细讲解"js实现选项卡内容切换以及折叠和展开效果"的实现方法。

一、实现选项卡切换

选项卡切换是网站中常见的交互效果,下面是实现选项卡切换的步骤:

  1. html代码中添加需要切换的内容,每一个选项卡对应一个内容区域,为每一个选项卡和内容区域添加相应的id,如下:
<div class="tab">
  <ul class="tab-nav">
    <li class="active" data-tab="tab1">选项卡1</li>
    <li data-tab="tab2">选项卡2</li>
    <li data-tab="tab3">选项卡3</li>
  </ul>
  <div class="tab-content">
    <div id="tab1" class="active">内容1</div>
    <div id="tab2">内容2</div>
    <div id="tab3">内容3</div>
  </div>
</div>
  1. css代码中设置样式:
.tab-nav li.active {
    background-color: #fff;
}
.tab-content div {
    display: none;
}
.tab-content div.active {
    display: block;
}
  1. js代码中添加事件监听,切换选项卡时添加和删除相应class,使选项卡和内容区域显示或隐藏:
var tabs = document.querySelectorAll('.tab-nav li');
for(var i = 0;i < tabs.length; i++) {
    tabs[i].addEventListener('click', function(ev){
        var tab = ev.target.dataset.tab;
        var content = document.getElementById(tab);
        var currentTab = document.querySelector('.tab-nav li.active');
        var currentContent = document.querySelector('.tab-content div.active');
        currentTab.classList.remove('active');
        currentContent.classList.remove('active');
        ev.target.classList.add('active');
        content.classList.add('active');
    })
}

二、实现 折叠和展开效果

折叠和展开效果是网站中常见的交互效果,下面是实现折叠和展开效果的步骤:

  1. html代码中添加需要折叠和展开的内容,为每一个需要折叠和展开的元素添加相应的class和data属性,如下:
<div class="accordion">
  <div class="accordion-header" data-accordion="accordion1">标题1</div>
  <div class="accordion-body" data-accordion="accordion1">内容1</div>
  <div class="accordion-header" data-accordion="accordion2">标题2</div>
  <div class="accordion-body" data-accordion="accordion2">内容2</div>
</div>
  1. css代码中设置样式:
.accordion .accordion-header {
    cursor: pointer;
}
.accordion .accordion-body {
    display: none;
}
.accordion .accordion-body.active {
    display: block;
}
  1. js代码中添加事件监听,点击标题时添加和删除相应class,使内容区域展开或折叠:
var headers = document.querySelectorAll('.accordion-header');
for(var i = 0;i < headers.length; i++) {
    headers[i].addEventListener('click', function(ev){
        var accordion = ev.target.dataset.accordion;
        var body = document.querySelector('.accordion-body[data-accordion="' + accordion + '"]');
        body.classList.toggle('active');
    })
}

这样就完成了选项卡切换和折叠展开效果的实现。

下面是一个选项卡切换和一个折叠展开效果的示例代码:

<div class="tab">
  <ul class="tab-nav">
    <li class="active" data-tab="tab1">选项卡1</li>
    <li data-tab="tab2">选项卡2</li>
    <li data-tab="tab3">选项卡3</li>
  </ul>
  <div class="tab-content">
    <div id="tab1" class="active">内容1</div>
    <div id="tab2">内容2</div>
    <div id="tab3">内容3</div>
  </div>
</div>

<div class="accordion">
  <div class="accordion-header" data-accordion="accordion1">标题1</div>
  <div class="accordion-body" data-accordion="accordion1">内容1</div>
  <div class="accordion-header" data-accordion="accordion2">标题2</div>
  <div class="accordion-body" data-accordion="accordion2">内容2</div>
</div>

<!-- css代码 -->
<style>
.tab-nav li.active {
    background-color: #fff;
}
.tab-content div {
    display: none;
}
.tab-content div.active {
    display: block;
}
.accordion .accordion-header {
    cursor: pointer;
}
.accordion .accordion-body {
    display: none;
}
.accordion .accordion-body.active {
    display: block;
}
</style>

<!-- js代码 -->
<script type="text/javascript">
var tabs = document.querySelectorAll('.tab-nav li');
for(var i = 0;i < tabs.length; i++) {
    tabs[i].addEventListener('click', function(ev){
        var tab = ev.target.dataset.tab;
        var content = document.getElementById(tab);
        var currentTab = document.querySelector('.tab-nav li.active');
        var currentContent = document.querySelector('.tab-content div.active');
        currentTab.classList.remove('active');
        currentContent.classList.remove('active');
        ev.target.classList.add('active');
        content.classList.add('active');
    })
}

var headers = document.querySelectorAll('.accordion-header');
for(var i = 0;i < headers.length; i++) {
    headers[i].addEventListener('click', function(ev){
        var accordion = ev.target.dataset.accordion;
        var body = document.querySelector('.accordion-body[data-accordion="' + accordion + '"]');
        body.classList.toggle('active');
    })
}
</script>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js实现选项卡内容切换以及折叠和展开效果【推荐】 - Python技术站

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

相关文章

  • CSS实现鼠标移入时图片的放大效果及缓慢过渡效果的示例代码

    实现鼠标移入时图片的放大效果及缓慢过渡效果需要用到CSS的transform和transition属性。以下是具体的步骤: 在HTML中,需要用标签嵌入图片。例如: <img src="example.jpg" alt="example image"> 为这个标签添加CSS样式。首先,需要设置img标签的w…

    css 2023年6月10日
    00
  • CSS教程:彻底弄懂闭合浮动元素

    针对“CSS教程:彻底弄懂闭合浮动元素”这个主题,我来为大家进行详细讲解,这个教程中我们主要了解如何使用CSS来关闭浮动元素,防止浮动元素对后续元素产生影响。 为什么要关闭浮动元素 在HTML中,我们常常使用浮动元素来进行布局,这是一种非常高效的布局方式,可以实现页面的各种结构和效果。但是,如果不正确地使用浮动,就会产生一些问题,如: 浮动元素会对其他元素产…

    css 2023年6月10日
    00
  • vue实现移动端项目多行文本溢出省略

    接下来我将详细讲解如何使用Vue实现移动端项目多行文本溢出省略。 一、概述 在移动端项目中,由于移动设备屏幕的限制,经常需要对多行文本进行溢出处理,并用省略号代替多余的文本。此时,我们可以通过CSS的overflow属性和文本溢出处理相关的text-overflow属性来实现,但对于动态生成的文本,或者需要根据不同的设备屏幕大小自适应溢出省略处理时,CSS方…

    css 2023年6月9日
    00
  • css3的@media属性实现页面响应式布局示例代码

    我会详细讲解一下“CSS3的@media属性实现页面响应式布局示例代码”的完整攻略。 什么是响应式布局? 响应式布局是一种基于CSS3媒体查询(Media Queries)的技术,通过检测设备类型、分辨率等属性,调整网页布局和样式,实现不同设备下展现不同的效果。其目的是为了让网页在PC端、平板端和手机端等设备上都能够获得更流畅、更美观的用户体验。 响应式布局…

    css 2023年6月10日
    00
  • jQuery过滤选择器经典应用

    接下来我将详细讲解“jQuery过滤选择器经典应用”的完整攻略。 一、什么是jQuery过滤选择器 jQuery过滤选择器是指根据一定的条件对HTML元素进行过滤筛选,最终获得需要的元素。过滤选择器一般用于从匹配元素集合中筛选出符合特定条件的元素,可以帮助我们更快地定位需要的元素,提高代码效率。 常用的jQuery过滤选择器有以下几种: 过滤选择器 说明 :…

    css 2023年6月10日
    00
  • JS+CSS实现Li列表隔行换色效果的方法

    下面是JS+CSS实现Li列表隔行换色效果的方法完整攻略。 1. 使用CSS的nth-child选择器 CSS中可以使用:nth-child选择器来选择列表中的每一个元素,可以通过设置对应的颜色来实现隔行换色的效果。 首先,在样式表中添加以下代码: li:nth-child(even) { background-color: #f2f2f2; } li:nt…

    css 2023年6月10日
    00
  • js+css实现回到顶部按钮(back to top)

    实现回到顶部按钮(back to top)的方法有很多种,其中一种使用js+css来实现。以下是实现该功能的详细步骤: 第一步:创建HTML结构 首先我们需要在HTML中创建一个按钮元素,并给它一个ID,例如: <button id="back-to-top">返回顶部</button> 第二步:添加CSS样式 接…

    css 2023年6月10日
    00
  • 网站建设中一些容易被忽视的问题

    网站建设是一个非常复杂的过程,有些问题容易被忽视,但如果没有得到及时的解决,很有可能会导致严重的后果。下面是关于网站建设中一些容易被忽视的问题的完整攻略。 1.合规问题 在开发网站的时候,有很多的法律法规需要遵守,如《中华人民共和国网络安全法》、《中华人民共和国电子商务法》等等。如果网站在开发完成后不符合相关的法律规定,那么网站很有可能会因为法律问题而被封禁…

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