bootstrap手风琴制作方法详解


Posted in Javascript onJanuary 11, 2017

手风琴(Collapse)效果展示

Bootstrap 框架中 Collapse插件(折叠)其实就是我们常见的手风琴效果。点击标题,可以让其对应的内容显示或隐藏

<div class="panel-group" id="accordion">
 <div class="panel panel-default">
  <div class="panel-heading">
   <h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">标题一</a></h4>
  </div>
  <div id="collapseOne" class="panel-collapse collapse in">
   <div class="panel-body">标题一对应的内容</div>
  </div>
 </div>
 <div class="panel panel-default">
  <div class="panel-heading">
   <h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo">标题二</a></h4>
  </div>
  <div id="collapseTwo" class="panel-collapse collapse">
   <div class="panel-body">标题二对应的内容</div>
  </div>
 </div>
 <div class="panel panel-default">
  <div class="panel-heading">
   <h4 class="panel-title"><a data-toggle="collapse"data-parent="#accordion"href="#collapseThree">标题三</a></h4>
  </div>
  <div id="collapseThree" class="panel-collapse collapse">
   <div class="panel-body">标题三对应的内容</div>
  </div>
 </div>
</div>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>

手风琴?手风琴结构

手风琴最关键的部分,就是每个标题对应有一个内容,在Bootstrap框架中将这两个部分组合起来称为一个panel页板,如右边效果所示,他就有三个panel面板,将这三个面板组合在一起,就是一个面板组合 panel-group,也就是手风琴的结构。

简单点就是一个触发器和一个折叠区:

<button type="button" class="btn btn-danger" data-toggle="collapse" data-target="#demo">触发器</button>
<div id="demo" class="collapse in">折叠区</div>

手风琴?声明式触发手风琴(二)

第三步,为了把标题和内容区捆绑在一起,可以通过锚链接的方法,把标题区域和面板区连在一起:

第四步,控制面板内容区是否可视。在Bootstrap框架中,如果你想让内容区域不可视,只需要在 panel-collapse 样式上添加 collapse:

每个面板的内容区都被隐藏起来了,变成不可视,但有时候希望默认第一个面板内容是可视的,
你只需要在collapse基础上再追加 in 样式:

手风琴?声明式触发手风琴(三)

第五步,激活手风琴交互行为。要完成交互行为,需要在标题链接中自定义两个属性,一个是data-toggle,并且取值为collapse;另一个是data-target,取值为各个面板内容区的标识符,比如说ID,

注意:在这个案例中不加入data-target=”#panel1”也可以,因为前面已经有了href=”#panel1”,但如是button按钮作为触发器就必须使用data-target=”#panel1”语句了。

第六步,定义data-parent属性,实现点击一个其中一个元素时,关闭所有的折叠区,再打开所单击的区域(如果所单击区域是展示的,则会关闭)。这个data-parent取值与手风琴面板容器的标识符相匹配,比如这个例子是指 #myAccordion

<div class="panel-group" id="myAccordion">
 <div class="panel panel-accordion panel-default">
  <div class="panel-heading">
   <h4 class="panel-title">
    <a href="#panel1" data-toggle="collapse" data-target="#panel1" data-parent="#myAccordion">标题一</a>
   </h4>
  </div>

☑ 使用 panel 的 panel-title 做为触元素,使用panel-body的父元素作为折叠区;
 ☑ 使用一个 panel-group 来包含多个 panel,从而实现手风琴效果;
 ☑ 每个 panel 里的触发元素都要指定data-parent属性;
 ☑ data-parent 属性的值对应 panel-group样式元素的ID或者其他样式标识符;
 ☑ 触发元素需要指定 data-toggle,并且值为 collapse;
 ☑ 触发元素都要指定 data-target属性;
 ☑ data-target属性的值对应 panel-body 的父元素的ID或者其他样式标识符。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript实现的在当前窗口中漂浮框的代码
Mar 15 Javascript
让新消息在网页标题闪烁提示的jQuery代码
Nov 04 Javascript
使用js判断数组中是否包含某一元素(类似于php中的in_array())
Dec 12 Javascript
JavaScript学习笔记之内置对象
Jan 22 Javascript
深入浅析Extjs中store分组功能的使用方法
Apr 20 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
Jun 02 Javascript
深入理解(function(){... })();
Aug 16 Javascript
微信小程序开发之麦克风动画 帧动画 放大 淡出
Apr 18 Javascript
cordova入门基础教程及使用中遇到的一些问题总结
Nov 14 Javascript
jQuery zTree 异步加载添加子节点重复问题
Nov 29 jQuery
在Vue中使用echarts的方法
Feb 05 Javascript
序列化模块json代码实例详解
Mar 03 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
Jan 11 #Javascript
微信小程序 本地存储及登录页面处理实例详解
Jan 11 #Javascript
js仿iphone秒表功能 计算平均数
Jan 11 #Javascript
jQuery实现限制文本框的输入长度
Jan 11 #Javascript
angularjs 实现带查找筛选功能的select下拉框实例
Jan 11 #Javascript
微信小程序 轮播图swiper详解及实例(源码下载)
Jan 11 #Javascript
Angularjs中使用layDate日期控件示例
Jan 11 #Javascript
You might like
PHP 获取客户端真实IP地址多种方法小结
2010/05/15 PHP
PHP利用REFERER根居访问来地址进行页面跳转
2013/09/28 PHP
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
2014/03/17 PHP
解决PhpStorm64不能启动的问题
2020/06/20 PHP
JavaScript对象之间的转换 jQuery对象和原声DOM
2011/03/07 Javascript
超简单JS二级、多级联动的简单实例
2014/02/18 Javascript
$(document).ready(function() {})不执行初始化脚本
2014/06/19 Javascript
javascript检测是否联网的实现代码
2014/09/28 Javascript
jQuery使用元素属性attr赋值详解
2015/02/27 Javascript
详解Angularjs中的依赖注入
2016/03/11 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(二)
2016/09/14 Javascript
AngularJS表单提交实例详解
2017/02/18 Javascript
jquery Form轻松实现文件上传
2017/05/24 jQuery
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
2020/10/09 jQuery
vue mvvm数据响应实现
2020/11/11 Javascript
jQuery冲突问题解决方法
2021/01/19 jQuery
Python中修改字符串的四种方法
2018/11/02 Python
pandas dataframe添加表格框线输出的方法
2019/02/08 Python
对python多线程SSH登录并发脚本详解
2019/02/14 Python
利用Pandas和Numpy按时间戳将数据以Groupby方式分组
2019/07/22 Python
Python re 模块findall() 函数返回值展现方式解析
2019/08/09 Python
如何分离django中的媒体、静态文件和网页
2019/11/12 Python
OpenCV python sklearn随机超参数搜索的实现
2020/01/17 Python
Python基于yaml文件配置logging日志过程解析
2020/06/23 Python
微信浏览器左上角返回按钮拦截功能
2017/11/21 HTML / CSS
New Balance英国官方网站:始于1906年,百年慢跑品牌
2016/12/07 全球购物
CLR与IL分别是什么含义
2016/08/23 面试题
介绍一下HTTP、HTTPS和SSL
2012/12/16 面试题
体育教育专业毕业生自荐信
2013/11/15 职场文书
生产副总岗位职责
2013/11/28 职场文书
校园公益广告语
2014/03/13 职场文书
社会工作专业自荐信
2014/09/26 职场文书
2014年财务部工作总结
2014/11/11 职场文书
教代会开幕词
2015/01/28 职场文书
2015年世界粮食日演讲稿
2015/03/20 职场文书
2015年音乐教研组工作总结
2015/07/22 职场文书