我在移动视图上创建了扫描导航菜单,我遇到了在添加类.show之前有0.3秒延迟的问题。
我尝试通过jquery添加自定义类.active但结果是相同的 - 即使该类没有延迟添加,此类的转换仍然延迟。
.collapse.active{
transform: translateX(0%);
}
这很可能是因为添加和计算内联样式高度所引起的,我并不需要导航为100vh。有没有办法削减或加速计算部分?
尝试添加此代码,但根本没有帮助。
.collapsing {
-webkit-transition: all 0s ease-out;
-o-transition: all 0s ease-out;
transition: all 0s ease-out;
height:0 !important;
display: none;
}
Bootply链接(有延迟):https://www.bootply.com/9dFOT7Q2Ct
我在codepen上做了同样的事情,它工作得很好 - 它甚至没有为#navbarNav添加内联样式,所以可能是一个jquery问题(我使用推荐的jquery-3.2.1)
Codepen链接(由于某种原因没有延迟):https://codepen.io/janheder/pen/rGLJLb
答案 0 :(得分:2)
您可能会遇到延迟,因为bootstrap会在collapsing
之前将show
类添加到导航栏,以提供对动画的更多控制。
如果您正在寻找平稳过渡,我相信这可能有所帮助: https://www.bootply.com/rPqvbgcCVj
body {
overflow-x: hidden;
-webkit-transition: margin .3s ease;
-moz-transition: margin .3s ease;
-o-transition: margin .3s ease;
transition: margin .3s ease;
width: 100%;
margin: 0;
font-family: -apple-system,
BlinkMacSystemFont,
"Segoe UI",
Roboto,
"Helvetica Neue",
Arial,
sans-serif;
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #212529;
background-color: #fff;
}
.navbar-light .navbar-nav .nav-link {
padding-right: 1.5rem;
padding-left: 1.5rem;
position: relative;
}
.navbar .menu-item.menu-item-has-children > .nav-link:after {
content: "";
width: 0;
height: 0;
border-style: solid;
position: absolute;
right: 0;
top: 50%;
-ms-transform: translateY(-50%);
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
border-width: 4px 4px 0px 4px;
border-color: #007bff transparent transparent transparent;
}
/* Added the following code and removed previous code */
.collapsing {
transform: translateX(0%);
}
@media (max-width: 991px) {
body.active {
overflow: hidden;
height: 100%;
width: 100%;
margin-left: -280px;
}
.collapse.active {
transform: translateX(0%);
}
.navbar-collapse {
position: fixed;
right: 0px;
top: 0px;
display: block;
transform: translateX(100%);
height: 100vh;
width: 280px;
transition: transform .3s ease;
overflow-y: scroll;
background: #fff;
}
/* Added the following code */
.active.collapsing {
transform: translateX(0%);
}
.navbar .menu-item.menu-item-has-children > .nav-link:after {
right: 1.5rem;
}
}