【发布时间】:2016-05-30 14:28:22
【问题描述】:
我试图让我的固定导航在与我网站的不同部分重叠时改变颜色。 很像这个网站上的导航:http://andpizza.com/
我的 html 存在 div 和 section。
<nav>
<ul>
<li class="work">Work</li>
<li class="about">About</li>
<li class="contact">Contact</li>
</nav>
<div id="red">
</div>
<section id="green">
</section>
<div id="blue">
</div>
<section id="yellow">
</section>
对于 JS,我使用在 github 上找到的 overlaps library。
这个jquery是我自己加的:
$(document).scroll(function() {
var contactColl = $('ul li.contact').overlaps('section');
$('ul li.contact')[contactColl.hits.length? 'addClass' : 'removeClass']('white');
var aboutColl = $('ul li.about').overlaps('section');
$('ul li.about')[aboutColl.hits.length? 'addClass' : 'removeClass']('white');
var workColl = $('ul li.work').overlaps('section');
$('ul li.work')[workColl.hits.length? 'addClass' : 'removeClass']('white');
});
或查看here on Codepen。
它非常适合第一部分。但它忽略了第二部分。我知道它会选择它遇到的第一部分,但我不知道如何使它适用于其他部分。
我尝试像这样分别命名这些部分:
var contactColl = $('ul li.contact').overlaps('#green, #yellow');
或
var contactColl = $('ul li.contact').overlaps('#green');
$('ul li.contact')[contactColl.hits.length? 'addClass' : 'removeClass']('white');
var contactColl2 = $('ul li.contact').overlaps('#yellow');
$('ul li.contact')[contactColl2.hits.length? 'addClass' : 'removeClass']('white');
这只是破坏了一切。
谁能帮我解决这个问题?
【问题讨论】:
-
为什么你为两个部分选择相同的菜单 li - 同时为黄色和绿色?据我所知,每节一里,然后它就像一个魅力。 jsfiddle.net/ofvug4nk
-
这是一个可读性问题。该网站是一个单页网站,具有交替的大图像和白色部分。重叠图像时,所有菜单项应为白色,重叠白色部分时,所有菜单项应为黑色。示例:andpizza.com
-
这个 Overlaps 插件不考虑多个对象重叠在 prntscr.com/ba7tx4 上。现在它按预期工作jsfiddle.net/ofvug4nk/1
-
@GL.awog 它有效!惊人的!如果您将此作为答案,我会接受。