如何在鼠标悬停时播放引导 4 轮播,并在页面加载时禁用自动播放?

Posted

技术标签:

【中文标题】如何在鼠标悬停时播放引导 4 轮播,并在页面加载时禁用自动播放?【英文标题】:How to play bootstrap 4 carousel on mouse hover WITH disabled autoplay on page load? 【发布时间】:2019-06-11 08:09:35 【问题描述】:

我用 bootstrap 4 创建了一个轮播。我在悬停时完成了循环工作。但是,当页面加载时,轮播会自动播放。有没有办法在页面加载时禁用自动播放,让它成为第一张幻灯片,只在鼠标悬停时播放?

此外,当鼠标离开时,它会暂停。当您再次将鼠标悬停在它上面时,它就会播放。

我在下面提供了我的 html 和 JS。

谢谢!

我尝试在 JS 中添加 pause: true 。这只是暂停了整个轮播。我还尝试在 HTML 中输入 data-interval: 200 并将其从 JS 中删除。然而,这只允许一个单一的循环和暂停工作,一旦我将鼠标移到轮播上并离开它就不起作用。

     <div id="carouselWork" class="carousel">
      <div class="carousel-inner">
        <div class="carousel-item active">
            <img src="Work/Posters/1.jpg" style="width:100%;">
        </div>
        <div class="carousel-item">
            <img src="Work/Posters/2.jpg" style="width:100%;">
        </div>
        <div class="carousel-item">
            <img src="Work/Posters/3.jpg" style="width:100%;">
        </div>
        <div class="carousel-item">
            <img src="Work/Posters/4.jpg" style="width:100%;">
        </div>
        <div class="carousel-item">
            <img src="Work/Posters/5.jpg" style="width:100%;">
        </div>
      </div>
    </div>



$(document).ready(function() 

$('.carousel').carousel(
  interval: 200
)

$('#carouselWork').hover(function()
   $(".carousel").carousel('cycle');
,function()
   $(".carousel").carousel('pause');
);
);

预期:当页面加载时,我希望轮播暂停。当我在旋转木马上悬停时,它将在200的指定间隔循环。当我将鼠标移到旋转木马外时,它将暂停。

实际:悬停时播放/暂停的功能有效,但页面加载时轮播以 200 的间隔自动播放。

【问题讨论】:

所以你想要的,当页面加载禁用autoplay时,当您悬停它autoplay时,鼠标熄灭后,您需要再次停止它? span> 【参考方案1】:

您需要为此使用data-* 属性,在 HTML 中添加

data-pause="true"

所以,现在您可以在启动时暂停间隔。

要在 mouseEnter 时启用自动播放,在 mouseLeave 时禁用自动播放,您可以在 Jquery 中使用.on 方法

$(".carousel").on("mouseenter",function() 
  $(this).carousel('cycle');
).on("mouseleave", function() 
  $(this).carousel('pause');
);

对于控制 mouseenter 和 mouseleave 函数的间隔,可以再次使用 HTML data-* 属性

data-interval="200"

实时片段

$(".carousel").on("mouseenter",function() 
  $(this).carousel('cycle');
).on("mouseleave", function() 
  $(this).carousel('pause');
);
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css">

<div id="carouselWork" class="carousel slide bg-dark" data-pause="true" data-interval="200">
  <div class="carousel-inner">
    <div class="carousel-item active">
      <img src="https://picsum.photos/1920/720/?image=1" class="d-block w-100" >
    </div>
    <div class="carousel-item">
      <img src="https://picsum.photos/1920/720/?image=10" class="d-block w-100" >
    </div>
    <div class="carousel-item">
      <img src="https://picsum.photos/1920/720/?image=20" class="d-block w-100" >
    </div>
  </div>
</div>

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js"></script>

【讨论】:

这很完美!非常感谢您的帮助:)【参考方案2】:

它适用于通用 boostrapp 轮播。 仅在 body 标签内添加此代码

 <script>
    $(document).ready(function()
        $("#carousel").carousel(interval: 300, pause: false, wrap:true);
        $("#carousel").carousel("pause");
    );
    
    $(".carousel").on("mouseenter",function() 
        $(this).carousel('cycle');
      ).on("mouseleave", function() 
        $(this).carousel('pause');
    );
 <script>

【讨论】:

以上是关于如何在鼠标悬停时播放引导 4 轮播,并在页面加载时禁用自动播放?的主要内容,如果未能解决你的问题,请参考以下文章

悬停时如何使引导按钮消失

如何在悬停时暂停引导轮播并在鼠标悬停时恢复它?

在鼠标悬停时播放 Gif 并在鼠标移出时暂停 Gif 而不替换图像?

悬停时播放音频文件(鼠标悬停时停止播放)

悬停时的图像播放视频并在完成时使用图像重置 div

当鼠标悬停在引导程序中列出文本时如何使图像弹出