目标

实现一个侧边栏菜单,最多二级,可以收起展开.用于系统左侧的主菜单.

大多数系统都会有这样的菜单,用于导航功能,切换到不同的操作页面.在单页应用系统中,菜单一般是固定在左侧,分组节点上配图标,高亮显示当前选中菜单.可以收起菜单组.

html

菜单容器nav,里面每个ul是一组菜单,每个sidemenu-title是菜单组的标题,可以加图标.

<nav class="sidemenu-box gray">
<ul class="sidemenu-group">
<li>
<a class="sidemenu-title">
<li class="sidemenu-icon fa fa-home"></li><span class="sidemenu-label">分组标题</span><i class="sidemenu-arrdown"></i>
</a>
</li>
<li><a class="sidemenu-item active">活动菜单项</a></li>
<li><a class="sidemenu-item">菜单项</a></li>
<li><a class="sidemenu-item">菜单项</a></li>
....
</ul>
...
</nav>

使用

// 实例化
$('#sidemenu1').sidemenu();
// 传一个参数{ <b>menuClick</b> : fn } 该函数参数在点击菜单后执行.
$('#sidemenu2').sidemenu({menuClick:function(menuJQ){alert('点击了菜单')}});

这个插件非常简单,仅实现了菜单的点击反色,收起展开功能

/**
* 侧边菜单
*/
$.fn.extend({
// let sidemenu = $('#sidemenu1').sidemenu(cfg);
// {menuClick:fn(菜单点击后事件)}
sidemenu: function (config)
{
let menuJQ = $(this);
// 菜单点击事件
menuJQ.find('.sidemenu-item').on('click', function ()
{
let clsN = 'active';
$(this).closest('.sidemenu-box').find('.sidemenu-item').removeClass(clsN);
$(this).addClass(clsN);
if (config && typeof config.menuClick == 'function')
{
config.menuClick($(this));
}
})
// 一级菜单收起与展开
menuJQ.find('.sidemenu-title').on('click', function ()
{
let showClsN = 'sidemenu-arrdown', hideClsN = 'sidemenu-arrleft';
let arrJQ = $(this).find('.' + showClsN + ',.' + hideClsN);
if (arrJQ.hasClass(showClsN))
{
arrJQ.addClass(hideClsN).removeClass(showClsN);
$(this).closest('.sidemenu-group').find('.sidemenu-item').hide();
} else
{
arrJQ.addClass(showClsN).removeClass(hideClsN);
$(this).closest('.sidemenu-group').find('.sidemenu-item').show();
}
})
}
})

sidemenu.js

