【发布时间】:2019-04-02 10:11:38
【问题描述】:
我使用offset(); 在引导程序上设置.nav 菜单的位置,并在.nav 菜单附近的scroll intersection .r-logo-menu-desktop 类时设置fixed,添加fixed 类到.nav 并在滚动到顶部时将其删除,让.nav 在同一个position 中。在 Safari/Chrome 中工作正常,但在 Firefox 中,菜单转到 fixed 太儿子,在滑块的中间,而不是在最后。可以看例子here。
<!-- Navigation -->
<div class="nav-wrapper">
<div class="nav"><nav id="navbar" class="navbar navbar-expand-lg mx-auto navbar-dark bg-white">
<div class="mx-auto order-0 order-md-1 position-relative">
<img class="r-logo-menu" src="img/Logos-RUCAB-7.png" />
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".dual-collapse2">
<span class="navbar-toggler-icon"></span>
</button>
</div>
<div class="navbar-collapse collapse w-100 dual-collapse2 order-2 order-md-2">
<ul class="navbar-nav mx-auto mr-auto text-center">
<img class="r-logo-menu-desktop" src="img/Logos-RUCAB-7.png" />
<nav class="cl-effect-5">
<li class="nav-item">
<a class="nav-link menu-rucab js-scroll-trigger" href="#home"><span data-hover="HOME">HOME</span></a>
</li>
</nav>
<nav class="cl-effect-5">
<li class="nav-item">
<a class="nav-link menu-rucab js-scroll-trigger" href="#rucab"><span data-hover="RUCAB">RUCAB</span></a>
</li>
</nav>
<nav class="cl-effect-5">
<li class="nav-item">
<a class="nav-link menu-rucab js-scroll-trigger" href="#inscripciones"><span data-hover="INSCRIPCIONES">INSCRIPCIONES</span></a>
</li>
</nav>
<nav class="cl-effect-5">
<li class="nav-item active">
<a class="nav-link menu-rucab js-scroll-trigger" href="#habitaciones"><span data-hover="HABITACIONES">HABITACIONES</span></a>
</li>
</nav>
<nav class="cl-effect-5">
<li class="nav-item">
<a class="nav-link menu-rucab js-scroll-trigger" href="#staff"><span data-hover="STAFF">STAFF</span></a>
</li>
</nav>
<nav class="cl-effect-5">
<li class="nav-item">
<a class="nav-link menu-rucab js-scroll-trigger" href="#contact"><span data-hover="BLOG">BLOG</span></a>
</li>
</nav>
<nav class="cl-effect-5">
<li class="nav-item">
<a class="nav-link menu-rucab js-scroll-trigger" href="#contacto"><span data-hover="CONTACTO">CONTACTO</span></a>
</li>
</nav>
</ul>
</div>
</nav>
</div>
</div>
JQUERY
// cache the element
var $navBar = $('.nav');
var $rlogo = $('.r-logo-menu-desktop');
// find original navigation bar position
var navPos = $navBar.offset().top;
// on scroll
$(window).scroll(function() {
// get scroll position from top of the page
var scrollPos = $(this).scrollTop();
// check if scroll position is >= the nav position
if (scrollPos >= navPos) {
$navBar.addClass('fixed');
$rlogo.addClass('show');
} else {
$navBar.removeClass('fixed');
$rlogo.removeClass('show');
}
});
CSS
.r-logo-menu-desktop.show {
margin-bottom: 2px;
opacity: 1 !important;
width: 60px;
margin-right: 20px;
}
.r-logo-menu-desktop {
opacity: 0;
margin-right: 20px;
transition: opacity 300ms ease;
}
.nav-wrapper {
height: 90px;
background: #fff;
}
.nav-wrapper .nav {
height: 20px;
background: #fff;
line-height: 20px;
}
.navbar-nav {
background: #fff;
}
.nav-wrapper .nav.fixed {
-webkit-backface-visibility: hidden;
position: fixed;
z-index: 10000;
top: 0;
left: 0;
right: 0;
}
更新的脚本:
var $header = $('#carouselExampleIndicators');
var $navBar = $('.nav');
var $rlogo = $('.r-logo-menu-desktop');
$(window).scroll(function() {
var headerPos = $header.height();
var scrollPos = $(this).scrollTop();
if (scrollPos >= headerPos)
{
$navBar.addClass('fixed');
$rlogo.addClass('show');
}
else
{
$navBar.removeClass('fixed');
$rlogo.removeClass('show');
}
});
【问题讨论】:
-
我在 Firefox / Edge 中看到的不正确? imgur.com/a/I7BKVOG
-
PS:问题不在于 Firefox。我在 Chrome 中找到了这个 :)
-
代码对我来说很好用。但输入 id:#carouselExampleIndicators-custom
标签: javascript html css