javascript – 向下滑动时反转滑块

前端之家收集整理的这篇文章主要介绍了javascript – 向下滑动时反转滑块前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我跟着 this article购买了垂直可刷卡片滑块.

这个问题有两个部分.

我无法理解滑下时如何反转滑块的方向?

这是相关的codepen – https://codepen.io/bmarcelino/pen/vRYPXV

更新卡的相关功能

function updateUi() {
    requestAnimationFrame(function(){
        elTrans = 0;
        var elZindex = 5;
        var elScale = 1;
        var elOpac = 1;
        var elTransTop = items;
        var elTransInc = elementsMargin;

        for(i = currentPosition; i < (currentPosition + items); i++){
            if(listElNodesObj[i]){
                listElNodesObj[i].classList.add('stackedcards-bottom','stackedcards--animatable','stackedcards-origin-bottom');

                listElNodesObj[i].style.transform ='scale(' + elScale + ') translateX(0) translateY(' + (elTrans - elTransInc) + 'px) translateZ(0)';
                listElNodesObj[i].style.webkitTransform ='scale(' + elScale + ') translateX(0) translateY(' + (elTrans - elTransInc) + 'px) translateZ(0)';
                listElNodesObj[i].style.opacity = elOpac;
                listElNodesObj[i].style.display = 'block';
                listElNodesObj[i].style.zIndex = elZindex;

                elScale = elScale - 0.04;
                elOpac = elOpac - (1 / items);
                elZindex--;
            }
        }

    });

};

我不是特别精通Javascript.
截至目前,当滑动 – 向前滑动时,滑块仅在一个方向上移动.我希望了解向滑块添加向后移动的实现.

2.关于表现

此外,requestAnimationFrame确实有助于在滑动时提供流畅的体验.但是DOM中应该有多少张卡有限制吗?我将调用一个API服务来获取内容,因为它将返回媒体,所以只需将opacity设置为0以帮助减少内存使用?

作者争辩说删除DOM会强制浏览器重新绘制,这会对性能产生重大影响吗?但是不是那个虚拟列表吗?在这种情况下,性价比是多少?

解决方法

这不是一个完整的答案,但看到没有其他人回应我会回答你的问题的第1部分.请注意,这只是一个示例,可帮助您了解如何使卡片向后移动而不是生产就绪解决方案.

要重新连接“顶部”按钮以向后移动,您只需进行以下更改:

>在onSwipeTop()中更改currentPosition = currentPosition 1; to currentPosition = currentPosition – 1;
>同样在onSwipeTop()中更改transformUi(0,-1000,topObj); to transformUi(0,topObj);.这隐藏了卡片上升动画.
>在updateUi()中,更改i< (currentPosition items)到i< =(currentPosition items).这修复了三个卡中只有两个更新的错误.
现在尝试单击“向左”或“向右”几次,然后单击“顶部”几次.每次单击“顶部”时,您都会看到一张卡片返回.

大概你想要制作一个新的按钮“Bottom”而不是重新连接“Top”,你可能还想对currentPosition的更改加以限制,这样你就不能超越第一张/最后一张牌,但这应该至少帮助你

我希望这有帮助.

猜你在找的JavaScript相关文章