gpt4 book ai didi

javascript - 每个元素上的淡入淡出 - 滚动

转载 作者:行者123 更新时间:2023-12-03 02:21:59 29 4
gpt4 key购买 nike

如何在每个元素而不是整个元素上应用淡入淡出(与其高度相比)?

HTML:

<div class="test fade"></div>

CSS:

* {
padding: 0;
margin: 0;
box-sizing: border-box;
}

body {
font: 1em 'Open Sans', sans-serif;
}

.test {
height: 70vh;
width: 30%;
background-color: rgba(0, 0, 0, 0.6);
margin: 1em auto;
}

JS:

var $elem = $('.test.fade');
for (var i = 0; i <= 5; i++) {
$elem.clone().appendTo('body');
}
$(window).scroll(function() {
var percent = $(this).scrollTop() / ($(document).height() - $(this).height());
$('.fade').each(function() {
$(this).css('opacity', 1 - percent);
});
});

jsfiddle

最佳答案

我建议使用Element.getBoundingClientRect()计算元素相对于视口(viewport)的位置。

通过其相对于视口(viewport)的位置,您可以计算其在视口(viewport)之外的百分比,并将其用作不透明度(转换为 0-1 值后):

var $elem = $('.test.fade');
for (var i = 0; i <= 5; i++) {
$elem.clone().appendTo('body');
}
$(window).scroll(function() {
$('.fade').each(function() {
var bounds = this.getBoundingClientRect();
var op = Math.max((bounds.height + Math.min(bounds.top, 0)) / bounds.height, 0);
$(this).css('opacity', op);
});
});

Demo JSFiddle here .

关于javascript - 每个元素上的淡入淡出 - 滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49120315/

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