Bootstrap Carousel:如何在大屏幕上停止自动滑动

Posted

技术标签:

【中文标题】Bootstrap Carousel:如何在大屏幕上停止自动滑动【英文标题】:Bootstrap Carousel: How to stop auto sliding on large screen 【发布时间】:2018-11-03 23:30:48 【问题描述】:

我正在尝试找到一种方法让我的幻灯片/轮播在屏幕达到 992 像素或以上时停止(但如果我手动减小屏幕尺寸,即使用户通常不这样做,如果它再次恢复工作也很好不要这样做)。

所以,我尝试了下面的代码,但它不起作用,并且做了很多研究,我只是找到了禁用各种屏幕尺寸的自动滑动的解决方案。

你有什么建议吗?

function()

    var windowIsLarge = window.matchMedia("(min-width:992px)").matches;

    if (windowIsLarge) 
        //carousel disabled
        $('.carousel').carousel(
            interval: false;
        );
    ;
;

这是我更新的代码,它也不起作用。我看不出我的代码有什么问题。

 $(document).ready(updateCarousel);

 $(window).resize(updateCarousel);


function updateCarousel() 
    var $containerWidth = $(document).width();
    if ($containerWidth <= 998) 
        $('.carousel').carousel(
            interval: 500
        );
    
    if ($containerWidth > 998) 
        $('.carousel').carousel(
            interval: false
        );
    

【问题讨论】:

【参考方案1】:

我找到了我认为相关的this answer,试试:

$(window).on('resize', function()
      var win = $(this);
      if (win.width() > 992)  

      $('carousel').removeClass('carousel');

      

);

【讨论】:

嗨!我不确定这个逻辑是否有效,因为如果我从具有类“carousel”的 div 中删除类“carousel”,如果用户调整窗口大小,我将无法重新放置类再次。但它让我想到了在 ID 中应用此更改,这是可能的,我会尝试,谢谢!【参考方案2】:

我认为您在某种程度上是正确的,但是您需要向 matchMedia 添加一个事件侦听器,以便它随着窗口大小的调整而更新。

发件人:https://www.redweb.com/agency/blog/2013/september/responsive-performance-matchmedia

var media = window.matchMedia('(min-width:992px)');
media.addListener(function (mediaQueryList) 
  if (mediaQueryList.matches) 
    $('.carousel').carousel(
      interval: false
    );
   else 
    $('.carousel').carousel(
      interval: 500
    );
  
);

【讨论】:

逻辑看起来很不错,但不知什么原因没用,我试着去掉“;”在错误之后,但它也没有工作.. 哦,是的,那不应该在那里。可能有一种特殊的引导方法可以在轮播初始化后更新此类属性。 条件完美地像这样工作: if ($containerWidth 998) $('.carousel').carousel( interval: 2000 );但是,当我更改窗口宽度时,它们不会被触发。 这是一个有人制作的代码笔,展示了它如何随着窗口宽度的变化而更新。我将更新我的答案以反映他们所拥有的。 codepen.io/mattdsteele/pen/FmLva 谢谢你,我会测试你的建议。我还用更完整的代码编辑了我的答案,但是它还没有工作【参考方案3】:

更新:

  if( $(window).width() > 992 ) 
    // disable carousel
    $('.carousel').carousel(
      interval: false,
    );
  

【讨论】:

应该能用但不能用,主要问题是触发器 也许可以试试$(".carousel").carousel('pause'); 查看更新,我在FF和Chrome上测试过,你只需要重新加载页面。【参考方案4】:

使用

datainterval = "false" 在 div 标签中

<div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel" data-interval="false" >

【讨论】:

以上是关于Bootstrap Carousel:如何在大屏幕上停止自动滑动的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap carousel:如何同时滑动两个 carousel 滑块?

如何在 Bootstrap 3 Carousel 中更改滑动动画以淡入/淡出过渡

如何在 Bootstrap Carousel 中使用数据暂停属性

如何让 Bootstrap 5 Carousel 滑动得更快?

如何使图像适应手机屏幕

如何在轮播 div 之外放置 Bootstrap Carousel 图像标题?