news 2026/4/30 7:11:32

Bootstrap4 折叠

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Bootstrap4 折叠

Bootstrap4 折叠(Collapse)学习笔记

一、基本概念

折叠组件(Collapse)用于内容的显示/隐藏切换,常用于手风琴、FAQ 面板等场景。核心机制是通过data-*属性或 JavaScript 控制元素的展开与收起。

二、基本用法

1. 通过 data 属性(无需 JS)

<!-- 触发器 --><buttonclass="btn btn-primary"type="button"data-toggle="collapse"data-target="#collapseExample"aria-expanded="false"aria-controls="collapseExample">点击展开/收起</button><!-- 折叠内容 --><divclass="collapse"id="collapseExample"><divclass="card card-body">这是一段可折叠的内容。</div></div>

2. 通过链接触发

<aclass="btn btn-primary"data-toggle="collapse"href="#collapseExample"role="button"aria-expanded="false"aria-controls="collapseExample">链接触发</a>

区别<button>data-target<a>href

3. 通过 JavaScript 触发

$('#collapseExample').collapse({toggle:true});

三、关键属性说明

属性说明
data-toggle="collapse"声明触发折叠行为
data-target="#id"指定目标元素(按钮用)
href="#id"指定目标元素(链接用)
aria-expanded标识展开状态(true/false
aria-controls指向被控内容的 id,增强无障碍
.collapse隐藏内容
.collapse.show显示内容
.collapsing过渡动画中的临时类

四、手风琴(Accordion)

手风琴是折叠的经典应用:同一组内同时只能展开一个面板。

<divclass="accordion"id="accordionExample"><!-- 面板一 --><divclass="card"><divclass="card-header"id="headingOne"><h2class="mb-0"><buttonclass="btn btn-link"type="button"data-toggle="collapse"data-target="#collapseOne"aria-expanded="true"aria-controls="collapseOne">面板一标题</button></h2></div><divid="collapseOne"class="collapse show"aria-labelledby="headingOne"data-parent="#accordionExample"><divclass="card-body">面板一的内容,默认展开。</div></div></div><!-- 面板二 --><divclass="card"><divclass="card-header"id="headingTwo"><h2class="mb-0"><buttonclass="btn btn-link collapsed"type="button"data-toggle="collapse"data-target="#collapseTwo"aria-expanded="false"aria-controls="collapseTwo">面板二标题</button></h2></div><divid="collapseTwo"class="collapse"aria-labelledby="headingTwo"data-parent="#accordionExample"><divclass="card-body">面板二的内容。</div></div></div><!-- 面板三 --><divclass="card"><divclass="card-header"id="headingThree"><h2class="mb-0"><buttonclass="btn btn-link collapsed"type="button"data-toggle="collapse"data-target="#collapseThree"aria-expanded="false"aria-controls="collapseThree">面板三标题</button></h2></div><divid="collapseThree"class="collapse"aria-labelledby="headingThree"data-parent="#accordionExample"><divclass="card-body">面板三的内容。</div></div></div></div>

手风琴核心要点

  • data-parent="#accordionExample":指定父容器 id,确保同组内互斥展开
  • 去掉data-parent则各面板可独立展开(非互斥)
  • 默认展开的面板加.show,对应按钮不加.collapsed

五、多目标切换

一个触发器可以同时控制多个折叠区域:

<buttonclass="btn btn-primary"type="button"data-toggle="collapse"data-target=".multi-collapse">同时切换多个区域</button><divclass="collapse multi-collapse"id="first"><divclass="card card-body">第一个区域</div></div><divclass="collapse multi-collapse"id="second"><divclass="card card-body">第二个区域</div></div>

原理data-target使用类选择器.multi-collapse,匹配所有同类元素。

六、JavaScript 方法

方法说明
.collapse(options)初始化,传入配置对象
.collapse('toggle')切换显示/隐藏
.collapse('show')显示
.collapse('hide')隐藏
.collapse('dispose')销毁实例
// 初始化并配置$('#myCollapse').collapse({toggle:false// 初始化时不自动切换});// 手动控制$('#myCollapse').collapse('show');$('#myCollapse').collapse('hide');$('#myCollapse').collapse('toggle');

七、配置选项

选项类型默认值说明
parentselector | DOM | jQueryfalse父容器,实现互斥展开
togglebooleantrue初始化时是否切换

可通过 data 属性设置:

<divclass="collapse"data-parent="#myAccordion">

八、事件

事件说明
show.bs.collapse调用 show 后立即触发
shown.bs.collapse完全显示后触发(动画完毕)
hide.bs.collapse调用 hide 后立即触发
hidden.bs.collapse完全隐藏后触发(动画完毕)
$('#myCollapse').on('shown.bs.collapse',function(){console.log('内容已展开');});$('#myCollapse').on('hidden.bs.collapse',function(){console.log('内容已收起');});

九、CSS 过渡状态

折叠动画依赖三个 CSS 类的切换:

收起 → 展开: .collapse → .collapsing → .collapse.show 展开 → 收起: .collapse.show → .collapsing → .collapse
类名状态
.collapse隐藏(height: 0
.collapsing过渡中(动态设置height
.collapse.show显示(height: auto

如需禁用动画:

.collapsing{transition:none!important;}

十、完整示例

<!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Bootstrap4 折叠示例</title><linkrel="stylesheet"href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css"><style>.card-header button{width:100%;text-align:left;}</style></head><body><divclass="container mt-4"><h4>基础折叠</h4><p><buttonclass="btn btn-primary"type="button"data-toggle="collapse"data-target="#basicCollapse">展开/收起</button></p><divclass="collapse"id="basicCollapse"><divclass="card card-body">这是一段可以折叠的内容,点击按钮即可切换显示状态。</div></div><hr><h4class="mt-4">手风琴</h4><divclass="accordion"id="myAccordion"><divclass="card"><divclass="card-header"id="h1"><buttonclass="btn btn-link"data-toggle="collapse"data-target="#c1"aria-expanded="true">第一章:概述</button></div><divid="c1"class="collapse show"aria-labelledby="h1"data-parent="#myAccordion"><divclass="card-body">第一章的内容,默认展开。</div></div></div><divclass="card"><divclass="card-header"id="h2"><buttonclass="btn btn-link collapsed"data-toggle="collapse"data-target="#c2">第二章:进阶</button></div><divid="c2"class="collapse"aria-labelledby="h2"data-parent="#myAccordion"><divclass="card-body">第二章的内容。</div></div></div><divclass="card"><divclass="card-header"id="h3"><buttonclass="btn btn-link collapsed"data-toggle="collapse"data-target="#c3">第三章:实战</button></div><divid="c3"class="collapse"aria-labelledby="h3"data-parent="#myAccordion"><divclass="card-body">第三章的内容。</div></div></div></div></div><scriptsrc="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js"></script><scriptsrc="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js"></script></body></html>

十一、注意事项

  1. data-targetvshref<button>必须用data-target<a>可用href,两者不要混用
  2. data-parent实现互斥:手风琴效果的关键,值必须指向外层容器的选择器
  3. 初始展开:给目标元素加.show,触发按钮不加.collapsed
  4. 动画依赖height:折叠动画通过动态设置height实现,如果内容有padding/margin异常可能导致动画不流畅
  5. 嵌套折叠:支持嵌套,但内层data-parent应指向内层容器,避免外层误关闭
  6. 无障碍:始终添加aria-expandedaria-controls,方便屏幕阅读器识别
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 7:11:28

Bootstrap4 面包屑导航(Breadcrumb)

Bootstrap4 面包屑导航&#xff08;Breadcrumb&#xff09;学习笔记 一、基本概念 面包屑导航用于指示当前页面在导航层级中的位置&#xff0c;通常出现在页面顶部&#xff0c;帮助用户了解所处位置并快速返回上级页面。 典型形态&#xff1a;首页 > 分类 > 子分类 &g…

作者头像 李华
网站建设 2026/4/30 7:10:33

前端性能优化:图片优化策略详解

前端性能优化&#xff1a;图片优化策略详解 为什么图片优化如此重要&#xff1f; 在现代Web应用中&#xff0c;图片通常是页面大小的主要组成部分&#xff0c;占总带宽的60%以上。不合理的图片使用会导致页面加载缓慢&#xff0c;影响用户体验&#xff0c;甚至增加服务器成本。…

作者头像 李华
网站建设 2026/4/30 7:07:26

Ubuntu系统中挂载Windows目录实现文件共享

Ubuntu系统中挂载Windows目录实现文件共享.md一、Windows系统下设置共享文件夹二、Linux系统下进行加载一、Windows系统下设置共享文件夹 创建 共享的文件夹sharetest。 设置相关操纵&#xff1a; &#xff08;1&#xff09;右键&#xff0c;点击属性 &#xff08;2&#xff…

作者头像 李华
网站建设 2026/4/30 7:07:22

CDH 最隐蔽的坑:NTP 时间同步导致的 5 类故障

在做 Cloudera CDH 集群运维时&#xff0c;有一类问题非常“玄学”&#xff1a; Kerberos 偶尔认证失败Kudu / HBase 启动不了Cloudera Manager 提示时间偏差任务偶发失败却无法复现 很多人第一反应是&#xff1a; 网络&#xff1f;权限&#xff1f;版本&#xff1f; 但真正的…

作者头像 李华
网站建设 2026/4/30 6:57:30

Linux下cmake构建方法

1. 工程目录结构如下:2. 根目录下build.sh文件内容如下&#xff1a;#!/bin/bash# 颜色输出 RED\033[0;31m GREEN\033[0;32m YELLOW\033[1;33m BLUE\033[0;34m NC\033[0mROOT_DIR$(pwd)OUT_DIR${ROOT_DIR}/out/BUILD_DIR${ROOT_DIR}/buildif [ "$1" "clean"…

作者头像 李华