我是jQuery的新手,我正在努力使jQuery檢測div .stage-O的位置,以便向下滾動時.header不會消失,直到該底部.stage -O點擊頁面的頂部?jQuery檢測滾動上的div位置
jQuery(document).ready(function() {
var lastFixPos = 0,
\t threshold = 100, //sensitivity on scrolling
\t $header = $('.header');
\t
\t
$(window).on('scroll', function() {
var st = $(this).scrollTop();
var diff = Math.abs($(window).scrollTop() - lastFixPos);
if (diff > threshold || st < 100) {
if (st < lastFixPos) {
// scroll up
$header.removeClass('hide').addClass('color headerBGchange headerLIchange');
}
lastFixPos = st;
} else if (st > lastFixPos) {
//scroll down
$header.addClass('hide').removeClass('color');
}
});
$(window).scroll(function(e) {
var sw = $('.header'),
pg = $('.stage-2'),
diff = pg[0].offsetbottom - window.pageYOffset;
sw.css('background-color', diff < 100 ? 'white' : '');
});
\t });
.header {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
height: 80px;
-webkit-transition: top 250ms ease;
transition: top 250ms ease;
position: fixed;
width: 100%;
top: 0;
background-color: transparent;
overflow: hidden;
}
.header ul {
margin: 20px;
padding: 0;
}
.header ul li {
display: inline-block;
margin-right: 20px;
color: green;
}
.header ul li:last-child {
margin-right: 0;
}
.hide {
top: -80px;
}
.headerBGchange{
\t Background: white;
}
.headerLIchange{
\t color: Blue;
}
.stage {
color: #fff;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
height: 100vh;
background-color: bisque;
font-size: 48px;
}
.stage-0 {
background: black;
}
.stage-1 {
background: #030202;
}
.stage-2 {
background: #060505;
}
.stage-3 {
background: #080707;
}
.stage-4 {
background: #0b0a09;
}
.stage-5 {
background: #0e0c0b;
}
.stage-6 {
background: #110e0e;
}
.stage-7 {
background: #141110;
}
.stage-8 {
background: #161312;
}
.stage-9 {
background: #191515;
}
.stage-10 {
background: #1c1817;
}
.stage-11 {
background: #1f1a19;
}
.stage-12 {
background: #221d1c;
}
.stage-13 {
background: #241f1e;
}
.stage-14 {
background: #272120;
}
.stage-15 {
background: #2a2422;
}
.stage-16 {
background: #2d2625;
}
.stage-17 {
background: #302827;
}
.stage-18 {
background: #322b29;
}
.stage-19 {
background: #352d2c;
}
.stage-20 {
background: #38302e;
}
.stage-21 {
background: #3b3230;
}
.stage-22 {
background: #3e3432;
}
.stage-23 {
background: #413735;
}
.stage-24 {
background: #433937;
}
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<div class="header">
<ul>
<li>Home</li>
<li>About</li>
<li>Contact</li>
</ul>
</div>
<div class="stage stage-0">1</div>
<div class="stage stage-2">3</div>
<div class="stage stage-4">5</div>
<div class="stage stage-6">7</div>
<div class="stage stage-8">9</div>
<div class="stage stage-10">11</div>
<div class="stage stage-12">13</div>
<div class="stage stage-14">15</div>
<div class="stage stage-16">17</div>
<div class="stage stage-18">19</div>
<div class="stage stage-20">21</div>
<div class="stage stage-22">23</div>
這個作品,謝謝你的筆記,更理智的!是否有一個原因,爲什麼jQuery不改變滾動文本顏色(.headerLIchange)? – Dee
@Dee更新了文字顏色的答案。不客氣!樂於幫助。 – AtheistP3ace