MetisMenu : Jquery + CSS 实现可隐藏的二级侧边栏导航

news/2024/7/11 0:50:56 标签: jquery, css, metismenu

首先请自行导入相关的文件,主要用到的是MetisMenu。

效果图如下:

这里写图片描述


导航栏结构:

<span id="leftpane-toggle" class="glyphicon glyphicon-align-justify"></span>
<ul id="left-sider-menu" class="left-sider">
  <li>
    <a href="#">
        <%= content_tag(:i, "", :class => "fa fa-dashboard fa-fw") %>
        Overview
     </a>
  </li>
  <li>
    <a href="#">
        <i class="fa fa-table fa-fw"></i> 
        A
       <span class="fa arrow"></span>
    </a>
    <ul class="left-sider nav-second-level">
        <li>
            <a href="/test/a"> a </a>
        </li>
        </ul>
  </li>
  <li>
        <a>
             <i class="fa fa-users fa-fw"></i> B<span class="fa arrow"></span>
         </a>
          <ul class="left-sider nav-second-level">
          <li>
            <a href="/test/b"> b </a>
          </li>
           </ul>
  </li>
  <li>
        <a href="/test/c">
            <%= content_tag(:i, "", :class => "fa fa-cloud-download") %>
            <span style="margin-left:4px;"> C</span>
        </a>
  </li>

  <li>
    <a href="#">
        <i class="fa fa-table fa-fw"></i> 
         D 
        <span class="fa arrow"></span>
    </a>
        <ul class="left-sider nav-second-level">
                <li class="left-sider nav-second-level">
                    <a href="/test/d1"> d1 </a>
                </li>
                <li>
                    <a href="/test/d2"> d2</a>
                </li>
                <li>
                    <a href="/test/d3"> d3 </a>
                </li>
                <li>
                    <a href="/test/d4"> d4</a>
                </li>
                <li>
                    <a href="/test/d5"> d5 </a>
                </li>
  </li>
</ul>

css代码">CSS代码:

css">$grey: #F8F8F8;
$dark-grey: #EEEEEE;
$transparent-grey: #EEEEEE;
$grey-blue: #428BCA;
$white: #FFFFFF;
$black: #333333;
.navbar {
  margin: 0;
  background:$grey;
}
#main {
  background: $white;
  height: 100%;
  position: relative;
  margin-top:0;
  &.toggle {
    #leftpane {
      left: -230px;
    }
    #content { margin-left: 0; }
  }
}
#leftpane {
  background: $grey;
  height: 100%;
  left: 0;
  overflow-x: hidden;
  padding-top: 45px;
  position: absolute;
  top: 0;
  // transition: .5s;
  width: 275px;
  z-index: 1;
  ul {
    list-style: none;
    padding: 0;
  }
}

.left-sider {
    background-color: $grey;
    li{
      border-color:$dark-grey;
      border-width:1px;
      border-top-style:  solid;
    }
    a {
    color: $grey-blue;
    display: block;
    font-size: 14px;
    padding: 10px 10px 10px 24px;
    text-decoration: none;
    transition: .3s;
    }
    a:hover {
      background-color: $transparent-grey;
    } 
  }
.left-sider .nav-second-level {
  background-color: $grey;  
  li{
      border-color:$dark-grey;
      border-width:1px;
      //border-bottom-style:  solid;
    }

  a {
    color: $grey-blue;
    display: block;
    font-size: 13px;
    padding: 10px 10px 10px 44px;
    text-decoration: none;
    transition: .3s;
  }
  a:hover {
      background-color: $transparent-grey;
  }
}

#leftpane-toggle {
  color: $grey-blue;
  font-size: 16px;
  left: 240px;
  position: absolute;
  top: 15px;
}
#content {
  min-height: 600px;
  margin-top: 0px;
  margin-left: 250px;
  margin-right: 5px;
  padding: 1px 40px 1px 80px;
  // transition: margin-left .5s;
}
.left-sider .arrow {
  float: right;
}
.left-sider .fa.arrow:before {
  content: "\f104";
}
.left-sider .active > a > .fa.arrow:before {
  content: "\f107";
}
.left-sider li.active {
  background-color: $grey;
}
.left-sider .nav-second-level li.active {
  background-color: $transparent-grey;
}

JS代码:

