完全重现此效果的最佳方法是什么?
https://www.youtube.com/embed/Q9_hg7osQ9w
到目前为止,我已经能够移动顶行了,但是我发现很难(如果不是不可能的话)将其与底行和淡入淡出的动画结合起来。
到目前为止,这是我想出的:
var window_width = $(window).width() - $('.top-line').width();
var document_height = $(document).height() - $(window).height();
$(function () {
$(window).scroll(function () {
var scroll_position = $(window).scrollTop();
var object_position_right = window_width * (scroll_position / document_height);
$('.top-line').css({
'right': object_position_right
});
});
});
最佳答案
您走在正确的轨道上,但我用一支动画笔制作了一支快速笔,类似于视频中显示的动画:https://codepen.io/adamk22/pen/vVrLYz
JS:
var topTitle = $('.top-title'),
bottomTitle = $('.bottom-title');
var fadeStart = 10,
fadeUntil = 200,
moveSpeed = 2; // Higher = slower
$(window).scroll(function(e) {
var scrollTop = $(window).scrollTop(),
opacity = 0,
topTitlePos = scrollTop / moveSpeed + 'px',
bottomTitlePos = scrollTop / moveSpeed + 'px';
if (scrollTop <= fadeStart ) {
opacity = 1;
} else if ( scrollTop <= fadeUntil ) {
opacity = 1 - scrollTop / fadeUntil;
}
topTitle.css({'transform': 'translateX(' + topTitlePos + ')', 'opacity': opacity});
bottomTitle.css({'transform': 'translateX(-' + bottomTitlePos + ')', 'opacity': opacity});
});
显然,根据用例,可能会有更好的编写方法,但是希望笔至少可以帮助您了解它的功能以及工作原理。
另外,在使用js / jquery为元素设置动画时,由于性能问题,请尝试避免使用诸如
left
,right
,top
和bottom
之类的属性。改用transform
,例如transform: translateX(100px);
。请查看此文章以获取详细信息:https://www.paulirish.com/2012/why-moving-elements-with-translate-is-better-than-posabs-topleft/