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 相关文章推荐
jQuery代码优化 选择符篇
Nov 01 Javascript
人人网javascript面试题 可以提前实现下
Jan 05 Javascript
Jquery 切换不同图片示例代码
Dec 05 Javascript
js以分隔符分隔数组中的元素并转换为字符串的方法
Nov 16 Javascript
一篇文章搞定JavaScript类型转换(面试常见)
Jan 21 Javascript
D3.js中强制异步文件读取同步的几种方法
Feb 06 Javascript
判断横屏竖屏(三种)
Feb 13 Javascript
BootStrap的select2既可以查询又可以输入的实现代码
Feb 17 Javascript
微信小程序 出现47001 data format error原因解决办法
Mar 10 Javascript
ES6新数据结构Map功能与用法示例
Mar 31 Javascript
JavaScript屏蔽Backspace键的实现代码
Nov 02 Javascript
深入浅出 Vue 系列 -- 数据劫持实现原理
Apr 23 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使用ffmpeg给视频增加字幕显示的方法
2015/03/12 PHP
thinkPHP显示不出验证码的原因与解决方法分析
2017/05/20 PHP
js 实现无缝滚动 兼容IE和FF
2009/07/15 Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
2014/03/05 Javascript
利用原生JavaScript获取元素样式只是获取而已
2014/10/08 Javascript
高性能JavaScript模板引擎实现原理详解
2015/02/05 Javascript
Angular 2应用的8个主要构造块有哪些
2016/10/17 Javascript
Nodejs下DNS缓存问题浅析
2016/11/16 NodeJs
javascript简写常用的12个技巧(可以大大减少你的js代码量)
2020/03/28 Javascript
vue-ajax小封装实例
2017/09/18 Javascript
p5.js入门教程之平滑过渡(Easing)
2018/03/16 Javascript
微信小程序使用自定义组件导航实现当前页面高亮
2020/01/02 Javascript
nodejs脚本centos开机启动实操方法
2020/03/04 NodeJs
vue实现简单图片上传
2020/06/30 Javascript
Python爬取京东的商品分类与链接
2016/08/26 Python
Python根据欧拉角求旋转矩阵的实例
2019/01/28 Python
Python爬虫 bilibili视频弹幕提取过程详解
2019/07/31 Python
Django 查询数据库并返回页面的例子
2019/08/12 Python
在Python中画图(基于Jupyter notebook的魔法函数)
2019/10/28 Python
python tkinter控件布局项目实例
2019/11/04 Python
python调用函数、类和文件操作简单实例总结
2019/11/29 Python
Python zip函数打包元素实例解析
2019/12/11 Python
Matplotlib animation模块实现动态图
2021/02/25 Python
中国领先的专业家电网购平台:国美在线
2016/12/25 全球购物
欧铁通票官方在线销售网站:Eurail.com
2017/10/14 全球购物
全球立体声:World Wide Stereo
2018/09/29 全球购物
Ted Baker美国官网:英国时尚品牌
2018/10/29 全球购物
加大码胸罩、内裤和服装:Just My Size
2019/03/21 全球购物
团员学习总结的自我评价范文
2013/10/14 职场文书
公司领导班子对照检查存在问题整改措施
2014/10/02 职场文书
出售房屋协议书范本
2014/10/06 职场文书
作文评语集锦
2014/12/25 职场文书
单身申明具结书
2015/02/26 职场文书
员工工作表现自我评价
2015/03/06 职场文书
工作证明书
2015/06/15 职场文书
创业计划书之都市休闲农庄
2019/12/28 职场文书