javascript - 为什么我的 sticky bar 不稳定?

标签 javascript html css

我正在学习如何使用 CSS 和 jQuery 制作粘性栏。

代码有点脏,因为为了让粘性栏工作,我需要一个长页面。 可以看到代码here .

要重播这个问题,你需要按照我说的去做。

1) 在最新的 Firefox 或 Chrome 中打开页面。

2) 将浏览器的滚动条直接拖到页面末尾(不要停在中间)。你会看到粘条向下滑动,然后向上滑动,最后向下滑动。

3) 随意拖动滚动条,问题就会消失。

4) 然后刷新页面,做和第2步一样的操作,你会再次看到问题

那真的不是我想要的粘条。我不想让第 2 步中的东西出现。

最佳答案

根据 w3schools ,而不是给 sticky_bar 元素 visibility: hidden;,你必须让它 display: none;

Note: slideDown() works on elements hidden with jQuery methods and display:none in CSS (but not visibility:hidden).

您可以看到完整的编辑代码 here或在下面运行它以查看行为差异。

$(document).ready(function()
{
        $(window).scroll(function()
        {
                if($(window).scrollTop() >= 60)
                {
                        $(".sticky_bar").slideDown("slow")
                        $(".sticky_bar").addClass("sticky_bar_active");
                }
                else
                {
                        $(".sticky_bar").slideUp("slow");
                        $(".sticky_nav").removeClass("sticky_bar_active");
                }
        });

});
.sticky_bar p {
        display: inline;
        font-size: 13px;
        padding-right: 6px;
}

.sticky_bar a {
        text-decoration: none;
        float: left;
}

.sticky_bar {
        display: none;
        position: fixed;  
        width: 100%;  
        height: 65px;
        left: 0;  
        top: 0;  
        z-index: 100;  
        border-top: 0;

        margin: 0;
        border: 0;
        padding: 0;
        background-color: #000000;
}

.sticky_bar_active {
        position: fixed;  
        width: 100%;  
        height: 65px;
        left: 0;  
        top: 0;  
        z-index: 100;  
        border-top: 0;  
}

.sticky_text {
        color: #FFFFFF;
}

.wrapper {
        width: 1170px;
        margin-top: 0px;
        margin-right: auto;
        margin-bottom: 0px;
        margin-left: auto;
}
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
        </head>
<body>
        <nav class='sticky_bar'>
                <ul class='wrapper'>
                        <li>
                                <a href='#'><div class='sticky_text'><p>Overview</p></div></a>
                        </li>
                        <li>
                                <a href='#'><div class='sticky_text'><p>Details</p></div></a>
                        </li>
                        <li>
                                <a href='#'><div class='sticky_text'><p>Settings</p></div></a>
                        </li>
                </ul>
        </nav>
        <ul>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
                <li>Hello</li>
        </ul>
</body>
</html>

关于javascript - 为什么我的 sticky bar 不稳定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27081898/

相关文章:

Javascript 使用函数访问其他类

javascript - 选择在没有属性 JS/XML 的情况下显示哪些 XML 数据

javascript 或 jquery : Looping a multidimensional object

javascript - Jquery 嵌套函数不起作用

javascript - 插入 HTML 的 React 代码似乎不起作用

javascript - 溢出时将内容移动到另一个 div

javascript - 将 CHARTJS 与 JavaScript 数组结合使用

html - 如何更改 Franklin.jl 中的相对路径?

css - 在 Foundation 中使用嵌套行的宽度

css - Scrapy:尽管它在那里,但无法访问类