完全重现此效果的最佳方法是什么?

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为元素设置动画时,由于性能问题,请尝试避免使用诸如leftrighttopbottom之类的属性。改用transform,例如transform: translateX(100px);。请查看此文章以获取详细信息:https://www.paulirish.com/2012/why-moving-elements-with-translate-is-better-than-posabs-topleft/

10-07 19:11
查看更多