滚动经过 DOM 元素时触发
trigger on scroll past DOM element
我试图在用户滚动到各种 DOM 元素时触发操作(我需要它对各种屏幕尺寸做出响应)。我首先使用 offset().top
获取各个元素的位置,然后使用 scrollTop()
计算滚动的位置。它有点工作,但动作被触发太远超过 DOM 元素的开始。我已经删除了所有填充和边距...
var hT = $('#bioAG').offset().top;
var hT2 = $('#bioTM').offset().top;
var hT3 = $('#contact').offset().top;
$(window).scroll(function () {
var ws = $(window).scrollTop()
if (ws > hT) {
$("#bioAG").addClass("fade-in");
} else if (ws > hT2){
$("#bioTM").addClass("fade-in");
} else if (ws > hT3) {
$("#contact").addClass("fade-in");
} else {console.log('none');};
}) `
在滚动(加载和调整大小)时计算每个 data-fadein
元素的 .top
位置。
filter()
然后返回顶部位置小于 window 高度的元素 - 并在该元素上添加所需的 class.
var $ele = $("[data-fadein]"),
$win = $(window);
function fadeInEl() {
var h = $win.height();
$ele.filter(function() {
return this.getBoundingClientRect().top < h;
}).addClass("fade-in");
}
// Call the above function on:
$win.on("load resize scroll", fadeInEl);
*{box-sizing:border-box;}
html,body{height:100%;margin:0;}
[data-fadein] {
height:100vh;
opacity:0;
transition: 2s;
}
.fade-in {
opacity:1;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div data-fadein id="bioAG" style="background:#0af">ag</div>
<div data-fadein id="bioTM" style="background:#f0a">tm</div>
<div data-fadein id="contact" style="background:#0fa">contact</div>
https://developer.mozilla.org/en/docs/Web/API/Element/getBoundingClientRect
我试图在用户滚动到各种 DOM 元素时触发操作(我需要它对各种屏幕尺寸做出响应)。我首先使用 offset().top
获取各个元素的位置,然后使用 scrollTop()
计算滚动的位置。它有点工作,但动作被触发太远超过 DOM 元素的开始。我已经删除了所有填充和边距...
var hT = $('#bioAG').offset().top;
var hT2 = $('#bioTM').offset().top;
var hT3 = $('#contact').offset().top;
$(window).scroll(function () {
var ws = $(window).scrollTop()
if (ws > hT) {
$("#bioAG").addClass("fade-in");
} else if (ws > hT2){
$("#bioTM").addClass("fade-in");
} else if (ws > hT3) {
$("#contact").addClass("fade-in");
} else {console.log('none');};
}) `
在滚动(加载和调整大小)时计算每个 data-fadein
元素的 .top
位置。
filter()
然后返回顶部位置小于 window 高度的元素 - 并在该元素上添加所需的 class.
var $ele = $("[data-fadein]"),
$win = $(window);
function fadeInEl() {
var h = $win.height();
$ele.filter(function() {
return this.getBoundingClientRect().top < h;
}).addClass("fade-in");
}
// Call the above function on:
$win.on("load resize scroll", fadeInEl);
*{box-sizing:border-box;}
html,body{height:100%;margin:0;}
[data-fadein] {
height:100vh;
opacity:0;
transition: 2s;
}
.fade-in {
opacity:1;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div data-fadein id="bioAG" style="background:#0af">ag</div>
<div data-fadein id="bioTM" style="background:#f0a">tm</div>
<div data-fadein id="contact" style="background:#0fa">contact</div>
https://developer.mozilla.org/en/docs/Web/API/Element/getBoundingClientRect