滚动水平移动

时间:2018-10-19 17:02:52

标签: javascript jquery html css animation

精确重新创建此效果的最佳方法是什么?

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
        });
    });
});

1 个答案:

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