js侧边菜单

摘要:
目标实现一个侧边栏菜单,最多二级,可以收起展开.用于系统左侧的主菜单.大多数系统都会有这样的菜单,用于导航功能,切换到不同的操作页面.在单页应用系统中,菜单一般是固定在左侧,分组节点上配图标,高亮显示当前选中菜单.可以收起菜单组.html菜单容器nav,里面每个ul是一组菜单,每个sidemenu-title是菜单组的标题,可以加图标.˂u

目标

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

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

js侧边菜单第1张js侧边菜单第2张js侧边菜单第3张

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:0;
  padding:0;
  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:600; }
.sidemenu-arrleft, .sidemenu-arrdown {
  float:right;
  margin-top:.3em; }
.sidemenu-arrleft {
  display:inline-block;
  width:0;
  height:0;
  border:0.5em solid transparent;
  border-right-color:#6c757d; }
.sidemenu-arrdown {
  display:inline-block;
  width:0;
  height:0;
  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:500;
  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侧边菜单》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JavaBean的详细及引用js判断上传文件的类型和大小下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

js布尔类型

<!--禁用--> <inputtype="text" disabled> <!--只读--> <inputtype="text" readonly> <!--多选--> <inputtype="file"multiple> <!--默认选中--> <inputty...

js 清空文本框

js清空文本框: TextBox 服务器,客户端都清空   /// <summary>    /// 清空文本框    /// </summary>    /// <param name="controls"></param>    public void EmptyTextBox(ControlColle...

js前台传数组,java后台接收转list,前后台用正则校验

前台,传参数时,将数组对象转换成json串,后台java收到后用 JSONArray.fromObject 转成集合。 前台js:var params = {"FileNameList": JSON.stringify(fileNames)}; 前台正则校验: var reg = /^[u4e00-u9fa5A-Za-z0-9-]{1,50}.txt$/;...

JS页面绝对定位元素拖动

一.mousedown、mousemove和mouseup 拖着目标元素在页面任意位置 如果要设置物体拖拽,那么必须使用三个事件,并且这三个事件的使用顺序不能颠倒。 1.onmousedown:鼠标按下事件2.onmousemove:鼠标移动事件3.onmouseup:鼠标抬起事件 重点: 1、一定要绝对定位,脱离文档流才可以移动。 2、绑定拖拽的元素,移...

页面加载时自动执行(加载)js的几种方法

一、JS方法1.最简单的调用方式,直接写到html的body标签里面: <html> <body οnlοad="load();"> </body> </html> 2.在JS语句调用: <script type="text/javascript"> function myfun()   {   ...

GitExtensions工具安装与配置

  GitExtensions工具使用教程 第一步:安装 1.双击:GitExtensions24703SetupComplete.msi <ignore_js_op>  <ignore_js_op>  选择安装路径 <ignore_js_op>      <ignore_js_op>  <ignore...