Jansy Bootstrap Off-Canvas 菜单未在单击时关闭

Posted

技术标签:

【中文标题】Jansy Bootstrap Off-Canvas 菜单未在单击时关闭【英文标题】:Jansy Bootstrap Off-Canvas Menu Not Closing on Single Click 【发布时间】:2016-11-16 10:24:30 【问题描述】:

我在使用 UI-Router 的 Angular 应用程序中使用 Jansy Bootstrap 非画布菜单。此外,我更改了一些样式以扩展小型和大型设备的菜单响应样式。在桌面上,菜单应该在没有切换按钮的左侧,并且随着浏览器变小而动画消失。我已经成功地做到了这一点,只是在较小的设备上无法关闭菜单并让主体滑回左侧。它仅在我单击两次而不是仅单击一次时才有效。

body 
  margin: 60px 0px 0px 250px;

.navmenu-fixed-left 
  display: block;
  position: absolute;
  left: 0px;
  width: 250px;
  background: #202020;
  transition: left .5s;

.navmenu > ul 
  list-style-type: none;
  padding-top: 20px;

.navmenu > ul > li 
  padding: 10px 0px;
  margin-left: -40px;

.navmenu > ul > li > a 
  color: #eee;
  padding-left: 40px;

.navmenu > ul > li > a:hover 
  text-decoration: none;

.navmenu > ul > li:hover,
.active 
  background: #000;

.navmenu > ul > li > a > i 
  padding-right: 10px;

.navbar 
  left: 250px;
  transition: left .3s;

.navbar-toggle 
  display: none;

.navbar 
  height: 30px;
  background: #fff;

@media only screen and (max-width: 768px) 
  html,
  body 
    margin: 30px 0px 0px 0px;
    height: 100% !important;
  
  .navmenu-fixed-left 
    left: -250px;
    margin-top: -60px;
  
  .navbar 
    left: 0px;
  
  .navbar-toggle 
    display: block;
    float: left;
    padding: 9px 10px;
    margin-top: -8px;
    border: 0px;
    border-radius: 0px;
    cursor: pointer;
  
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" />
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/jasny-bootstrap/3.1.3/css/jasny-bootstrap.min.css" rel="stylesheet" />

<nav id="myNavmenu" class="navmenu navmenu-inverse navmenu-fixed-left offcanvas" role="navigation">
  <ul>
    <li ui-sref-active="active"><a ui-sref="overview">Home</a>
    </li>
    <li ui-sref-active="active"><a ui-sref="transactions"><i class="fa fa-history" aria-hidden="true"></i> Chickens</a>
    </li>
    <li ui-sref-active="active"><a ui-sref="teams"><i class="fa fa-users" aria-hidden="true"></i>Cows</a>
    </li>
    <li ui-sref-active="active"><a ui-sref="members"><i class="fa fa-user" aria-hidden="true"></i>Pigs</a>
    </li>
    <li ui-sref-active="active"><a ui-sref="cards"><i class="fa fa-credit-card-alt" aria-hidden="true"></i> Sheep</a>
    </li>
    <li ui-sref-active="active"><a ui-sref="trends"><i class="fa fa-bar-chart" aria-hidden="true"></i>Dogs</a>
    </li>
  </ul>
</nav>
<div class="navbar navbar-default navbar-fixed-top">
  <p class="navbar-brand dynamictitle"><i class="fa fa-bars navbar-toggle" data-toggle="offcanvas" data-target="#myNavmenu" data-canvas="body" aria-hidden="true"></i> $title</p>

</div>
<!--Main Content included from different view -->
<!--Navbar include-->
<div ui-view="navBar"></div>

<div class="container-fluid">
  <p>Main Content Here.....</p>
</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasny-bootstrap/3.1.3/js/jasny-bootstrap.min.js"></script>

【问题讨论】:

似乎按预期工作:请发布任何重现问题的其他代码(或信息)。 【参考方案1】:

我已经解决了我自己的问题。这是我的做法: 我在页面中添加了一个控制器以删除添加到正文中的内联样式,然后通过从正文或 html 中删除任何样式来更改 css。

angular.module('myApp').controller('navCtrl', function () 
$('body').removeAttr("style");
);
/*html, bodymargin:60px 0px 0px 250px;*/
.main margin:60px 0px 0px 250px;

@media only screen and (max-width : 768px) 
/*html, bodymargin:30px 0px 0px 0px; height: 100% !important;*/
.mainmargin:60px 0px 0px 0px;

【讨论】:

以上是关于Jansy Bootstrap Off-Canvas 菜单未在单击时关闭的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap简介

学习 Bootstrap 5 之 Bootstrap 和 Breakpoints

Bootstrap 5 仍然推荐使用 Bootstrap-vue?

bootstrap-flex、bootstrap-grid 和 bootstrap-reboot 的区别

Bootstrap颜色选择器是一个用于Bootstrap的模块化颜色选择器插件。

bootstrap优点