swiper當display:none之後不會autoplay

我使用swiper 10, 当display:none后,再display:block,autoplay坏掉了
我做的范例codepen 范例
测试步骤
step1. 点击hange display to none
step2. 点击hange display to block
autoplay就不运作了

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答由chatgpt基于相关博客总结生成:

    这个问题是由于swiper插件在元素display属性为none时,无法正确初始化导致的。为了解决这个问题,我们需要在显示元素之前手动重新初始化swiper插件。

    具体的解决方案如下:

    1. 首先,给swiper容器添加一个唯一的id,例如swiper-container

    2. 在点击"change display to block"按钮的事件处理程序中,先销毁原有的swiper实例,然后重新初始化swiper。

    代码示例:

    // 获取swiper容器元素
    var swiperContainer = document.getElementById('swiper-container');
    
    // 初始化swiper
    var swiper = new Swiper(swiperContainer, {
      // swiper的配置项
      autoplay: {
        delay: 2000,
      },
      // 其他配置项...
    });
    
    // 点击"change display to none"按钮事件处理程序
    document.getElementById('hide').addEventListener('click', function() {
      // 隐藏swiper容器
      swiperContainer.style.display = 'none';
    });
    
    // 点击"change display to block"按钮事件处理程序
    document.getElementById('show').addEventListener('click', function() {
      // 显示swiper容器
      swiperContainer.style.display = 'block';
    
      // 销毁原有的swiper实例
      swiper.destroy();
    
      // 重新初始化swiper
      swiper = new Swiper(swiperContainer, {
        // swiper的配置项
        autoplay: {
          delay: 2000,
        },
        // 其他配置项...
      });
    });
    

    通过以上步骤,我们在显示元素之前先销毁原有的swiper实例,然后再重新初始化swiper,可以解决自动播放功能失效的问题。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^