在bootstrap 4崩溃中,我需要禁用.show
类之后出现的.collapsing
类的延迟。
所以我需要的是在点击.show
后立即在.collapse
班级上显示toggle
课程。
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"/>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item active">
<a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Features</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Pricing</a>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#">Disabled</a>
</li>
</ul>
</div>
</nav>
答案 0 :(得分:2)
我认为没有办法阻止.collapsing
类应用于.collapse元素,因此总会有延迟。您可以使用jQuery切换导航栏的显示...而不是折叠。
$('[data-toggle=display]').on('click', function() {
var target = $($(this).data("target"));
target.toggleClass("d-none d-block");
})
https://www.codeply.com/go/nFbagrqHWa
修改强>
以下是折叠组件的工作原理......
.collapse
隐藏了内容
.collapsing
已应用(show.bs.collapse
事件被触发)
.collapsing
已被删除,并且在转换结束时(.collapse.show
事件被触发)会应用shown.bs.collapse
当再次触发元素并触发hide.bs.collapse
和hidden.bs.collapse
事件时,会发生相反的情况。
应用show.bs.collapse
类时会触发.collapsing
事件。您可以为show.bs.collapse
事件添加处理程序,以便在应用.show
类时添加.collapsing
类。但是, 不 会影响过渡动画,但仍会有延迟。
在应用.show
时添加.collapsing
。
$('.navbar-collapse').on('show.bs.collapse', function () {
$(this).addClass("show");
});
并且,可选择在“隐藏”事件中删除它。
$('.navbar-collapse').on('show.bs.collapse', function () {
$(this).addClass("show");
}).on('hide.bs.collapse', function () {
$(this).removeClass("show");
}).
https://www.codeply.com/go/YBXzYG8fgy
或者,用CSS覆盖转换:
#navbarNav {transition: none;}