【问题标题】:Add Play/Pause button to bootstrap carousel将播放/暂停按钮添加到引导轮播
【发布时间】:2013-12-16 15:55:40
【问题描述】:

我已经阅读了几乎所有关于引导轮播的帖子,但还没有找到我的问题的答案。 我在轮播中添加了两个控制按钮(播放/暂停),但每个按钮都会触发默认/第一张幻灯片的功能。我希望能够在点击事件发生时暂停当前幻灯片并从当前幻灯片播放。

这是我的代码:

<script src="/_catalogs/masterpage/UHN/js/bootstrap.min.js"></script>
<script>
    $(function () {
        $('.carousel').carousel({ interval:6000 });  

        $('#playButton').click(function () {
            $('#homeCarousel').carousel('cycle');
        });
        $('#pauseButton').click(function () {
            $('#homeCarousel').carousel('pause');
        });
    });

</script>

还有两个控件:

<!--Carousel controls -->
<button id="playButton">Play</button>
<button id="pauseButton">Pause</button>

【问题讨论】:

    标签: twitter-bootstrap carousel


    【解决方案1】:

    这应该可以工作。我会确保您的点击事件按照您的预期触发,因为引导轮播的某些元素可能会出现在您的元素上方并阻止点击。

    如果您在 HTML 中添加以下控件:

    <div id="carouselButtons">
        <button id="playButton" type="button" class="btn btn-default btn-xs">
            <span class="glyphicon glyphicon-play"></span>
         </button>
        <button id="pauseButton" type="button" class="btn btn-default btn-xs">
            <span class="glyphicon glyphicon-pause"></span>
        </button>
    </div>
    

    那么下面的 JavaScript 应该控制任何帧的开始和停止:

    $('#playButton').click(function () {
        $('#homeCarousel').carousel('cycle');
    });
    $('#pauseButton').click(function () {
        $('#homeCarousel').carousel('pause');
    });
    

    关于我的第一点,为了让它们在轮播中正确显示,您可以使用以下 CSS 设置按钮组的样式:

    #carouselButtons {
        margin-left: 100px;
        position: absolute;
        bottom: 0px;
    }
    

    Working Demo in jsFiddle

    要使此功能最有意义,您可能希望轮播继续移动,即使将鼠标悬停在它上面(否则在进行播放选择后,直到您移动鼠标,循环行为才会再次开始) .

    根据carousel docs

    选项 - 暂停
    默认 - “悬停” - 在 mouseenter 上暂停轮播并在 mouseleave 上恢复轮播。

    相反,请确保在初始化轮播时将其关闭,如下所示:

    $('#homeCarousel').carousel({
        interval:2000,
        pause: "false"
    });
    

    【讨论】:

    • 感谢对代码的精彩修改,恐怕它只适用于第一次点击,第二次点击及以后,不会触发事件。另外,我意识到它不适用于 IE10(甚至是 jsFiddle 示例);这可能是一个普遍的错误吗?再次感谢 KyleMit!
    • 哪个部分不工作?小提琴在 IE、FF 和 Chrome 上对我来说很好用。请记住bootstrap carousel,默认pause 选项是"hover",这意味着在悬停时轮播将始终暂停。尝试将光标移开,让游戏重新开始工作。或者,尝试使用 fiddle 设置 pause: "false" 选项
    • 通过将 pause 设置为 false 它已解决,现在它也在 IE 中工作。非常感谢 KyleMit
    【解决方案2】:

    这是我的方法。您可以设置 .pause 和 .play 类的样式,但您认为合适,但我只是出于演示目的使用纯文本:

    $('.carousel-control.pause').click(function() {
            var controls = $(this);
            if (controls.hasClass('pause')) {
                controls.text('Resume').removeClass('pause').toggleClass('play');
                $('#myCarousel').carousel('pause');
            } else {
                controls.text('Pause').removeClass('play').toggleClass('pause');
                $('#myCarousel').carousel('cycle');
            }
        });
    

    这是你的雷管

    <a class="carousel-control pause" href="javascript:void(0);">Pause</a>
    

    【讨论】:

      【解决方案3】:

      对于希望关闭播放/暂停按钮的用户。 jsFiddle example

      Javascript:

       $("button").click(function() {
        if ($(this).attr("id") === "pauseButton") {
          $('#homeCarousel').carousel('pause');
          $(this).attr("id", "playButton");
          $("span", this).toggleClass("glyphicon-play glyphicon-pause");
        } else {
          $('#homeCarousel').carousel('cycle');
          $(this).attr("id", "pauseButton");
          $("span", this).toggleClass("glyphicon-pause glyphicon-play");
        }
      });
      

      HTML:

      <div id="carouselButtons">
          <button id="pauseButton" type="button" class="btn btn-default btn-xs">
            <span class="glyphicon glyphicon-pause"></span>
          </button>
        </div>
      

      【讨论】:

      • 提供的小提琴链接中的暂停按钮不会暂停轮播。但我确实很欣赏一次显示一个按钮。我独立寻求相同的功能,并通过修改 KyleMit 的小提琴以默认播放按钮为display:none; 并将$('#playButton,#pauseButton').toggle(); 应用于两个按钮功能......以及其他一些修改来完成它
      猜你喜欢
      • 2019-03-02
      • 2013-04-13
      • 2015-06-18
      • 1970-01-01
      • 1970-01-01
      • 2020-11-01
      • 2015-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多