【问题标题】:How to stop a carousel sliding when reaches the last item?到达最后一项时如何停止轮播滑动?
【发布时间】:2021-07-30 17:38:44
【问题描述】:

我正在从头开始制作一个轮播,它包含 7 个项目,问题是当到达最后一个项目时我仍然可以单击下一个项目,我希望每次到达最后一个项目时都停止。

我是用transform来做滑动效果的,所以每次按next按钮都会增加translateX,我不知道这是不是更好的方法。

 transform: ${({ currentSlide }) =>
    currentSlide ? `translateX(-${currentSlide}00%)` : "translate(0%)"};

当我到达最后一项时,我不想要这么大的空间

这应该是最后一条狗出现时的预期结果

代码:https://codesandbox.io/s/dogs-carousel-u7126?file=/src/App.tsx

【问题讨论】:

    标签: css reactjs styled-components


    【解决方案1】:

    我会修改currentSlide 的处理方式。屏幕上有 3 张图片,轮播中总共有 7 张图片,将currentSlide 推进到第 5 张图片是导致空白空间的原因,因此通过钳制currentSlide 来防止它这样做应该可以解决问题:

    // hopefully self-explanatory constants:
    const NUM_IMAGES_VISIBLE = 3;
    const NUM_IMAGES_TOTAL = 7;
    
    // after sliding, try this, assuming currentSlide 0 is the first image:
    currentSlide = Math.min( currentSlide, NUM_IMAGES_TOTAL - NUM_IMAGES_VISIBLE )
    

    【讨论】:

    • 我不明白,你能在codesandbox上应用这个解决方案吗?我不知道将 Math.min 的结果放在哪里
    • @jarwin 糟糕,编辑时删除了一些内容。现在是不是更明显了?我会看看我是否可以在代码沙箱中完成这项工作——但不要指望它,我没有反应的经验。
    • 不太确定这个解决方案是否有效,但如果你能在codeandbox中告诉我会很棒
    • @jarwin 我怀疑事情并不完全是即插即用的。 Here 是您的固定轮播。另外,我在顶部定义了一些常量——确保你理解它们的作用!
    • 嗯,但他的问题是当我调整页面大小时,例如移动设备我无法传递到下一个项目
    猜你喜欢
    • 1970-01-01
    • 2019-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    相关资源
    最近更新 更多