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

yizhihongxing

下面我会为你详细讲解"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布局中的一种重要方法。它可以让我们更灵活地将内容定位到页面上的任何位置,并且让页面响应式布局更加容易实现。 概述 绝对定位和相对定位是将HTML元素放置在网页上的方法,通过指定元素的位置来控制它的位置。 相对定位(relative)会按照元素本身在文档流中的位置移动,而绝对定位(ab…

    css 2023年6月9日
    00
  • 兼容IE和FF的js脚本代码小结(比较常用)

    下面我就为你详细讲解“兼容IE和FF的js脚本代码小结”。 核心思路 为了实现JS的兼容性,我们需要了解两个概念:DOM和事件模型。DOM是文档对象模型,即浏览器把HTML和XML文档解析成树形结构,并提供了一组API,使得开发人员可以轻易地操作文档中的元素。而事件模型则是指浏览器处理事件(比如用户点击某个元素,或者页面加载完成等)的方式。 根据这两个概念,…

    css 2023年6月11日
    00
  • 导入css文件使用判断条件实现

    下面是使用判断条件实现导入css文件的攻略,包含以下几个步骤: 1. 导入条件判断的js文件 为了实现动态导入css文件,我们需要使用条件判断的JavaScript文件。我们可以创建一个js文件(比如叫做”loadCSS.js”),然后在html文件中引入该文件。 <script src="js/loadCSS.js">&lt…

    css 2023年6月10日
    00
  • JavaScript+Canvas实现文字粒子流特效

    下面是“JavaScript+Canvas实现文字粒子流特效”的完整攻略。 1.了解Canvas 在使用Canvas前,要先了解一下Canvas的基本知识。Canvas是HTML5新提出的一项二维图形技术,在网页中实现动画效果、游戏绘画、数据图形绘制等功能,通常使用JavaScript与之配合。 2.准备文本素材 首先需要准备一张用于生成粒子效果的文本素材,…

    css 2023年6月10日
    00
  • EasyUI折叠表格层次显示detailview详解及实例

    EasyUI折叠表格层次显示detailview详解及实例 介绍 在EasyUI中,可以使用折叠表格来显示分层数据。当需要在折叠的表格中显示更多详细的数据时,我们可以使用detailview来展示更多信息。 detailview可以根据EasyUI数据网格中的数据动态创建一个子网格,并在父网格中嵌入行中的图标上提供展开和收缩子网格的的链接。 教程 步骤 1:…

    css 2023年6月10日
    00
  • 关于CSS中的display:table-cell使用技巧的几种应用

    关于CSS中的display:table-cell使用技巧的几种应用 在CSS中,display:table-cell这一属性用法非常广泛,它可以帮助我们快速实现一些表格布局的效果,也可以实现一些类似于flex布局一样的特殊布局效果,下面我们详细介绍一下这一属性的几种常见用法: 1. 实现响应式的3等分宽度布局 通过使用display:table-cell属…

    css 2023年6月10日
    00
  • 基于jquery的可多选的下拉列表框

    这里是基于jQuery的可多选下拉列表框实现攻略。 实现思路 使用jQuery作为主要框架,便于操作DOM元素; 首先隐藏原生的下拉列表框,然后在它的位置上添加一个自定义的下拉框,用于显示选中的选项; 给自定义下拉框添加打开和关闭事件,分别显示和隐藏下拉选项,用输入框实现搜索功能; 在下拉列表中添加复选框,并为每个复选框绑定点击事件,点击时更新自定义下拉框中…

    css 2023年6月10日
    00
  • 使用css3匹配手机屏幕横竖状态

    使用CSS3媒体查询可以匹配不同设备的屏幕尺寸和方向,从而对不同设备进行优化,提高用户体验。在出现设备大小、分辨率各异的情况下,我们不得不根据屏幕横竖状态的情况来进行前端展示的兼容。 以下是使用CSS3匹配手机屏幕横竖状态的攻略步骤: 1. 编写meta标签 为了让页面在移动端显示正常,必须要编写viewport-meta标签,其作用是告诉浏览器如何调整页面…

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