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 相关文章推荐
window.onload 加载完毕的问题及解决方案(下)
Jul 09 Javascript
jquer之ajaxQueue简单实现代码
Sep 15 Javascript
javascript引用类型指针的工作方式
Apr 13 Javascript
js的flv视频播放器插件使用方法
Jun 23 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
Sep 01 Javascript
javascript实现二级级联菜单的简单制作
Nov 19 Javascript
javascript实现保留两位小数的多种方法
Dec 18 Javascript
通过JS和PHP两种方法判断用户请求时使用的浏览器类型
Sep 01 Javascript
详解js几个绕不开的事件兼容写法
Aug 30 Javascript
从零开始用electron手撸一个截屏工具的示例代码
Oct 10 Javascript
vue遍历生成的输入框 绑定及修改值示例
Oct 30 Javascript
js函数柯里化的方法和作用实例分析
Apr 11 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 strcmp使用说明
2010/04/22 PHP
PHP fopen()和 file_get_contents()应用与差异介绍
2014/03/19 PHP
php基于session锁防止阻塞请求的方法分析
2017/08/07 PHP
使用ucenter实现多站点同步登录的讲解
2019/03/21 PHP
动态加载js文件 document.createElement
2006/10/14 Javascript
JS判断浏览器是否支持某一个CSS3属性的方法
2014/10/17 Javascript
jQuery页面刷新(局部、全部)问题分析
2016/01/09 Javascript
jQuery Mobile操作HTML5的常用函数总结
2016/05/17 Javascript
动态加载css方法实现和深入解析
2017/01/18 Javascript
JavaScript实现二分查找实例代码
2017/02/22 Javascript
原生js实现验证码功能
2017/03/16 Javascript
JavaScript中引用vs复制示例详析
2018/12/06 Javascript
layui使用form表单实现post请求页面跳转的方法
2019/09/14 Javascript
阿望教你用vue写扫雷小游戏
2020/01/20 Javascript
JS判断浏览器类型与操作系统的方法分析
2020/04/30 Javascript
MySQL中表的复制以及大型数据表的备份教程
2015/11/25 Python
Python之Scrapy爬虫框架安装及使用详解
2017/11/16 Python
Python 读取某个目录下所有的文件实例
2018/06/23 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
2018/12/26 Python
Python如何基于smtplib发不同格式的邮件
2019/12/30 Python
pytorch 模型的train模式与eval模式实例
2020/02/20 Python
Python多进程编程multiprocessing代码实例
2020/03/12 Python
python 画条形图(柱状图)实例
2020/04/24 Python
Python Django搭建网站流程图解
2020/06/13 Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
2021/01/12 Python
Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
2021/01/13 Python
英国女性运动服品牌:Sweaty Betty
2018/11/08 全球购物
公司活动总结范文
2014/07/01 职场文书
学习优秀党员杨宗兴先进事迹材料思想汇报
2014/09/14 职场文书
银行开户授权委托书格式
2014/10/10 职场文书
2014年合同管理工作总结
2014/12/02 职场文书
优秀党务工作者先进事迹材料
2014/12/25 职场文书
乡镇团委工作总结2015
2015/05/26 职场文书
大学文艺委员竞选稿
2015/11/19 职场文书
详解JVM系列之内存模型
2021/06/10 Javascript
python模拟浏览器 使用selenium进入好友QQ空间并留言
2022/04/12 Python