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



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侧边菜单的更多相关文章
- JS树形菜单
超全的JS树形菜单源代码共享(有实例图) 树形菜单是很常用的效果,常用在管理软件当中,但是一套树形菜单已经不能满足需求,所以如果能有一套比较全面的树形菜单JS特效代码,将会非常方便,下面懒人萱将超全的 ...
- iOS之UI--使用SWRevealViewController实现侧边菜单功能详解实例
使用SWRevealViewController实现侧边菜单功能详解 下面通过两种方法详解SWRevealViewController实现侧边菜单功能: 1.使用StoryBoard实现 2.纯代 ...
- js矩阵菜单或3D立体预览图片效果
js矩阵菜单或3D立体预览图片效果 下载地址: http://files.cnblogs.com/elves/js%E7%9F%A9%E9%98%B5%E8%8F%9C%E5%8D%95%E6%88% ...
- 顶 兼容各种浏览器js折叠菜单
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- SlidingMenu侧边菜单
第一步.首先在你项目中创建一个包存放侧边菜单的类:
- 基于Bootstrap Ace模板+bootstrap.addtabs.js的菜单
这几天研究了基于bootstrap Ace模板+bootstra.addtabs.js实现菜单的效果 参考了这个人的博客 https://www.cnblogs.com/landeanfen/p/76 ...
- 适合移动手机使用的js环形菜单特效插件
blooming-menu是一款适合在移动手机上使用的js环形菜单插件.该环形菜单提供了众多的參数,通过结合CSS3动画制作出效果很炫酷的圆形菜单展开和隐藏动画效果. 以下是这个圆形菜单菜价的可用參数 ...
- react-native + teaset(Drawer)实现侧边菜单
1.代码 /** * 购物车 */ import React, {Component} from 'react'; import { View, Image, } from 'react-native ...
- iOS之UI--使用SWRevealViewController 实现侧边菜单功能详解实例
iOS之UI--使用SWRevealViewController 实现侧边菜单功能详解实例 使用SWRevealViewController实现侧边菜单功能详解 下面通过两种方法详解SWReveal ...
随机推荐
- zabbix server3.4 使用mailx配置邮件报警
软件具体配置如下: 操作系统:Centos7.5 zabbix server版本:zabbix server3.4 zabbix agent版本:zabbix agent3.0 现在开始配置zabbi ...
- electron入坑指南
electron入坑指南 简介 electron 实际集成chrome浏览器和node环境, 运行你写的网页 app 基本目录结构 index.html 名称可以不是index, 这个文件与普通网页的 ...
- java 中文乱码以及转码
查看此文章需要对字符集编码有一定的认识:任意门:字符集编码基础 一.字符串的内部表示? 重点:字符串在java(指在JVM中.在内存中)中统一用unicode表示( 即utf-16 LE) , 下面解 ...
- mysql安装和配置(windowns||centos)
windows10版本安装 1.获取mysql压缩包 https://dev.mysql.com/downloads/mysql/ 2.解压并配置文件my.ini .解压的文件路径 D:\Progra ...
- Filebeat插件启动失败,不能直接查找报错原因
老是在filebeat启动的这一步骤上出错,但是由于filebeat是由systemd启动的,因此原因也经常查不清楚,因此并不能直观的查出错误在哪里,所以今天教给大家两个寻找错误的根源的方法 先看我这 ...
- 【English】20190321
Keep in mind记住[kip ɪn maɪnd] maintenance维护[ˈmentənəns] Also Keep in mind that table maintenance use ...
- bsp makefile2
1. grep "bsp_dir" -r ./ -s --exclude-dir "*.git" 用这个加快目录定位-- 2.编译所有子目录 for dir ...
- Nginx 配置 和安装
Nginx 博客 web服务器和web框架的关系 web服务器(nginx): 接收HTTP请求(例如www.pythonav.cn/xiaocang.jpg)并返回数据 web服务器,仅仅就是 接收 ...
- Linux内存管理 (9)mmap
专题:Linux内存管理专题 关键词:文件映射.匿名映射.私有映射.共享映射 mmap/munmap是常用的一个系统调用,使用场景是:分配内存.读写大文件.连接动态库文件.多进程间共享内存. 更详细解 ...
- 4-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(为域名申请SSl证书)
3-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(购买域名,域名绑定IP) 然后就是等着..... 假设可以了 咱呢是配置MQTT实现SSL安全加密通信,所以 ...