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 1.5中使用deferred对象的代码(翻译)
Mar 10 Javascript
了解了这些才能开始发挥jQuery的威力
Oct 10 Javascript
Node.js的包详细介绍
Jan 14 Javascript
深入理解JavaScript系列(33):设计模式之策略模式详解
Mar 03 Javascript
JS实现的文字与图片定时切换效果代码
Oct 06 Javascript
Bootstrap布局方式详解
May 27 Javascript
使用jquery判断一个元素是否含有一个指定的类(class)实例
Feb 12 Javascript
JavaScript中最常见的三个面试题解析
Mar 04 Javascript
JavaScript通过filereader接口读取文件
May 10 Javascript
angular json对象push到数组中的方法
Feb 27 Javascript
vue 实现特定条件下绑定事件
Nov 09 Javascript
vue中实现回车键登录功能
Feb 19 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函数utf8转gb2312编码
2006/12/21 PHP
测试您的 PHP 水平的题目
2007/05/30 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
简单谈谈PHP中的trait
2017/02/25 PHP
php创建图像具体步骤
2017/03/13 PHP
关于jquery append() html时的小问题的解决方法
2010/12/16 Javascript
javascript时间自动刷新实现原理与步骤
2013/01/06 Javascript
NodeJS的url截取模块url-extract的使用实例
2013/11/18 NodeJs
JavaScript中双叹号!!作用示例介绍
2014/09/21 Javascript
javascript比较两个日期的先后示例代码
2014/12/31 Javascript
jQuery中的siblings用法实例分析
2015/12/24 Javascript
引用jquery框架后出错的解决方法
2016/08/09 Javascript
使用Javascript监控前端相关数据的代码
2016/10/27 Javascript
JS实现线性表的链式表示方法示例【经典数据结构】
2017/04/11 Javascript
jQuery实现可编辑表格并生成json结果(实例代码)
2017/07/19 jQuery
JS正则表达式完美实现身份证校验功能
2017/10/18 Javascript
详解如何使用 vue-cli 开发多页应用
2017/12/16 Javascript
vue-lazyload图片延迟加载插件的实例讲解
2018/02/09 Javascript
微信小程序实现签到功能
2018/10/31 Javascript
python使用opencv进行人脸识别
2017/04/07 Python
对Python进行数据分析_关于Package的安装问题
2017/05/22 Python
Python基于time模块求程序运行时间的方法
2017/09/18 Python
python爬虫基本知识
2018/03/05 Python
在Python中居然可以定义两个同名通参数的函数
2019/01/31 Python
Python+Kepler.gl轻松制作酷炫路径动画的实现示例
2020/06/02 Python
pytorch 实现L2和L1正则化regularization的操作
2021/03/03 Python
澳大利亚设计师服装在线:MISHA
2019/10/07 全球购物
Herschel Supply Co.美国:背包、手提袋及配件
2020/11/24 全球购物
自我鉴定范文300字
2013/10/01 职场文书
策划助理岗位职责
2013/11/18 职场文书
群众路线教育实践活动思想汇报(2014特荐篇)
2014/09/16 职场文书
领导走群众路线整改措施思想汇报
2014/10/12 职场文书
领导干部群众路线对照检查材料
2014/11/05 职场文书
python基于机器学习预测股票交易信号
2021/05/25 Python
pandas提升计算效率的一些方法汇总
2021/05/30 Python
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
2021/06/11 Python