jquery.metisMenu.js插件_Mia_shuangchen的博客-程序员秘密

技术标签: js插件  

metisMenu是一个jQuery的导航栏插件,使用该插件可以定义导航栏的二级甚至三级导航菜单,并能实现菜单的折叠和展开等操作,将节省我们的开发时间,提高开发效率。 

1. 准备工作:引入文件

  • bootstrap.min.js
  • bootstrap.min.css
  • metisMenu.min.js //插件代码
  • metisMenu.min.css //可选
  • font-awesome.min.css
  • jquery.min.js

2. 调用方法

<script type="text/javascript">
$(function() {
    $('#side-menu').metisMenu(); // ul.nav#side-menu
})
</script>
3. 侧边栏导航主体
<nav class="navbar navbar-default navbar-static-top">
    <div class="navbar-default sidebar" role="navigation">
        <div class="sidebar-nav navbar-collapse">
            <ul class="nav" id="side-menu">
                <li class="sidebar-search">
                    <div class="input-group custom-search-form">
                        <input type="text" class="form-control" placeholder="Search...">
                        <span class="input-group-btn">
                            <button class="btn btn-default" type="button">
                                <i class="fa fa-search"></i>
                            </button>
                        </span>
                    </div>
                </li>
                <li>
                    <a href=""><i class="fa fa-dashboard fa-fw"></i> Dashboard</a>
                </li>
                <li>
                    <a href="#"><i class="fa fa-bar-chart-o fa-fw"></i> Charts<span
                                class="fa arrow"></span></a>
                    <ul class="nav nav-second-level">
                        <li>
                            <a href="">Flot Charts</a>
                        </li>
                        <li>
                            <a href="">Morris.js Charts</a>
                        </li>
                    </ul>
                </li>
                <li>
                    <a href=""><i class="fa fa-table fa-fw"></i> Tables</a>
                </li>
                <li>
                    <a href=""><i class="fa fa-edit fa-fw"></i> Forms</a>
                </li>
                <li>
                    <a href="#"><i class="fa fa-wrench fa-fw"></i> UI Elements<span
                                class="fa arrow"></span></a>
                    <ul class="nav nav-second-level">
                        <li>
                            <a href="">Panels and Wells</a>
                        </li>
                        <li>
                            <a href="">Buttons</a>
                        </li>
                        <li>
                            <a href="">Notifications</a>
                        </li>
                        <li>
                            <a href="">Typography</a>
                        </li>
                        <li>
                            <a href=""> Icons</a>
                        </li>
                        <li>
                            <a href="">Grid</a>
                        </li>
                    </ul>
                </li>
                <li>
                    <a href="#"><i class="fa fa-sitemap fa-fw"></i> Multi-Level Dropdown<span
                                class="fa arrow"></span></a>
                    <ul class="nav nav-second-level">
                        <li>
                            <a href="#">Second Level Item</a>
                        </li>
                        <li>
                            <a href="#">Second Level Item</a>
                        </li>
                        <li>
                            <a href="#">Third Level <span class="fa arrow"></span></a>
                            <ul class="nav nav-third-level">
                                <li>
                                    <a href="#">Third Level Item</a>
                                </li>
                                <li>
                                    <a href="#">Third Level Item</a>
                                </li>
                                <li>
                                    <a href="#">Third Level Item</a>
                                </li>
                                <li>
                                    <a href="#">Third Level Item</a>
                                </li>
                            </ul>
                        </li>
                    </ul>
                </li>
                <li class="active">
                    <a href="#"><i class="fa fa-files-o fa-fw"></i> Sample Pages<span
                                class="fa arrow"></span></a>
                    <ul class="nav nav-second-level">
                        <li>
                            <a class="active" href="#">Blank Page</a>
                        </li>
                        <li>
                            <a href="#">Login Page</a>
                        </li>
                    </ul>
                </li>
            </ul>
        </div>
    </div>
</nav>

3. 实现思路

  • 初始化

    获取当前激活的标签,将该标签的内容显示(如果没有子标签则不显示)

    未激活的标签,所有子列表隐藏

  • 点击事件(通过boostrap的collapse插件)

    当前点击的标签获取激活样式,子列表展开

    除点击标签之外的其他标签移除激活样式,并闭合

源码解读

jquery.metisMenu.js

  • 调用

使用$.fn.extend(object)的方式为jquery类添加成员方法,功能封装在原型中,能够全局调用;

通过$("#side-menu")生成的jquery类实例来调用该方法;

  • 初始配置

全局定义插件名称pluginName,定义对象defaults存放toggle(展开/闭合)与doubleTapToGo(双击事件)的开关;

  • 样式

使用font-awesome来扩展侧边栏图标和展开标识(三角),引入font-awesome.css后只需要通过i.fa.fa-***来调用就可以了

基础布局通过bootstrap类实现,详细分支情况见属性图

  • 初始化展开

借助bootstrap内置的collapse插件来实现;

通过检测<li.active>来标识当前页对应的列表,在metisMenu.js中检查是否需要展开的列表;

判断激活的标签栏是否有子列表,如果有则添加.collapse.in类(bootstrap.css),实际为添加样式{display:block};

未被激活的标签栏如果有子列表则添加.collapse类(boostrap.css),{display:none};

  • 监听点击事件

监听方法借助bootstrap的collapse插件;

绑定事件时需要遵循collapse插件规则.on("click"+"."+pluginName,function(e){});

为点击的标签栏添加激活样式.active,如果有子列表则展开/关闭,使用collapse插件方法.collapse("toggle");

闭合其他所有有子列表的标签栏,使用.collapse("hide");

4. 树形图

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Mia_shaungchen/article/details/83388223

