javascript - 如何检测 `article`的滚动位置并添加类

标签 javascript jquery html css

我有四篇不同的文章,内容各不相同。我所要做的就是当滚动位置到达需要添加的文章的顶部位置时,类处于事件状态。我试过没有成功。这是我到目前为止尝试过的代码。

HTML

<article></article>
<article></article>
<article></article>
<article></article>

CSS

article{
    height: 800px;
    background-color: gray;
}
article:nth-child(2){
    background-color: blue;
}
article:nth-child(3){
    background-color: pink;
}
article:last-child{
    background-color: orange;
}
article.active{
    background-color: red;
}

JQuery

var scrollPosition = $('article').scrollTop();
$(window).scroll(function () {
    if ($(window).scrollTop() == scrollPosition) {
        $(this).addClass('active');
    } else {
        $(this).removeClass('active');
    }
})

Working Demo

最佳答案

我推荐使用 .offset()获取元素的绝对位置。

这是一个例子:

$(window).scroll(function () {
    $('article').each(function () {
        var ArtOffsetTop = $(this).offset().top;
        var ArtOffsetBottom = $(this).offset().top + $(this).height();
        if (($(window).scrollTop() >= ArtOffsetTop) && ($(window).scrollTop() <= ArtOffsetBottom)) {
            $(this).addClass('active');
        } else {
            $(this).removeClass('active');
        }
    })
})

Live demo


我添加了一个新变量 ArtOffsetBottom 来检测 $(window).scrollTop() 是否在文章的顶部和底部之间。

关于javascript - 如何检测 `article`的滚动位置并添加类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29962183/

相关文章:

javascript - 如何在 Atom 编辑器中搜索 <p> 元素内的双空格?

javascript - 检查当前时间是否在 JavaScript 中的两个给定时间之间

php - 仅显示具有不同名称的 <h1> 的第一个

html - 如何在不改变 html 的情况下反转 IE 中 input[type=upload] 的标签和按钮位置

html - 悬停 + div :show not working

javascript - 显示更多 点击显示更多图片

javascript - 如何让一个选择选项显示多个 div?

javascript - 使用 .map() 为 JS 对象添加增量值

javascript - Bootstrap - 在 Datepicker 中单击时关闭下拉菜单

javascript - 将选择菜单连接到单个表单输入中