zoukankan      html  css  js  c++  java
  • 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: 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
  • 相关阅读:
    轻松实现WCF服务的构造函数依赖注入
    终于找到在Visual Studio 2010中进行“项目重命名”的有效工具
    让Entity Framework不再私闯sys.databases
    AutoMapper使用笔记
    遭遇IE8下的JavaScript兼容问题
    WCF异步调用中客户端关闭带来的性能问题
    Chrome “False Start” 引起的 Error 7 (net::ERR_TIMED_OUT): The operation timed out
    实战ASP.NET访问共享文件夹(含详细操作步骤)
    Entity Framework 理清关系 基于外键关联的单向一对一关系
    在Firefox中通过JavaScript复制到剪贴板(Copy to Clipboard)
  • 原文地址:https://www.cnblogs.com/mirrortom/p/9646015.html
Copyright © 2011-2022 走看看