目标

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

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

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. 坚定关于考研或者工作的决定:work

    转眼之间,我已经夸过了大二结束的节点,已经是一个准大三了: 在这个岔路口,首要的选择就是考研和工作的选择:我也有过犹豫要不要考研,最终还是放弃了考研的想法,从考研的利弊两个方面来谈:        首 ...

  2. Nodejs 操作 Sql Server

    Nodejs 操作 Sql Server Intro 最近项目需要爬取一些数据,数据有加密,前端的js又被混淆了,ajax请求被 hook 了,有些复杂,最后打算使用 puppeteer 来爬取数据. ...

  3. 使用 Nexus Repository Manager 搭建 npm 私服

    目录 环境 下载与安装 添加npm仓库 配置与验证npm仓库 发布自己的包 Nexus开启启动 脚注 环境 windows10(1803) Nexus Repository Manager OSS 3 ...

  4. 测者的性能测试手册:Yourkit 监控JettyYourkit 监控Jetty

    Yourkit是收费工具,每一个email可以免费试用15天,觉得好的朋友可以自行选择购买 服务器端下载yourkit(java) Windows安装yourkit Java Profiler 201 ...

  5. MongoDB 3.6版本关于bind_ip设置

    2017年下半年新发布的MongoDB 3.6版本在安全性上做了很大提升,主要归结为两点: 1.将将bind_ip 默认值修改为了localhost: 2. 在db.createUser()和 db. ...

  6. Python爬虫实战之Requests+正则表达式爬取猫眼电影Top100

    import requests from requests.exceptions import RequestException import re import json # from multip ...

  7. spingboot一键部署到阿里云(Cloud Toolkit工具)

    一般做法 一键部署工具   前些天在完成一个项目时候需要将springboot项目部署到服务器上, 以下是两种做法 前面介绍的是一般做法: 后面将介绍省去这些步骤的一键部署工具Cloud Toolki ...

  8. css3新特性合集

    转自:https://www.cnblogs.com/xiaoxie2016/p/5964694.html (若原作者对此转载有疑问,联系删除,谢谢!) animation    IE10 anima ...

  9. 给Integer对象加锁的错误方式

    package com.thread.test; public class BadLockOnInteger implements Runnable { public static Integer i ...

  10. linux目录2

    19.linux注释多行 20.防火墙 21.创建逻辑卷 22.两台主机,ssh端口不同,如何拷贝文件