来完成你想要做的是一些简单的JavaScript的组合最简单的方法(jQuery的动力在这种情况下)和CSS3转换。
我们将使用JS检查每个滚动事件的窗口滚动位置,并将其与#main元素底部的距离进行比较 - 如果滚动位置更大,则我们将应用类到表明我们已经滚动过去#main的正文,然后我们将使用CSS为该“状态”定义导航样式。
所以,我们的基本标记:
<nav class="nav">
<a href="#" class="logo">[logo]</a>
</nav>
<div id="main">#main</div>
<div id="below-main">#below-main</div>
而我们的javascript:
// get the value of the bottom of the #main element by adding the offset of that element plus its height, set it as a variable
var mainbottom = $('#main').offset().top + $('#main').height();
// on scroll,
$(window).on('scroll',function(){
// we round here to reduce a little workload
stop = Math.round($(window).scrollTop());
if (stop > mainbottom) {
$('.nav').addClass('past-main');
} else {
$('.nav').removeClass('past-main');
}
});
而且,我们的风格:
.nav {
background-color:transparent;
color:#fff;
transition: all 0.25s ease;
position:fixed;
top:0;
width:100%;
background-color:#ccc;
padding:1em 0;
/* make sure to add vendor prefixes here */
}
.nav.past-main {
background-color:#fff;
color:#444;
}
#main {
height:500px;
background-color:red;
}
#below-main {
height:1000px;
background-color:#eee;
}
上Codepen工作的示例:http://codepen.io/taylorleejones/pen/KJsvz
在Whiteboard网站上,我们也使用了一些滚动节流和一些更复杂的样式语义,但这是它的要点。
更改CSS代码,以便它改变的不透明度时,它的“过去-为主。