來完成你想要做的是一些簡單的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代碼,以便它改變的不透明度時,它的「過去-爲主。