目标

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

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

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. 作为开发人员,这四类Code Review方法你都知道吗?

    本文翻译自:https://dzone.com/articles/4-types-of-code-reviews-any-professional-developer 转载请注明出处:葡萄城官网,葡萄 ...

  2. Docker创建JIRA 7.2.4中文破解版

    目录 目录 1.介绍 1.1.什么是JIRA? 2.JIRA的官网在哪里? 3.如何下载安装? 4.对JIRA进行配置 4.1.打开浏览器:http://localhost:20012 4.2.JIR ...

  3. Django Windows环境下部署

    环境准备 本文将介绍如何在Windows系统上部署Django web项目,本次部署基于下面的架构: Windows10 64位+Python3.6+Django1.11+Apache2.4+mod_ ...

  4. Python第三天 序列 5种数据类型 数值 字符串 列表 元组 字典 各种数据类型的的xx重写xx表达式

    Python第三天 序列  5种数据类型  数值  字符串  列表  元组  字典 各种数据类型的的xx重写xx表达式 目录 Pycharm使用技巧(转载) Python第一天  安装  shell ...

  5. Prometheus Operator - 每天5分钟玩转 Docker 容器技术(177)

    前面我们介绍了 Kubernetes 的两种监控方案 Weave Scope 和 Heapster,它们主要的监控对象是 Node 和 Pod.这些数据对 Kubernetes 运维人员是必须的,但还 ...

  6. 使用web3.js监听以太坊智能合约event

    传送门: 柏链项目学院 使用web3.js监听以太坊智能合约event   当我们在前端页面调用合约时发现有些数据不会立即返回,这时还需要再调用更新数据的函数.那么这样的方法使用起来非常不便,监听ev ...

  7. C语言----int (*p)[4] ---思考总结

    a+1  跳4个int (*a)+1 跳一个int

  8. VMware14虚拟机下安装Centos6.5

    一.下载VMware14,CentOS6.5光盘映像文件. https://pan.baidu.com/s/1WaTBnYuNC5dLYM_Ra2bjBQ 二.安装过程 1.打开VMware虚拟机 — ...

  9. Python开发【前端篇】CSS

    1.css基本语法及页面引用 css基本语法 css的定义方法是: 选择器 { 属性:值; 属性:值; 属性:值;} 选择器是将样式和页面元素关联起来的名称,属性是希望设置的样式属性每个属性有一个或多 ...

  10. 关于表单元素的name及HTML中的id

    这种在上高级WEB课时,老师为表单元素赋了name值,之后直接在JS中使用该值而不需要使用document.get...来获取了,例: <!DOCTYPE html> <html&g ...