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日

相关文章

  • flex4.5中CSS选择器的应用小结

    关于“flex4.5中CSS选择器的应用小结”这个主题,下面是我的详细讲解攻略: 一、选择器的基本概念 CSS选择器是一种用来选择页面中某些元素的表达式。选择器可以根据元素的标签名、类名、ID等属性进行选择,更改元素的样式。 常见的CSS选择器有以下几种: 标签选择器:通过元素标签名来选择元素。 类选择器:通过元素的class属性值来选择元素。 ID选择器:…

    css 2023年6月9日
    00
  • 使用css画一个文件上传图案

    现在我将为你讲解使用CSS画一个文件上传图案的完整攻略。 1.确定设计风格 在开始之前,我们需要先确定文件上传图案的设计风格。这决定了我们使用哪些颜色,以及选择什么形状和符号。 通常,文件上传图案需要一个文件图标,可以使用伪元素和 CSS 自定义属性实现。在这个例子中,我们将使用一个简单的文件夹图标,使用伪元素 ::before 和 ::after 来实现。…

    css 2023年6月10日
    00
  • JQuery模拟实现网页中自定义鼠标右键菜单功能

    下面是「JQuery模拟实现网页中自定义鼠标右键菜单功能」的完整攻略: 1. 实现思路 要模拟实现网页中自定义鼠标右键菜单功能,我们需要以下几个步骤: 绑定页面元素的右键菜单事件。 阻止默认的右键菜单事件。 创建自定义的菜单元素。 在页面上显示自定义的菜单元素。 根据用户的点击位置,调整自定义菜单的显示位置。 定义菜单元素的点击事件,实现对应功能。 接下来,…

    css 2023年6月10日
    00
  • CSS3轻松实现圆角效果

    CSS3轻松实现圆角效果攻略 圆角效果是网页设计中常用的一种装饰方式。在CSS3中,实现圆角效果变得非常容易。本文将为大家介绍如何轻松实现CSS3圆角效果。 border-radius CSS3中实现圆角效果的主要属性是 border-radius。通过设置 border-radius 的值,我们可以轻松地实现各种圆角效果。 border-radius 的属…

    css 2023年6月10日
    00
  • vue多个元素的样式选择器问题

    对于 Vue 多个元素的样式选择器问题,可以采用以下两种方法进行解决: 方法一:为元素绑定 class 或 style 对象 经典的 CSS 选择器,例如 div>p 可以方便地选择元素,但是在 Vue 中,由于组件模板的限制,不能使用这种方式。为了解决这一问题,我们可以通过给元素绑定 class 或 style 对象来实现类似的选择器效果。 举个例子…

    css 2023年6月9日
    00
  • 如何设置单词字体间距 css设置字体间距样式代码

    以下是关于“如何设置单词字体间距 CSS设置字体间距样式代码”的完整攻略,包含两个示例说明。 方法一:使用letter-spacing属性 可以使用CSS的letter-spacing属性来设置单词之间的字体间距。可以按照以下步骤操作: 在CSS文件中,使用letter-spacing属性来设置单词之间的字体间距。例如: p { letter-spacing…

    css 2023年5月18日
    00
  • CSS清楚浮动clear:both的实例代码

    清除浮动是Web设计中一个常见的问题。在处理包含浮动元素的容器时,往往会出现高度坍塌等问题,这时需要使用“清浮动”技术来解决。 清除浮动的常用方法之一是使用“clear:both”样式。在下面的示例代码中,我们将通过两种方式来演示如何使用“clear:both”样式进行浮动清除。 示例一:清除浮动的简单方式 首先,我们创建一个包含浮动元素的父容器,并指定其样…

    css 2023年6月10日
    00
  • 设置span宽度高度的方法

    设置span元素的宽度和高度可以使用width和height属性来完成。下面是详细的攻略: 1. 使用CSS样式设置宽高 在CSS样式中,可以直接设置span元素的宽高,方法如下: span { width: 100px; height: 50px; } 这样,span元素的宽度为100px,高度为50px。 2. 让span元素变成块级元素 可以将span…

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