$(document).ready(function () {
$('#leftpane-toggle').on('click', function(e) {
    e.preventDefault();
    $('#main').toggleClass('toggle');
    $('.navbar-brand').toggleClass('toggle');
    if (sessionStorage.getItem('isToggled') == 'true') {
      sessionStorage.setItem('isToggled', 'false');
    } else {
      sessionStorage.setItem('isToggled', 'true');
      $('.navbar-brand').addClass('toggle');
    }
  });

  $('#left-sider-menu').metisMenu();
  $( ".left-sider .nav-second-level li" ).click(function(){
    //$(".left-sider  li").removeClass("active");
    $(".left-sider .nav-second-level li").removeClass("active");
    $(this).addClass("active");
  });

  var window_url = window.location.toString();
  var temp = window_url.split("//",2)[1];
  var url = "/" + temp.split("/",2)[1];
  $('.left-sider li a').filter(function() {
        return $(this).attr("href") == url;
   }).parent().addClass('active');
   var element = $('.left-sider .nav-second-level li a').filter(function() {
        return $(this).attr("href") == url;
   }).parent().addClass('active');

  var window_url = window.location.toString();
  var temp = window_url.split("//",2)[1];
  var url = "/" + temp.split("/",2)[1];
  $('.left-sider li a').filter(function() {
        return $(this).attr("href") == url;
   }).parent().addClass('active');
   var element = $('.left-sider .nav-second-level li a').filter(function() {
        return $(this).attr("href") == url;
   }).parent().addClass('active');

   while (true) {
      if (element.is('li')) {
            element = element.parent().addClass('in');
            element = element.parent().addClass('active');
      } else {
            break;
      }
   }

});

http://www.niftyadmin.cn/n/1202305.html

相关文章

FusionCharts简单教程(三)-----如何自定义图表上的工具提示

原文出自&#xff1a;http://cmsblogs.com/?p696。尊重作者的成果&#xff0c;转载请注明出处&#xff01; 个人站点&#xff1a;http://cmsblogs.com -----------------------------------------------------------------------------------------------------------------…

Rails 利用will_paginate进行异步分页

一、 利用现有的will_paginate模块 will_paginate: https://github.com/mislav/will_paginate 引入Gem包 gem will_paginate, ~> 3.1.0 HTML: <% will_paginate posts %> Controller: productions Production.paginate(:page > params[:page] || 1, :per_…

FusionCharts简单教程(四)-----基本数字格式

原文出自&#xff1a;http://cmsblogs.com/?p720。尊重作者的成果&#xff0c;转载请注明出处&#xff01; 个人站点&#xff1a;http://cmsblogs.com -----------------------------------------------------------------------------------------------------------------…

再解Java中的String

原文出自&#xff1a;http://cmsblogs.com/?p863。尊重作者的成果&#xff0c;转载请注明出处&#xff01; 个人站点&#xff1a;http://cmsblogs.com -----------------------------------------------------------------------------------------------------------------…

权限控制[2] CanCan + Rolify + Devise

在model/ability.rb中定义权限 Reference: Defining Abilities 基础权限 class Abilityinclude CanCan::Abilitydef initialize(user)user || User.new # guest user (not logged in)if user.admin?can :manage, :allelsecan :read, :allendend end 自定义权限集合 def i…

权限控制[1] CanCan + Rolify + Devise

用Gem进行安装 Reference: Devise CanCanCan rolify Devise api 说明 使用devise、cancan和rolify组件建立用户权限模型的说明。 devise&#xff1a;负责用户注册、登录、退出、找回密码等操作。 devise_githubcancan&#xff1a;负责角色建立、对角色授权、在页面中根…

Java提高篇(二八)------TreeSet

与HashSet是基于HashMap实现一样&#xff0c;TreeSet同样是基于TreeMap实现的。在《Java提高篇&#xff08;二七&#xff09;-----TreeMap》中LZ详细讲解了TreeMap实现机制&#xff0c;如果客官详情看了这篇博文或者多TreeMap有比较详细的了解&#xff0c;那么TreeSet的实现对您…

工作和学习矛盾之我见

LZ最近两天工作有点儿心不在焉&#xff0c;不在状态&#xff0c;对此LZ对老板、经理、老大说声抱歉。从一踏入社会工作&#xff0c;我就告诫自己一定要认真工作、努力学习&#xff0c;尽最大努力提升自己&#xff0c;尽早实现自己的目标。所以我在经常利用工作以外的时间来坚持…