Bootstrap框架建立树形菜单(Tree)的实例代码


Posted in Javascript onOctober 30, 2017

 这里的Tree指的是树形菜单,这篇文章通过一个实例来讲解一下,在Bootstrap框架下怎么去建立一个树形菜单。

前提:先添加Bootstrap和JQ的引用

<link rel="stylesheet" type="text/css" href="bootstrap-3.3.0-dist/dist/css/bootstrap.min.css" rel="external nofollow" >
<script src="bootstrap-3.3.0-dist/dist/js/jquery-1.11.2.min.js"></script>
<script src="bootstrap-3.3.0-dist/dist/js/bootstrap.min.js"></script>

HTML CODE

<div class="tree well">
 <ul>
 <li> <span><i class="icon-folder-open"></i> 廊坊师范学院</span>
  <ul>
  <li> <span><i class="icon-minus-sign"></i> 教育学院</span>
   <ul>
   <li> <span><i class="icon-leaf"></i> 学前教育</span> </li>
   </ul>
  </li>
  <li> <span><i class="icon-minus-sign"></i> 物电学院</span>
   <ul>
   <li> <span><i class="icon-leaf"></i> 电气工程技术</span> </li>
   <li> <span><i class="icon-minus-sign"></i> 电子信息科学技术</span>
    <ul>
    <li> <span><i class="icon-minus-sign"></i> 电子一班</span>
     <ul>
     <li> <span><i class="icon-leaf"></i> 宋笑</span> </li>
     <li> <span><i class="icon-leaf"></i> 二盟</span> </li>
     </ul>
    </li>
    <li> <span><i class="icon-leaf"></i> 电子二班</span> </li>
    </ul>
   </li>
   <li> <span><i class="icon-leaf"></i> 物理学</span> </li>
   </ul>
  </li>
  </ul>
 </li>
 </ul>
</div>

CSS CODE

(为树形菜单添加样式,使其符合Bootstrap框架的风格)

.tree {
 min-height:20px;
 padding:19px;
 margin-bottom:20px;
 background-color:#fbfbfb;
 border:1px solid #999;
 -webkit-border-radius:4px;
 -moz-border-radius:4px;
 border-radius:4px;
 -webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);
 -moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);
 box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05)
}
.tree li {
 list-style-type:none;
 margin:0;
 padding:10px 5px 0 5px;
 position:relative
}
.tree li::before, .tree li::after {
 content:'';
 left:-20px;
 position:absolute;
 right:auto
}
.tree li::before {
 border-left:1px solid #999;
 bottom:50px;
 height:100%;
 top:0;
 width:1px
}
.tree li::after {
 border-top:1px solid #999;
 height:20px;
 top:25px;
 width:25px
}
.tree li span {
 -moz-border-radius:5px;
 -webkit-border-radius:5px;
 border:1px solid #999;
 border-radius:5px;
 display:inline-block;
 padding:3px 8px;
 text-decoration:none
}
.tree li.parent_li>span {
 cursor:pointer
}
.tree>ul>li::before, .tree>ul>li::after {
 border:0
}
.tree li:last-child::before {
 height:30px
}
.tree li.parent_li>span:hover, .tree li.parent_li>span:hover+ul li span {
 background:#eee;
 border:1px solid #94a0b4;
 color:#000
}

JS CODE

<script type="text/javascript">
 //为节点添加展开,关闭的操作
$(function(){
 $('.tree li:has(ul)').addClass('parent_li').find(' > span').attr('title', 'Collapse this branch');
 $('.tree li.parent_li > span').on('click', function (e) {
  var children = $(this).parent('li.parent_li').find(' > ul > li');
  if (children.is(":visible")) {
   children.hide('fast');
   $(this).attr('title', 'Expand this branch').find(' > i').addClass('icon-plus-sign').removeClass('icon-minus-sign');
  } else {
   children.show('fast');
   $(this).attr('title', 'Collapse this branch').find(' > i').addClass('icon-minus-sign').removeClass('icon-plus-sign');
  }
  e.stopPropagation();
 });
});
</script>

效果:

Bootstrap框架建立树形菜单(Tree)的实例代码 

一棵符合Bootstrap风格的树就这么建造完成了,优点自不用说:整洁,美观。

这是一个demo,所以树中的值都是写死在html里面的,但是在实际项目中,树形菜单一般都是动态生成的,而Bootstrap却没有为我们提供一个类似TreeView那样的控件,只需要绑定上数据就可以动态生成一棵树,所以生成树的逻辑都需要我们手动用JS代码进行编写。这个过程着实有点繁琐,递归+嵌套。。