.sidemenu-box {
background-color: #f8f9fa;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none; } .sidemenu-group {
margin:;
padding:;
list-style: none; } .sidemenu-item, .sidemenu-title {
display: block;
color: #6c757d;
cursor: pointer; } .sidemenu-item:hover, .sidemenu-title:hover {
text-decoration: none;
color: #212529; } .sidemenu-title {
padding: .8em; } .sidemenu-label {
font-weight:; } .sidemenu-arrleft, .sidemenu-arrdown {
float: right;
margin-top: .3em; } .sidemenu-arrleft {
display: inline-block;
width:;
height:;
border: 0.5em solid transparent;
border-right-color: #6c757d; } .sidemenu-arrdown {
display: inline-block;
width:;
height:;
border: 0.5em solid transparent;
border-top-color: #6c757d; } .sidemenu-icon {
margin: 0 .4em 0 -.4em; } .sidemenu-item {
padding: .4em 0 .4em 2.4em;
font-weight:;
color: #adb5bd; } .sidemenu-item.active {
background-color: #007bff;
color: #fff; } .sidemenu-box.gray .sidemenu-item.active {
background-color: #6c757d; } .sidemenu-box.green .sidemenu-item.active {
background-color: #28a745; } .sidemenu-box.red .sidemenu-item.active {
background-color: #dc3545; } .sidemenu-box.yellow .sidemenu-item.active {
background-color: #ffc107; }

css

js侧边菜单的更多相关文章

  1. JS树形菜单

    超全的JS树形菜单源代码共享(有实例图) 树形菜单是很常用的效果,常用在管理软件当中,但是一套树形菜单已经不能满足需求,所以如果能有一套比较全面的树形菜单JS特效代码,将会非常方便,下面懒人萱将超全的 ...

  2. iOS之UI--使用SWRevealViewController实现侧边菜单功能详解实例

    使用SWRevealViewController实现侧边菜单功能详解 下面通过两种方法详解SWRevealViewController实现侧边菜单功能: 1.使用StoryBoard实现   2.纯代 ...

  3. js矩阵菜单或3D立体预览图片效果

    js矩阵菜单或3D立体预览图片效果 下载地址: http://files.cnblogs.com/elves/js%E7%9F%A9%E9%98%B5%E8%8F%9C%E5%8D%95%E6%88% ...

  4. 顶 兼容各种浏览器js折叠菜单

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. SlidingMenu侧边菜单

    第一步.首先在你项目中创建一个包存放侧边菜单的类:

  6. 基于Bootstrap Ace模板+bootstrap.addtabs.js的菜单

    这几天研究了基于bootstrap Ace模板+bootstra.addtabs.js实现菜单的效果 参考了这个人的博客 https://www.cnblogs.com/landeanfen/p/76 ...

  7. 适合移动手机使用的js环形菜单特效插件

    blooming-menu是一款适合在移动手机上使用的js环形菜单插件.该环形菜单提供了众多的參数,通过结合CSS3动画制作出效果很炫酷的圆形菜单展开和隐藏动画效果. 以下是这个圆形菜单菜价的可用參数 ...

  8. react-native + teaset(Drawer)实现侧边菜单

    1.代码 /** * 购物车 */ import React, {Component} from 'react'; import { View, Image, } from 'react-native ...

  9. iOS之UI--使用SWRevealViewController 实现侧边菜单功能详解实例

     iOS之UI--使用SWRevealViewController 实现侧边菜单功能详解实例 使用SWRevealViewController实现侧边菜单功能详解 下面通过两种方法详解SWReveal ...

随机推荐

  1. 一个「学渣」从零开始的Web前端自学之路

    从 13 年专科毕业开始,一路跌跌撞撞走了很多弯路,做过餐厅服务员,进过工厂干过流水线,做过客服,干过电话销售可以说经历相当的“丰富”. 最后的机缘巧合下,走上了前端开发之路,作为一个非计算机专业且低 ...

  2. anaconda --包管理和环境管理器

    前言: 以下所有的命令都Win10环境的 Anaconda Prompt 中 环境管理 创建虚拟环境 conda create --name env_name python 也可以指定 Python ...

  3. 关于tomcat 配置时一闪而过的问题

    TOMCAT JAVA_HOME or JRE_HOME environment variable is not defined correctly 按照教程已经安装了JDK并设置好了JAVA_HOM ...

  4. 使用mybatis报错【Result Maps collection already contains value for ...BaseResultMap】的解决方法

    Result Maps collection already contains value for ...BaseResultMap ...... 这个问题,相信大家在使用mybatis的重新生成 d ...

  5. PowerDesigner导出SQL,注释为空时以name代替

    版本 操作步骤 打开Edit Current DBMS 选中Script->Objects->Column->Add 将Value中的内容全部替换为如下 %20:COLUMN% [% ...

  6. HTML之间互相传参

    如图所示,在index.html详情展示中给detailsPanel穿参数,在detailsPanel中获取到参数写ajax到后台获取json数据,那么如何在detailsPanel.html中获取传 ...

  7. centos7源码包安装Mongodb,并设置开机自启动

    1.下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.12.tgz 2.解压 放到 /usr/local/ ...

  8. 自己编写 EntityTypeConfiguration

    1.新建类库 EFCore.EntityTypeConfig ,安装nuget  PM> Install-Package Microsoft.EntityFrameworkCore 2.新建接口 ...

  9. IS创新之路 -- 都昌公司赋能型HIT企业发展之路

    ◆◆前言 近日,上海瑞金医院对我司表示:“我院从2000年开始自主开发医院信息系统,走出了一条可持续的信息化发展之路.已建成五大系统,284个子系统.但我院仍然坚持在努力推进以电子病历为核心医院信息化 ...

  10. HTTP常见错误返回状态代码

    当⽤用户试图通过HTTP或FTP协议访问⼀一台运⾏行行主机上的内容时,Web服务器器返回⼀一个表示该请求的状态的数字代码.该状态代码记录在服务器器⽇日志中,同时也可能在Web 浏览器器或 FTP客户端 ...