gpt4 book ai didi

javascript - 当元素到达视口(viewport)顶部时添加类

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:33:11 28 4
gpt4 key购买 nike

当元素到达视口(viewport)顶部时,我试图将一个类添加到页眉,但我似乎无法找出它不起作用的原因。我没有错误,我已经检查过 jquery 正在获取偏移量,确实如此。任何帮助都会很棒。我还想知道如何将此代码扩展到任意数量的部分,而不是仅说明 6 个。

JS FIDDLE

$(document).ready(function () {
var project1 = $('section:nth-child(1)').offset();
var project2 = $('section:nth-child(2)').offset();
var project3 = $('section:nth-child(3)').offset();
var project4 = $('section:nth-child(4)').offset();
var project5 = $('section:nth-child(5)').offset();
var project6 = $('section:nth-child(6)').offset();
var $window = $(window);

$window.scroll(function () {
if ($window.scrollTop() >= project1) {
$("header").removeClass().addClass("project1");
}
if ($window.scrollTop() >= project2) {
$("header").removeClass().addClass("project2");
}
if ($window.scrollTop() >= project3) {
$("header").removeClass().addClass("project3");
}
if ($window.scrollTop() >= project4) {
$("header").removeClass().addClass("project4");
}
if ($window.scrollTop() >= project5) {
$("header").removeClass().addClass("project5");
}
if ($window.scrollTop() >= project6) {
$("header").removeClass().addClass("project6");
}
});
});

最佳答案

方法 .offset() , 返回包含属性 top 的对象和 left :

{top: 1808, left: 8}

因此您需要访问 top条件语句中的属性。

改变

if ($window.scrollTop() >= project1) { ... }

到:

if ($window.scrollTop() >= project1.top) { ... }

Updated Example


作为旁注,$('section:nth-child(1)').offset()将是未定义的,因为 section 元素不是第一个元素(<header> 是)。使用 :nth-of-type而不是 :nth-child .由于您使用的是 jQuery, eq() 也会起作用。

$(document).ready(function() {
var project1 = $('section:nth-of-type(1)').offset();
var project2 = $('section:nth-of-type(2)').offset();
var project3 = $('section:nth-of-type(3)').offset();
var project4 = $('section:nth-of-type(4)').offset();
var project5 = $('section:nth-of-type(5)').offset();
var project6 = $('section:nth-of-type(6)').offset();
var $window = $(window);

$window.scroll(function() {
if ( $window.scrollTop() >= project1.top) {
$("header").removeClass().addClass("project1");
}
if ( $window.scrollTop() >= project2.top ) {
$("header").removeClass().addClass("project2");
}
if ( $window.scrollTop() >= project3.top ) {
$("header").removeClass().addClass("project3");
}
if ( $window.scrollTop() >= project4.top ) {
$("header").removeClass().addClass("project4");
}
if ( $window.scrollTop() >= project5.top ) {
$("header").removeClass().addClass("project5");
}
if ( $window.scrollTop() >= project6.top ) {
$("header").removeClass().addClass("project6");
}
});
});
header {
position: fixed;
top: 0;
left: 0;
right: 0;
height: 100px;
background: #000;
}
header.project1 {
background: red;
}
header.project2 {
background: orange;
}
header.project3 {
background: blue;
}
header.project4 {
background: green;
}
header.project5 {
background: red;
}
header.project6 {
background: blue;
}
section {
height: 900px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<header></header>
<section>Section 1</section>
<section>Section 2</section>
<section>Section 3</section>
<section>Section 4</section>
<section>Section 5</section>
<section>Section 6</section>

关于javascript - 当元素到达视口(viewport)顶部时添加类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27872003/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com