当然市面上也有很多封装好的一些树形菜单的插件,DTree,TreeList widget,Ztree,jQuery等等,就是外观和Bootstrap框架有点不搭。

有这么个折中的办法,就是取长补短,把Bootstrap的样式应用到这些封装好的树形插件上来满足需求。

Javascript 相关文章推荐
javascript json 新手入门文档
Dec 03 Javascript
jquery下动态显示jqGrid以及jqGrid的属性设置容易出现问题的解决方法
Oct 22 Javascript
javaScript实现浮点数转十六进制字符
Oct 29 Javascript
jquery实现点击弹出带标题栏的弹出层(从右上角飞入)效果
Sep 19 Javascript
js实现网页收藏功能
Dec 17 Javascript
JavaScript实战之菜单特效
Aug 16 Javascript
AngularJS页面传参的5种方式
Apr 01 Javascript
vue实现表格数据的增删改查
Jul 10 Javascript
对于input 框限定输入值为浮点型的js代码
Sep 25 Javascript
微信小程序组件之srcoll-view的详解
Oct 19 Javascript
jQuery实现的简单图片轮播效果完整示例
Feb 08 jQuery
ES6 新增的创建数组的方法(小结)
Aug 01 Javascript
react实现一个优雅的图片占位模块组件详解
Oct 30 #Javascript
ES6 javascript中class类的get与set用法实例分析
Oct 30 #Javascript
原生JS与jQuery编写简单选项卡
Oct 30 #jQuery
简单实现jQuery弹窗效果
Oct 30 #jQuery
Bootstrap栅格系统的使用详解
Oct 30 #Javascript
ES6 javascript中class静态方法、属性与实例属性用法示例
Oct 30 #Javascript
用React实现一个完整的TodoList的示例代码
Oct 30 #Javascript
You might like
PHP中通过trigger_error触发PHP错误示例
2015/06/23 PHP
Zend Framework实现自定义过滤器的方法
2016/12/09 PHP
js隐藏与显示回到顶部按钮及window.onscroll事件应用
2013/01/25 Javascript
jQuery基于ajax实现星星评论代码
2015/08/07 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
2015/11/17 Javascript
整理Javascript基础入门学习笔记
2015/11/29 Javascript
javascript实现拖放效果
2015/12/16 Javascript
jquery实现具有嵌套功能的选项卡
2016/02/12 Javascript
JavaScript数组操作函数汇总
2016/08/05 Javascript
Bootstrap Search Suggest使用例子
2016/12/21 Javascript
JS与jQuery实现子窗口获取父窗口元素值的方法
2017/04/17 jQuery
单行 JS 实现移动端金钱格式的输入规则
2017/05/22 Javascript
详解Webpack实战之构建 Electron 应用
2017/12/25 Javascript
JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
2018/01/07 Javascript
Node.Js中实现端口重用原理详解
2018/05/03 Javascript
vue.js父子组件通信动态绑定的实例
2018/09/28 Javascript
微信小程序分享海报生成的实现方法
2018/12/10 Javascript
使用Python编写基于DHT协议的BT资源爬虫
2016/03/19 Python
python中zip()方法应用实例分析
2016/04/16 Python
PyTorch的SoftMax交叉熵损失和梯度用法
2020/01/15 Python
基于python修改srt字幕的时间轴
2020/02/03 Python
python标准库sys和OS的函数使用方法与实例详解
2020/02/12 Python
智能家居、吸尘器、滑板车、电动自行车网上购物:Geekmaxi
2021/01/18 全球购物
中学生爱国演讲稿
2013/12/31 职场文书
前台文员我鉴定
2014/01/12 职场文书
2014升学宴答谢词
2014/01/26 职场文书
趣味体育活动方案
2014/02/08 职场文书
开门红主持词
2014/04/02 职场文书
诚实守信道德模范事迹材料
2014/08/15 职场文书
学校个人对照检查材料
2014/08/26 职场文书
家长对孩子的寄语
2015/02/26 职场文书
2015年组织部工作总结
2015/04/03 职场文书
2015年环卫工作总结
2015/04/28 职场文书
飞越疯人院观后感
2015/06/09 职场文书
《比尾巴》教学反思
2016/02/24 职场文书
Redis基本数据类型哈希Hash常用操作命令
2022/06/01 Redis