【发布时间】:2018-02-09 00:14:00
【问题描述】:
我想从右到左切换引导导航栏而不是从上到下。我通过以下代码实现了这一点-
HTML-
<nav class="navbar navbar-inverse" role="navigation" style="height: 55px; padding-top: 2px; background-color: #000;">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#" id="a_logo_s_s">
<img src="images/Png - Only Logo - Variant 2.png" class="img-responsive" id="logo_s_s" >
</a>
<a class="navbar-brand" href="#" id="a_logo_l_s">
<img src="images/Png - Only Text - White.png" class="img-responsive" id="logo_l_s" >
</a>
</div>
<div class="collapse navbar-collapse" id="myNavbar" style="height: 346px !important">
<ul class="nav navbar-nav navbar-left">
<li class="active" id="l_hiw"><a href="#s3" id="hiw" class="navLink">HOW IT WORKS</a></li>
<li id="l_cp"><a href="#s4_1" id="cp" class="navLink">COACHES</a></li>
<li id="l_cp"><a href="#s5" id="au" class="navLink">ABOUT</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li id="l_el"><a href="#" id="el">ENROLL</a></li>
<li id="l_ma"><a href="#" id="ma" class="navLink">MANAGE ACCOUNT</a></li>
<li id="l_aq"><a href="#cftr" id="aq" class="navLink">CONTACT</a></li>
</ul>
</div>
</div>
</nav>
CSS-
.is_open{
width: 240px;
}
#myNavbar{
position: fixed;
padding-left: 10px;
padding-right: 0px;
right: 0px;
height: 100%;
}
JS-
$('[data-toggle="collapse"]').on('click',function(e) {
e.preventDefault();
setTimeout(function(){
$("#myNavbar").css({
"height":"100%",
});
},10);
$("#myNavbar").toggleClass('is_open',1000);
});
前 15-20 次点击工作正常,然后它的行为就像这样-
- 在第一次点击时不会发生任何事情。
- 在第二次点击时导航栏出现片刻然后消失,表示同时调用第一次和第二次点击。
编辑 1: 我使用了css的“right”属性,css的transform属性,jQuery的“animate”函数,其中first和second在交替点击时取值0和-240px,在显示和隐藏时显示一个非常小的混蛋,这个仅在 chrome 中发生,在其他浏览器中运行良好。 Animate 遵循上述 1.、2. 的行为,它在所有浏览器中都会发生。
编辑 2: 我加了
setTimeout(function(){
$("#myNavbar").css({
"height":"100%",
});
},10);
在javascript中,因为导航栏的高度在隐藏时变为1px,因此向左滑动效果变得不可见,向左滑动效果只有在添加“setTimeout”之后才可见,没有这个它的行为就像高度没有设置为100% . 即使我在导航栏的样式属性中硬编码了“高度:100%”,但在第一次点击后它仍然被“高度:1px”覆盖。所以为了保持高度:100%,我找到了唯一可能的方法,那就是给它赋值每次点击后。
这也可能是在显示和隐藏时出现轻微抖动的原因,因为我在 chrome 控制台中观察到高度从 1px -> 100% ->346px 变化。另外, 这仅在 chrome 中发生。
【问题讨论】:
-
是否可以在 chrome 中从右到左平滑切换引导导航栏?如果是这样,请说明你的方式。
标签: javascript jquery css google-chrome twitter-bootstrap-3