javascript - Slick Carousel 问题幻灯片的视频背景
问题描述
我遇到的 Slick.js 轮播中的视频背景存在一些问题。
HTML:
<div id="mySlick">
<div class="item">
<img class="carousel-item-background" src="images/01.jpg">
</div>
<div class="item">
<img class="carousel-item-background" src="images/02.jpg">
</div>
<div class="item">
<img class="carousel-item-background" src="images/03.jpg">
</div>
<div class="item">
<div class="carousel-item-background">
<video class="bgVid" autoplay muted loop preload>
<source src="video.mp4" type="video/mp4">
</video>
</div>
</div>
</div>
JS:
$("#mySlick").on('init', function(event. slick){
$(".carousel-item-background").each(function(){
$(this).find('.bgVid').get(0).play();
});
});
$("#mySlick").slick({
dots: false,
infinite: true,
speed: 1000,
slidesToShow: 1,
slidesToScroll: 1,
autoplay: true,
autoplaySpeed: 10000,
arrows: true,
focusOnSelect: true
});
function reloadBGVid(){
$("video[class='bgVid']").each(function(){
var ve = $(this);
var $video = ve.get(0);
if ($video.paused){
$video.play();
}
});
};
除非我排除了 CSS,否则滑块会加载并且看起来很好。我可以通过滑块一直单击下一个和上一个。第一次通过滑块单击 NEXT 时,当我到达视频幻灯片时,视频将从头开始,第一次单击 PREVIOUS 到视频幻灯片,即使我等待了几秒钟的视频要开始播放,我可以在 FIRST 幻灯片和 LAST 幻灯片之间的过渡期间看到视频已经进行,但是当过渡结束时,视频会倒退到开头并从那里播放。我的脚本中没有 afterChange 调用。
我遇到的第二个问题是响应式的。我在 CSS 中有一个媒体查询,如果窗口宽度小于 768px,则视频设置为display: none
. 我有一个 jQuery 函数,如果窗口为 768px 或更大,则媒体查询无效并reloadBGVid()
调用该函数。但无论我如何定位.bgVid
,它都不会再次播放视频。
解决方案
您在问题中发布的代码包含错误并且根本不起作用。
我找不到在标签和事件处理程序中同时具有autoplay
属性的理由。此外,您在哪里调用函数
也不清楚。video
oninit
reloadBGVid
所以我只是为你留下下面的片段,希望它有所帮助:
$(document).ready(function() {
$("#mySlick").on('init', function(event) {
$(".carousel-item-background .bgVid").each(function(i, e) {
e.play();
});
});
$("#mySlick").slick({
dots: false,
infinite: true,
speed: 1000,
slidesToShow: 1,
slidesToScroll: 1,
autoplay: true,
autoplaySpeed: 10000,
arrows: true,
focusOnSelect: true
});
function reloadBGVid() {
$("video.bgVid").each(function(i, e) {
if (e.paused) e.play();
});
}
});
body {background: #259}
#mySlick {width:436px; height:300px; margin: auto}
video {width:426px; height:240px; object-fit:cover}
<link href="https://kenwheeler.github.io/slick/slick/slick-theme.css" rel="stylesheet" />
<link href="https://kenwheeler.github.io/slick/slick/slick.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://kenwheeler.github.io/slick/slick/slick.js"></script>
<div id="mySlick">
<div class="item">
<img class="carousel-item-background" src="https://picsum.photos/426/240?1">
</div>
<div class="item">
<img class="carousel-item-background" src="https://picsum.photos/426/240?2">
</div>
<div class="item">
<img class="carousel-item-background" src="https://picsum.photos/426/240?3">
</div>
<div class="item">
<div class="carousel-item-background">
<video class="bgVid" muted loop preload>
<source src="http://dash.akamaized.net/akamai/bbb/bbb_1280x720_60fps_6000k.mp4" type="video/mp4">
</video>
</div>
</div>
</div>
推荐阅读
- postgresql - 数据库迁移 - PostgreSQL - 30TB - OnPrem 到 GCP(CloudSQL)
- react-native - 从 Firebase 存储博览会 cli 获取下载地址
- pafy - 找不到视频格式
- java - 启动 Spring Boot 应用程序出现错误:org.springframework.boot.web.server.PortInUseException: Port 8080 is already in use
- python - tweepy.error.TweepError:此方法不执行分页
- log4j2 - log4j2 自动初始化禁用不适用于 isLog4jAutoInitializationDisabled
- vba - 这是检索和存储检索到的 QueryPerformanceCounter 值的最快方法吗?
- c++ - ffmpeg:测试格式是否可搜索
- python - WASD sprite 移动以及向鼠标旋转的问题
- api - 使用 Firebase 云消息传递,还是让应用通过 API 请求事件和触发通知?