智能推荐

android FATAL EXCEPTION: Thread - 101 错误问题_一别两宽的博客-程序员秘密

  最近遇到一个错误,小错误,但有可能经常不注意的地方,我们都知道大多数情况下我们都是在子线程进行耗时操作,在主线程更新UI。因此我们有很多子线程耗时操作的东西出现(说了句废话);   我来说说我遇到的问题情况, new Thread(new Runnable() { @Override public void...

HDLBits刷题_Verilog Language_Module add_you are given a module add16 that performs a 16-bi_温故而知新2020的博客-程序员秘密

学习内容You are given a module add16 that performs a 16-bit addition. Instantiate two of them to create a 32-bit adder. One add16 module computes the lower 16 bits of the addition result, while the second add16 module computes the upper 16 bits of the result,

HDLBits刷题_Verilog Language_Module cseladd_Little_Engineer456的博客-程序员秘密

One drawback of the ripple carry adder (Seeprevious exercise) is that the delay for an adder to compute the carry out (from the carry-in, in the worst case) is fairly slow, and the second-stage adder cannot begin computingitscarry-out until the first-st...

一篇文章了解什么是增长黑客_Hunter-狩猎者的博客-程序员秘密

最近在Kindle上读了范冰的《增长黑客》,对增长黑客有了更系统的了解。联想到我自己的微信公众号hacker-thinking和独立博客blog.coderzh.com,我也在苦苦寻找用户增长的终极奥义。我也尝试过各种SEO(搜索引擎优化),比如规范链接地址、nofollow防止权重降低、提供sitemap、增加关键词、规范robots.txt、加快访问速度、增加反向链接等等。肯定有人会说,这些东

SpringDataJpa的扩展_spring jpa扩展_极乐码农的博客-程序员秘密

SpringDataJpa的扩展继承JpaSpecificationExecutor继承JpaSpecificationExecutordao层public interface PersonDao extends JpaRepository&lt;Person,Integer&gt;, JpaSpecificationExecutor&lt;Person&gt; {}案例测试1单条件 /* * 根据条件,查询单个对象 * */ @Test publ

随便推点

Operating Systems: Three Easy Pieces阅读笔记(二)concurrence-lock&condition val&semaphores_-mcpu=cortex-a7 __concurrence_lock_error_yeqm_的博客-程序员秘密

**concurrence: lock** 1。不能用简单的flag(如int的0、1置换)实现lock,原因在于实现lock的过程本身就不是原子操作,存在被打断的可能。 2。spin lock 过于浪费cpu时间片,在已有线程获取锁的情况下,其余线程只能消耗光一个时间片 3。Lock With Queues, Test-and-set, Yield, And Wakeup

Cesium深入浅出之图层管理器_cesium图层管理_Helsing的博客-程序员秘密

引子早就想做这篇内容了,毕竟做为一个GIS平台,没有图层管理器多不方便啊。然而在Cesium中图层这个概念都很模糊,虽然可以加载很多类型的数据,但是每种数据规格都不一样,导致加载进来之后并不能进行统一且有效的管理。熟悉ArcGIS的朋友一定知道,在ArcGIS中几乎所有的数据都是使用图层来承载的,因此想要管理图层数据轻而易举。而在Cesium中,除了影像数据能算的上图层以外,其他的数据压根都和图层扯不上关系,这点从其命名(imageryLayers)上就可以看得出来。但是这并不代表它不能以图层的方式进行

TCL语言笔记:TCL中的数学函数_weixin_30670965的博客-程序员秘密

一、TCL数学函数列表函数名说明举例abs(arg)取绝对值set a –10 ; #a=-10 set a [expr abs($a)]; # a=10acos(arg)反余弦set p 1.0; set a [expr acos($p) =&gt;...

kmemleek检测工具原理及使用方法_a13689135190的博客-程序员秘密

Kmemleak(Kernel Memory Leak Detector)以类似于跟踪垃圾收集器的方式提供了一种检测可能的内核内存泄漏的方法,区别在于没有释放孤立对象,而只是通过/ sys / kernel / debug / kmemleak报告。 Valgrind工具(memcheck --leak-check)使用类似的方法来检测用户空间应用程序中的内存泄漏。 Kmemleak支持x86,a...

程序员的特有浪漫_进阶媛小吴的博客-程序员秘密

**《程序员那么可爱》**我只记录前面十三集,后续没有时间记录了。因为我看完,才想起我该记录一下啊。很多句子也恰当。小吴自己想了一个,感觉也很贴切我身边的一个经历。我们之间程序出现了警告️,虽然不会影响程序的正常的运行,但是心里很膈应。第一集一次相亲偶遇两人男主和两位小姐相亲。秦小姐就像Linux系统,条件虽好,但是操作做复杂,而徐小姐就像是windows系统虽然操作简单但是容易死机。你觉得自己跟其他人比有什么优势?我在学校期间,我的专业成绩和综合考评都是专业第一。我还参加过很多国内外的.

Linux—调试器-gdb使用—Linux项目自动化工具make/Makefile—详解_makefile 打开coredump_清欢有道的博客-程序员秘密

本节目录Linux调试器-gdb使用gdb使用背景gdb调试使用指令gdb调试coredump文件Linux项目自动化工具make/Makefile背景实例代码依赖关系依赖方法原理预定义变量makefile清理make当中也可以自定义变量Linux调试器-gdb使用gdb使用背景程序的发布方式有两种,debag模式和releasa模式如果是在Linux操作系统下,进行调试程序,需要在编译的时候,将程序编译成debag版本。debag:是程序的一个调试版本,增加了一些调试信息,这些调试信息,可以帮

推荐文章

热门文章

相关标签