当元素到达视口顶部时添加类
Add class when element reaches top of viewport
当元素到达视口顶部时,我正在尝试向标题添加一个类,但我似乎无法找出它不起作用的原因。我没有错误,我已经检查了jquery正在获取偏移量,并且确实如此。任何帮助都会很棒。我还想知道如何将此代码扩展到任意数量的部分,而不是只声明 6。
JS 小提琴
$(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) { ... }
更新的示例
作为旁注,$('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>
相关文章:
- 如何在引导程序元素的顶部添加掩码
- 如何在已经有图标的滚动到顶部按钮中添加文本
- foreach对象循环添加到堆栈顶部
- 如何将元标记添加到最顶部的iFrame
- d3弧形图-添加顶部半圆
- 当在堆栈底部添加ImageView时,我想删除RelativeLayout中的顶部ImageView,但它正在删除整个布
- 如何使用DWR addRows函数在顶部添加行
- 在JSON顶部添加值
- 如何在volusion网站中添加滚动到顶部的浮动按钮
- 通过在顶部和左侧添加空间来调整画布大小.
- 仅在顶部添加了 1 行代码
- 当部分到达页面顶部时动态添加类
- 锚导航与坚持到顶部菜单..需要向锚点添加动态偏移量
- 当元素到达视口顶部时添加类
- 下划线.js,从一个对象中获取两个项目并添加到顶部
- 在表格顶部添加新行
- 向 JSON 对象的顶部添加内容
- 使用 JavaScript 将项目添加到列表顶部
- 为什么数据表在我的表顶部添加行
- Javascript -添加顶部固定条,并将所有其他元素向下推