【问题标题】:why left property not working correctly in javascript?为什么左属性在 javascript 中不能正常工作?
【发布时间】:2021-10-04 02:19:32
【问题描述】:

我打算用相同的逻辑制作下面的轮播示例。但是我在设置左侧属性时遇到了一个问题。 演示 https://3dedy.csb.app/

  1. 以上示例是无限循环示例。当用户导航到最后一张幻灯片时,它会显示第一张幻灯片
  2. 我从示例中了解到的内容。当用户在最后一张幻灯片上时 .it set first Item the left property 并在用户单击下一个按钮时显示第一张幻灯片

我使用了相同的逻辑。

当用户在最后一张幻灯片上时,我还设置了 left 属性。但在我的情况下,我无法显示第一张幻灯片

可能是我做错了什么 这是我的代码

 nextSlide() {
        const t       = this;
        const opts    = t.options;
        let nextSlide = t.activeSlide + 1;

        if ((t.activeSlide >= t.slidesLength) && !t.isEnabledOption('loop')) {
            t._paused = true;

            return;
        }

        if (nextSlide > t.slidesLength) {
            //
            console.log(t);
            t._slides[0].style.left = `${100*t._slides.length}%`
           // nextSlide = 1;
        }

整个代码 https://plnkr.co/edit/PWJl4cELopwUaOL2?open=lib%2Fscript.js&preview

【问题讨论】:

  • let nextSlide = t.activeSlide + 1; 完全没有必要。你已经有t.activeSlide 使用它! if (t.activeSlide >= t.slidesLength) { 另外,不要将this 伪装成t
  • 您可以将此答案作为一个很好的起点:stackoverflow.com/a/68263034/383904 逻辑如下:C = (is_next ? ++C : --C) < 0 ? T-1 : C%T; 而您所需要的只是像这样的动画:100 * C % 全部在一个 anim() 中功能,方法。

标签: javascript jquery ecmascript-6 carousel


【解决方案1】:

轮播的逻辑非常简单:

C = (is_next ? ++C : --C) < 0 ? T-1 : C%T;

其中 C 是当前索引,T 是幻灯片的总长度。

基本动画和prev/next方法:

  anim() {
    this.index = this.index < 0 ? this.total - 1 : this.index >= this.total ? 0 : this.index;
    this.EL.style.transform = `translateX(-${100 * this.index}%)`;
  }

  prev() {
    this.index -= 1;
    this.anim();
  }

  next() {
    this.index += 1;
    this.anim();
  }

更多信息请访问this SO answer (Add Prev Next Controls to Carousel)

【讨论】:

  • 谢谢@roko 如果可能的话你能分享我的代码和框
  • @user5711656 我认为我的代码比你的要简单得多,因此你应该有更少的问题来实现这个演示中的逻辑:jsbin.com/yecafijona/edit?html,css,js,output 到你自己的代码中。看看漂亮简单的anim, prev, next, stop, play 方法,您应该会掌握。
  • 好的,谢谢 .. np 将在我的代码中检查一切是否正常,如 touch handler、导航、点功能 .. 只剩下无限
猜你喜欢
  • 2021-12-06
  • 2013-01-08
  • 1970-01-01
  • 2023-03-30
  • 2016-07-16
  • 2019-01-04
  • 2020-09-03
  • 2016-10-10
  • 2016-10-24
相关资源
最近更新 更多