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小技巧的攻略。 一、CSS小技巧介绍 CSS小技巧是指在编写CSS时运用不同的技巧,实现不同的布局效果或者优化页面加载速度等方面的小技巧。 二、CSS小技巧合集 1. 使用box-sizing减少布局计算 box-sizing用于设置元素的盒模型。默认为content-box,即content的值不包含元素的padding和borde…

    css 2023年6月9日
    00
  • Node.js站点使用Nginx作反向代理时配置GZip压缩的教程

    下面是使用Nginx配置GZip压缩的教程: 什么是GZip压缩? GZip压缩是一种常用的压缩技术,可以在不影响内容质量的情况下,减小HTTP请求的响应时间和大小,提高用户体验。在Node.js站点中,可以使用Nginx作为反向代理来进行GZip压缩的配置。 配置步骤 安装Nginx 在使用Nginx作为反向代理之前,首先需要在服务器上安装Nginx。具体…

    css 2023年6月10日
    00
  • CSS 文本域和按钮对齐不一致解决方案

    下面是 “CSS 文本域和按钮对齐不一致解决方案”的完整攻略: 问题描述 当我们在HTML表单中设置一个textarea(文本域)和一个button(按钮)时,有时候会发现它们在水平方向上的对齐不一致。这是因为textarea和button的默认盒模型不同,导致其宽度和高度的计算方式不同。 解决方案 有以下两种解决方案: 方案一:使用CSS的table布局 …

    css 2023年6月10日
    00
  • CSS实现卡片3D翻转效果的示例代码

    下面是“CSS实现卡片3D翻转效果的完整攻略”。 1. 概述 卡片翻转是一种常见的网页特效,能够为页面增添活力。它使得卡片的正反两面都能够展现出来,为用户提供更加丰富的交互体验。CSS3提供了3D变换效果,用来快速实现卡片的翻转效果。本文将介绍如何使用CSS3实现卡片3D翻转的效果。 2. 实现方法 2.1 HTML结构 首先,在HTML中需要构建好卡片的基…

    css 2023年6月10日
    00
  • HTML表单标签(form)详解

    HTML表单可以让用户输入和提交信息,例如登录名、密码、搜索词汇或任何其他数据。 form标签定义了一个HTML表单,并提供了一些属性来指定表单的操作和样式。 下面是对<form>标签的详细介绍以及示例代码: 基本结构: <form> <!– 在此处添加输入、选择和提交元素 –> </form> 在<…

    Web开发基础 2023年3月15日
    00
  • CSS选择器中的正则表达式使用

    在CSS选择器中使用正则表达式可以更加灵活地选择元素,以下是关于CSS选择器中正则表达式使用的完整攻略,包括两个示例说明: 1. 正则表达式基础 正则表达式是一种用于匹配文本的模式。在CSS选择器中,可以使用正则表达式来匹配元素的属性值。以下是一些常用的正则表达式符号: ^:匹配以指定字符开头的字符串。 $:匹配以指定字符结尾的字符串。 *:匹配前面的字符零…

    css 2023年5月18日
    00
  • 通过css3动画和opacity透明度实现呼吸灯效果

    以css3动画和opacity透明度实现呼吸灯效果的完整攻略如下: 1. 准备工作 在开始使用CSS3动画和opacity透明度实现呼吸灯效果前,需要进行一些准备工作,包括CSS代码的编写和HTML文件的准备。一般步骤是: 在HTML文件中创建一个需要实现呼吸灯效果的元素,例如一个div或者一张图片; 为该元素设置CSS样式,确定元素的位置、大小、背景颜色等…

    css 2023年6月10日
    00
  • Bootstrap插件全集

    Bootstrap插件全集攻略 Bootstrap是一款流行的前端框架,它提供了众多的组件和工具,其中包含了一系列的插件。Bootstrap插件全集主要是指将Bootstrap的所有插件进行了整合,方便开发者进行使用和管理。下面将详细介绍如何使用Bootstrap插件全集来提高开发效率。 安装Bootstrap插件全集 要使用Bootstrap插件全集,首先…

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