精确重新创建此效果的最佳方法是什么?
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
});
});
});
答案 0 :(得分:0)
您走在正确的轨道上,但是我用视频中显示的类似动画制作了一支快速笔: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/