8.10.2 手风琴效果

8.10.2 手风琴效果

什么是手风琴效果

手风琴效果:有多个可折叠的元素这些元素在同一时刻只能展开其中一个元素,其他元素折叠.

如何实现手风琴效果

把多个折叠元素组合在同一个.panel-group元素内即可实现手风琴效果

实现手风琴效果的步骤

实现手风琴效果的步骤如下:

  1. 定义一个被指定了class="panel-group"样式的<div>元素,该元素将可以作为手风琴效果的容器。
  2. 手风琴内每个标签页面都是一个”面板”,因此需要为该面板指定.panel.panel-default等样式。具体可参考前面有关面板的介绍。
  3. 在”面板”内添加”面板头”和”面板体”等部分。通常来说,我们应该
    • 将触发折叠的链接放在面板头部分;
    • 将折叠元素放在面板体内
  4. 为了让面板头中的链接能触发折叠操作,同样需要:
    • 为连接指定data-toggle属性值总是"collapse",这样才有可以展开或折叠其他元素的功能。
    • 为链接指定hrefdata-toggle属性,其中href属性指定该链接要触发哪个折叠元素,
    • 为连接指定一个data-parent属性,该属性指定手风琴效果的容器元素。

小结

归纳起来,需要为手风琴效果的链接按钮指定如下属性:

1
2
3
data-toggle="collapse"
data-parent="手风琴容器"
data-target="要触发的目标折叠元素"

程序示例

如下代码示范了手风琴效果的实现。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<!DOCTYPE html>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title> 手风琴效果 </title>
<link rel="stylesheet" href="../bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="../bootstrap/css/bootstrap-theme.min.css">
<script type="text/javascript" src="../jquery-3.1.1.js"></script>
<script type="text/javascript" src="../bootstrap/js/bootstrap.min.js"></script>
</head>

<body>
<div class="container">
<!-- panel-group手风琴效果顶层容器 -->
<div class="panel-group" id="accordion">
<!-- 第一个面板 -->
<div class="panel panel-info">
<!-- 面板头 -->
<div class="panel-heading">
<h4 class="panel-title">
<!-- data-toggle="collapse"表示该元素可以展开或者折叠元素 -->
<!-- href="#java"元素用于指定要折叠的元素 -->
<!-- data-parent="#accordion"指定所在的顶级容器 -->
<a data-toggle="collapse" href="#java" data-parent="#accordion">
疯狂Java讲义</a>
</h4>
</div>
<!-- panel-collapse:面板内容 -->
<!-- .collapse .in样式表示该元素可折叠,并且处于展开状态 -->
<div id="java" class="panel-collapse collapse in">
<div class="panel-body">
<p>必读的Java学习经典,你懂的,不多说。</p>
</div>
</div>
</div>
<!-- 第二个面板 -->
<div class="panel panel-info">
<!-- 面板头 -->
<div class="panel-heading">
<!-- 面板标题 -->
<h4 class="panel-title">
<!-- 该链接可以展开或者折叠id为javaee的元素 -->
<a data-toggle="collapse" href="#javaee" data-parent="#accordion">
轻量级Java EE企业应用实战</a>
</h4>
</div>
<!-- 面板内容,可折叠,并处理折叠状态 -->
<div id="javaee" class="panel-collapse collapse">
<div class="panel-body">
<p>企业级应用开发的经典图书,畅销经典</p>
</div>
</div>
</div>
<!-- 第三个面板 -->
<div class="panel panel-info">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#swift" data-parent="#accordion">
疯狂Swift讲义</a>
</h4>
</div>
<div id="swift" class="panel-collapse collapse">
<div class="panel-body">
<p>Apple公司Swift语言的学习图书</p>
</div>
</div>
</div>
</div>
</div>
</body>

</html>

手风琴效果其实是多个简单折叠效果的组合,只要为折叠效果的触发链接额外指定data-parent属性即可