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 相关文章推荐
js判断为空Null与字符串为空简写方法
Feb 24 Javascript
js单词形式的运算符
May 06 Javascript
javascript实现标签切换代码示例
May 22 Javascript
JavaScript程序中的流程控制语句用法总结
May 23 Javascript
轻松掌握JavaScript策略模式
Aug 25 Javascript
js实时获取窗口大小变化的实例代码
Nov 18 Javascript
基于BootStrap的前端分页带省略号和上下页效果
May 18 Javascript
Angular @HostBinding()和@HostListener()用法
Mar 05 Javascript
vue-cli的工程模板与构建工具详解
Sep 27 Javascript
jQuery使用bind动态绑定事件无效的处理方法
Dec 11 jQuery
详解vue-router导航守卫
Jan 19 Javascript
微信小程序国际化探索实现(附源码地址)
May 20 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者的疑难问答(1)
2006/10/09 PHP
优化PHP代码的53条建议
2008/03/27 PHP
PHP连接MySQL的2种方法小结以及防止乱码
2014/03/11 PHP
教你如何解密 “ PHP 神盾解密工具 ”
2014/06/20 PHP
PHP面向对象程序设计之接口用法
2014/08/20 PHP
thinkphp整合系列之极验滑动验证码geetest功能
2019/06/18 PHP
javascript 写类方式之七
2009/07/05 Javascript
围观tangram js库
2010/12/28 Javascript
让复选框只能选择一项的方法
2013/10/08 Javascript
HTTP 304错误的详细讲解
2013/11/13 Javascript
javascript设置金额样式转换保留两位小数示例代码
2013/12/04 Javascript
js自定义鼠标右键的实现原理及源码
2014/06/23 Javascript
Javascript基础教程之break和continue语句
2015/01/18 Javascript
js生成随机数的过程解析
2015/11/24 Javascript
在线引用最新jquery文件的实现方法
2016/08/26 Javascript
原生JS实现的放大镜效果实例代码
2016/10/15 Javascript
js图片轮播手动切换特效
2017/01/12 Javascript
Node.js 回调函数实例详解
2017/07/06 Javascript
微信小程序实现根据字母选择城市功能
2017/08/16 Javascript
微信小程序实现左滑修改、删除功能
2020/10/19 Javascript
[01:17]辉夜杯战队访谈宣传片—EHOME
2015/12/25 DOTA
python文件操作之目录遍历实例分析
2015/05/20 Python
对Python实现简单的API接口实例讲解
2018/12/10 Python
python flask 如何修改默认端口号的方法步骤
2019/07/12 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
2020/02/21 Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
2020/02/27 Python
使用SQLAlchemy操作数据库表过程解析
2020/06/10 Python
python 中关于pycharm选择运行环境的问题
2020/10/31 Python
python 爬虫爬取京东ps4售卖情况
2020/12/18 Python
英国马莎百货印度官网:Marks & Spencer印度
2020/10/08 全球购物
《孔子拜师》教学反思
2014/02/24 职场文书
竞选部长演讲稿
2014/04/26 职场文书
2014年幼儿园德育工作总结
2014/12/17 职场文书
退税申请报告怎么写
2015/05/18 职场文书
golang 实现Location跳转方式
2021/05/02 Golang
mysql 如何获取两个集合的交集/差集/并集
2021/06/08 MySQL