Bootstrap 3使用jQuery单页滚动效果固定Top Navbar'闪烁'在移动滚动上

Iro*_*dia 13 html javascript css jquery twitter-bootstrap

谢谢你看看这个问题.

我想知道是否有办法阻止Bootstrap 3固定顶部导航栏在使用jQuery插件自动滚动时"闪烁"或上下跳跃.

一个活跃的例子在这里:

http://startbootstrap.com/templates/grayscale/

如果您在手机上查看此模板(我使用的是iPhone 4),请使用菜单栏并单击链接.jQuery插件将您带到页面的一部分,但是请查看顶部菜单栏.它像疯了一样在周围闪烁和跳舞,并没有真正留下来.

这是与这个例子相关的代码,但是我见过的人们使用Bootstrap固定顶部导航以不同方式做同样事情的大多数其他例子都是一样的.

HTML:

<body id="page-top" data-spy="scroll" data-target=".navbar-custom">

<nav class="navbar navbar-custom navbar-fixed-top" role="navigation">
    <div class="container">
        <div class="navbar-header page-scroll">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-main-collapse">
                <i class="fa fa-bars"></i>
            </button>
            <a class="navbar-brand" href="#page-top">
                <i class="fa fa-play-circle"></i>  <span class="light">Start</span> Bootstrap
            </a>
        </div>

        <!-- Collect the nav links, forms, and other content for toggling -->
        <div class="collapse navbar-collapse navbar-right navbar-main-collapse">
            <ul class="nav navbar-nav">
                <!-- Hidden li included to remove active class from about link when scrolled up past about section -->
                <li class="hidden">
                    <a href="#page-top"></a>
                </li>
                <li class="page-scroll">
                    <a href="#about">About</a>
                </li>
                <li class="page-scroll">
                    <a href="#download">Download</a>
                </li>
                <li class="page-scroll">
                    <a href="#contact">Contact</a>
                </li>
            </ul>
        </div>
        <!-- /.navbar-collapse -->
    </div>
    <!-- /.container -->
</nav>

...
Run Code Online (Sandbox Code Playgroud)

jQuery的:

//jQuery for page scrolling feature - requires jQuery Easing plugin
$(function() {
    $('.page-scroll a').bind('click', function(event) {
        var $anchor = $(this);
        $('html, body').stop().animate({
            scrollTop: $($anchor.attr('href')).offset().top
        }, 1500, 'easeInOutExpo');
        event.preventDefault();
    });
});
Run Code Online (Sandbox Code Playgroud)

CSS:

结合默认的Bootstrap 3 CSS和以下自定义样式:

.navbar {
    margin-bottom: 0;
    border-bottom: 1px solid rgba(255,255,255,.3);
    text-transform: uppercase;
    font-family: Montserrat,"Helvetica Neue",Helvetica,Arial,sans-serif;
    background-color: #000;
}

.navbar-brand {
    font-weight: 700;
}

.navbar-brand:focus {
    outline: 0;
}

.navbar-custom a {
    color: #fff;
}

.navbar-custom .nav li a {
    -webkit-transition: background .3s ease-in-out;
    -moz-transition: background .3s ease-in-out;
    transition: background .3s ease-in-out;
}

.navbar-custom .nav li a:hover,
.navbar-custom .nav li a:focus,
.navbar-custom .nav li.active {
    outline: 0;
    background-color: rgba(255,255,255,.2);
}

.navbar-toggle {
    padding: 4px 6px;
    font-size: 16px;
    color: #fff;
}

.navbar-toggle:focus,
.navbar-toggle:active {
    outline: 0;
}
Run Code Online (Sandbox Code Playgroud)

同样,复制问题的最佳方法是使用移动设备测试此示例站点:

http://startbootstrap.com/templates/grayscale/

在PC上测试时,不会出现问题.

谢谢阅读!如果你已经找到了解决这个问题的方法,我很乐意听到这个问题,或者如果你愿意接受这个问题,我将不胜感激!

Mo.*_*Mo. 50

试试这个

{
  -webkit-backface-visibility: hidden;
}
Run Code Online (Sandbox Code Playgroud)

参考:https://developer.apple.com/library/content/documentation/InternetWeb/Conceptual/SafariVisualEffectsProgGuide/Using2Dand3DTransforms/Using2Dand3DTransforms.html#//apple_ref/doc/uid/TP40008032-CH15-SW40

  • 优秀!我有一个闪烁的问题,并立即修复它. (8认同)
  • .navbar-nav {-webkit-backface-visibility:hidden; } (5认同)
  • @MuhammedAthimannil刚试了一下它就行了!谢谢! (2认同)
  • 很好!这样的解脱 (2认同)

小智 5

我也有引导程序导航栏1px跳问题。

通过将此添加到父元素来解决(在我的情况下<header>

  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  position: fixed;
  z-index: 1000;
Run Code Online (Sandbox Code Playgroud)