【发布时间】:2016-01-08 22:42:38
【问题描述】:
我有一个单页滚动网站,其中包含 5 个主要部分,标题栏横跨每个部分的顶部。当您向下滚动该部分时,我希望每个标题栏都贴在顶部(嗯,相对顶部在顶部粘性标题下方)。我可以让一个粘住,但我很难让它粘住,然后一旦下一节的标题栏到达粘点,它就会消失。
我想不出另一种方法将 HTML 或 CSS 与 jQuery if else 语句绑定以使其工作。我在想我可以尝试让它在每个部分的 id 中工作,但我认为没有像“withinId”这样的 jQuery 选择器。
我正在发布我尝试过的最新 jQuery(我需要在这里工作的 5 个变量中只有 2 个)。我知道这是错误的,但我被严重卡住了。这里有什么想法吗?谢谢一百万。
(缩写)HTML:
<div id="welcome">
<div class="title-bar">
<p>WELCOME</p>
</div>
</div>
<div id="global">
<div class="title-bar">
<p>GLOBAL ENGAGEMENT</p>
</div>
</div>
<div id="community">
<div class="title-bar">
<p>COMMUNITY</p>
</div>
</div>
<div id="resources">
<div class="title-bar">
<p>RESOURCES</p>
</div>
</div>
<div id="horizon">
<div class="title-bar">
<p>ON THE HORIZON</p>
</div>
</div>
CSS:
.title-bar {
padding: 5px;
position: relative;
}
.title-bar.sticky {
position: fixed;
top: 111px;
width: 100%;
z-index: 1040;
}
jQuery:
$(document).ready(function() {
var welcomeTitle = $('#welcome .title-bar');
var globalTitle = $('#global .title-bar');
var communityTitle = $('#community .title-bar');
var resourcesTitle = $('#resources .title-bar');
var horizonTitle = $('#horizon .title-bar');
var stickyOffset = $('#header').offset().top;
if ($w.scrollTop() > stickyOffset + 225) {
welcomeTitle.addClass('sticky');
globalTitle.addClass('sticky');
} else {
welcomeTitle.removeClass('sticky');
globalTitle.addClass('sticky');
}
if (welcomeTitle.hasClass('sticky') && globalTitle.hasClass('sticky')) {
welcomeTitle.removeClass('sticky');
} else {
//
}
});
【问题讨论】:
-
我不太明白你的意思。我可以帮助你,因为我一直在做一些我认为类似的事情。但我需要更好地了解你的目标是什么。谢谢
-
看看polarblau.github.io/stickySectionHeaders,看看是否能给你一些提示?
-
这是他们使用的实际 jquery:github.com/polarblau/stickySectionHeaders/blob/master/src/…
-
听说过scrollspy 吗?检查它并关闭您的 css 用户当前位置。 waypointsplugin 看起来更好,因为您不必担心删除导航更新。
标签: javascript jquery html css if-statement