【发布时间】:2020-09-05 19:23:11
【问题描述】:
我一直在尝试让元素在水平滚动网站上滚动时淡入。我找到了很多使用 .scrollTop 并计算元素位置的示例,但是当切换到水平滚动时我无法让它工作。
如何使用水平滚动位置计算元素何时在屏幕上,然后在它可见时对其进行动画处理?
我试过的代码:
$(document).ready(function() {
var winW = parseInt($( window ).width());
var winH = parseInt($( window ).height());
$( window ).scroll(function() {
var scrollX = parseInt($(window).scrollLeft());
var scrollY = parseInt($(window).scrollTop());
$( ".box" ).each(function(){
var boxOffset = $(this).offset();
var boxX = parseInt(boxOffset.left);
var boxY = parseInt(boxOffset.top);
// vertically calculated
var new_opacity = 1-((boxY-scrollY)/winH);
// horizontally calculated
//var new_opacity = 1-((boxX-scrollX)/winW);
new_opacity = (new_opacity<0)? 0: new_opacity;
new_opacity = (new_opacity>1)? 1: new_opacity;
$(this).css({'opacity': new_opacity});
// $(this).text(new_opacity);
});
});
});
JS 小提琴: http://jsfiddle.net/0mks8eut/1/
我试图产生的效果是本网站上每张卡片的标题之一,当您滚动标题时,每个字符都会淡入: https://at-home.club/
谢谢
【问题讨论】:
-
使用
.scrollLeft而不是.scrollTop。
标签: javascript jquery