- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在设置一个光滑的 slider ,现在点击下一个 slider 的选项(只需按下一个视频)将播放下一个视频。问题是当用户已经在观看新视频时,我如何停止视频(以防用户没有看完上一个视频)。
我想也许它必须对 wistia.com api 做些什么,它可能有助于解决这个问题。 (我在那里托管我的视频)。
我的 html:
<div class="container-fluid">
<div class="col-12 mx-auto text-center">
<div class="center slider">
<div>
<div class="video">
<script src="https://fast.wistia.com/embed/medias/hmtobx4al7.jsonp" async></script>
<script src="https://fast.wistia.com/assets/external/E-v1.js" async></script>
<div class="wistia_responsive_padding" style="padding:56.25% 0 0 0;position:relative;">
<div class="wistia_responsive_wrapper"
style="height:100%;left:0;position:absolute;top:0;width:100%;">
<div class="wistia_embed wistia_async_hmtobx4al7 videoFoam=true"
style="height:100%;position:relative;width:100%">
<div class="wistia_swatch"
style="height:100%;left:0;opacity:0;overflow:hidden;position:absolute;top:0;transition:opacity 200ms;width:100%;">
<img src="https://fast.wistia.com/embed/medias/hmtobx4al7/swatch"
style="filter:blur(5px);height:100%;object-fit:contain;width:100%;"
alt="" onload="this.parentNode.style.opacity=1;" /></div>
</div>
</div>
</div>
</div>
<br>
<span class="mentor-name">Anthony Morrison</span> <br>
<span class="mentor-quote">“Igor has done a phenomenal job as a JV partner. He has a higher
conversion rate than any JV that promoted our webinar.”</span>
</div>
<div>
<div class="video">
<script src="https://fast.wistia.com/embed/medias/55ilr5u699.jsonp" async></script>
<script src="https://fast.wistia.com/assets/external/E-v1.js" async></script>
<div class="wistia_responsive_padding" style="padding:56.25% 0 0 0;position:relative;">
<div class="wistia_responsive_wrapper"
style="height:100%;left:0;position:absolute;top:0;width:100%;">
<div class="wistia_embed wistia_async_55ilr5u699 videoFoam=true"
style="height:100%;position:relative;width:100%">
<div class="wistia_swatch"
style="height:100%;left:0;opacity:0;overflow:hidden;position:absolute;top:0;transition:opacity 200ms;width:100%;">
<img src="https://fast.wistia.com/embed/medias/55ilr5u699/swatch"
style="filter:blur(5px);height:100%;object-fit:contain;width:100%;"
alt="" onload="this.parentNode.style.opacity=1;" /></div>
</div>
</div>
</div>
</div>
<br>
<span class="mentor-name">michael cheney</span> <br>
<span class="mentor-quote">“Igor's a super big player. He doesn't make a big song and dance
about it, but trust me, if you want big numbers - talk to Igor!”</span>
</div>
<div>
<div class="video">
<script src="https://fast.wistia.com/embed/medias/r1ru4nt171.jsonp" async></script>
<script src="https://fast.wistia.com/assets/external/E-v1.js" async></script>
<div class="wistia_responsive_padding" style="padding:56.25% 0 0 0;position:relative;">
<div class="wistia_responsive_wrapper"
style="height:100%;left:0;position:absolute;top:0;width:100%;">
<div class="wistia_embed wistia_async_r1ru4nt171 videoFoam=true"
style="height:100%;position:relative;width:100%">
<div class="wistia_swatch"
style="height:100%;left:0;opacity:0;overflow:hidden;position:absolute;top:0;transition:opacity 200ms;width:100%;">
<img src="https://fast.wistia.com/embed/medias/r1ru4nt171/swatch"
style="filter:blur(5px);height:100%;object-fit:contain;width:100%;"
alt="" onload="this.parentNode.style.opacity=1;" /></div>
</div>
</div>
</div>
</div>
<br>
<span class="mentor-name">Ron Douglas</span> <br>
<span class="mentor-quote">“Cease every opportunity to work with Igor. He's one of the top
guys in list building.”</span>
</div>
<div>
<div class="video">
<script src="https://fast.wistia.com/embed/medias/n1u4w38ibb.jsonp" async></script>
<script src="https://fast.wistia.com/assets/external/E-v1.js" async></script>
<div class="wistia_responsive_padding" style="padding:56.25% 0 0 0;position:relative;">
<div class="wistia_responsive_wrapper"
style="height:100%;left:0;position:absolute;top:0;width:100%;">
<div class="wistia_embed wistia_async_n1u4w38ibb videoFoam=true"
style="height:100%;position:relative;width:100%">
<div class="wistia_swatch"
style="height:100%;left:0;opacity:0;overflow:hidden;position:absolute;top:0;transition:opacity 200ms;width:100%;">
<img src="https://fast.wistia.com/embed/medias/n1u4w38ibb/swatch"
style="filter:blur(5px);height:100%;object-fit:contain;width:100%;"
alt="" onload="this.parentNode.style.opacity=1;" /></div>
</div>
</div>
</div>
</div>
<br>
<span class="mentor-name">John Crestani</span> <br>
<span class="mentor-quote">“If you are not working with Igor Kheifets, you are seriously
missing out.”</span>
</div>
<div>
<div class="video">
<script src="https://fast.wistia.com/embed/medias/dkbrixea1u.jsonp" async></script>
<script src="https://fast.wistia.com/assets/external/E-v1.js" async></script>
<div class="wistia_responsive_padding" style="padding:56.25% 0 0 0;position:relative;">
<div class="wistia_responsive_wrapper"
style="height:100%;left:0;position:absolute;top:0;width:100%;">
<div class="wistia_embed wistia_async_dkbrixea1u videoFoam=true"
style="height:100%;position:relative;width:100%">
<div class="wistia_swatch"
style="height:100%;left:0;opacity:0;overflow:hidden;position:absolute;top:0;transition:opacity 200ms;width:100%;">
<img src="https://fast.wistia.com/embed/medias/dkbrixea1u/swatch"
style="filter:blur(5px);height:100%;object-fit:contain;width:100%;"
alt="" onload="this.parentNode.style.opacity=1;" /></div>
</div>
</div>
</div>
</div>
<br>
<span class="mentor-name">Matt Bacak</span> <br>
<span class="mentor-quote">“Igor has quickly risen to become one of the greatest list
builders I've ever met.”</span>
</div>
<div>
<div class="video">
<script src="https://fast.wistia.com/embed/medias/i2cnznqtvz.jsonp" async></script>
<script src="https://fast.wistia.com/assets/external/E-v1.js" async></script>
<div class="wistia_responsive_padding" style="padding:56.25% 0 0 0;position:relative;">
<div class="wistia_responsive_wrapper"
style="height:100%;left:0;position:absolute;top:0;width:100%;">
<div class="wistia_embed wistia_async_i2cnznqtvz videoFoam=true"
style="height:100%;position:relative;width:100%">
<div class="wistia_swatch"
style="height:100%;left:0;opacity:0;overflow:hidden;position:absolute;top:0;transition:opacity 200ms;width:100%;">
<img src="https://fast.wistia.com/embed/medias/i2cnznqtvz/swatch"
style="filter:blur(5px);height:100%;object-fit:contain;width:100%;"
alt="" onload="this.parentNode.style.opacity=1;" /></div>
</div>
</div>
</div>
</div>
<br>
<span class="mentor-name">Dean Holland</span> <br>
<span class="mentor-quote">“I recommend all my clients and customers to work with Igor. Igor
goes above and beyond for his customers.”</span>
</div>
</div>
</div>
</div>
我巧妙的设置:
// Testimonial Slider
$('.slider').slick({
infinite: true,
centerMode: true,
centerPadding: '12%',
slidesToShow: 3,
slidesToScroll: 1,
arrows: false,
speed: 500,
autoplay: true,
autoplaySpeed: 8000,
focusOnSelect: true,
waitForAnimate: true,
responsive: [{
breakpoint: 992,
settings: {
slidesToShow: 1
}
}]
});
$('.slider').click(function () {
$(".slider").slick('slickNext').focus();
$(".video").trigger('focus')
});
$('.video').click(function () {
$(".video").trigger('focus')
});
最佳答案
最近我不得不处理同样的问题。带有视频元素的 Slick slider ,应在幻灯片切换后开始并在幻灯片切换前停止。
首先是一些基础知识,在大多数现代浏览器中,您无法在没有用户交互的情况下自动播放有声视频。如果视频有声音,即使是 javascript .play() 方法也将不起作用。
要实现您的视频将在幻灯片切换时播放,必须将它们静音。有一些针对此问题的解决方案和解决方法。
与其使用 .on(click)
处理程序,不如在更改前后监听 slick 事件。添加视频控制并让 slick 处理事件
$( document ).ready(function() {
VideoController.init();
var $slider = $('.slider');
$slider.on("beforeChange", function (
event,
slick,
currentSlide,
nextSlide
) {
var $currentSlide = $(slick.$slides[currentSlide]);
VideoController.stopVideo($currentSlide);
});
$slider.on("afterChange", function (event, slick, currentSlide) {
var $currentSlide = $(slick.$slides[currentSlide]);
VideoController.playVideo($currentSlide);
});
});
之后,您需要让您的视频 Controller 完成剩下的工作。Wistia 提供了一个 JS 库,您可以使用它,但我无法提供如何使用它。
我可以提供的解决方案无需额外的 Controller 即可使用发布消息来控制视频元素。
var VideoController = (function () {
function init() {
}
// POST commands to YouTube or Vimeo API
function postMessageToPlayer(player, command) {
console.log('postMessageToPlayer');
if (player == null || command == null) return;
player.contentWindow.postMessage(JSON.stringify(command), "*");
}
function playVideo($ancestor) {
console.log('playVideo');
var player, video;
if ($ancestor.find('iframe').length) {
console.log('found Video');
player = $ancestor.find('iframe').get(0);
if ($('html').hasClass('is-muted')) {
postMessageToPlayer(player, {
"event": "command",
"func": "mute"
});
} else {
postMessageToPlayer(player, {
"event": "command",
"func": "unMute"
});
}
postMessageToPlayer(player, {
"event": "command",
"func": "playVideo"
});
} else if ($ancestor.find('video').length) {
video = $ancestor.find("video").get(0);
video.play();
} else {
console.log('no Video');
}
}
// Stops video and will play from start on resume
function stopVideo($ancestor) {
console.log('stopVideo');
var player, video;
if ($ancestor.find("iframe").length) {
player = $ancestor.find("iframe").get(0);
postMessageToPlayer(player, {
"event": "command",
"func": "stopVideo"
});
} else if ($ancestor.find("video").length) {
video = $ancestor.find("video").get(0);
video.pause();
// Check if the Video is loade, ohterwise it will break your js espacially in ie11
if (video.readyState === 4) {
video.currentTime = 0;
}
}
}
// pauses video to resume
function pauseVideo($ancestor) {
console.log('pauseVideo');
var player, video;
if ($ancestor.find("iframe").length) {
player = $ancestor.find("iframe").get(0);
postMessageToPlayer(player, {
"event": "command",
"func": "pauseVideo"
});
} else if ($ancestor.find("video").length) {
video = $ancestor.find("video").get(0);
video.pause();
}
}
return {
init: init,
postMessageToPlayer: postMessageToPlayer,
playVideo: playVideo,
stopVideo: stopVideo,
pauseVideo: pauseVideo
}
})();
在每张幻灯片中搜索视频元素,并根据其类型控制播放。此视频 Controller 向 iframe 发送了一条消息,以启动嵌入式播放器的播放或 html 视频的 .play() JS 方法。
您需要检查 post 方法是否适用于您的 wistia。我使用 post json 方法在他们的文档中找到了一些关于此的内容,但我没有找到播放或停止命令。不确定这个命令是否正确。
如果没有,您必须使用 wistia api.js 来控制您的视频播放并替换视频 Controller 方法中的代码。
所有学分转到https://codepen.io/digistate/pen/MvapbE不幸的是,我没有堆栈帖子的原始链接了
关于javascript - 用户滚动后如何防止 2 个视频同时工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55917394/
如果附加了 'not-scroll' 类,我希望我的 body 不滚动,否则它应该正常工作。 我已经搜索这个问题两天了,但找不到任何适合我的解决方案。 我想要的是向 body 添加一个 class,并
我发现似乎是 iOS Safari 中的错误(我正在 iOS 8 上进行测试)。当绝对定位的 iFrame 漂浮在一段可滚动内容上方时,滚动 iFrame 也会滚动下面的内容。以下 HTML (ava
我有以下代码来显示一系列投资组合图片,这些图片以 SVG 格式存储在滚动 div 中: 在 Safari 中滚动使用两根手指或鼠标滚轮当光标位于 SVG 之一上时不起作用。 该页
我想用 javascript 做的是: 一旦你向下滚动页面,将#sidebar-box-fixed 的位置从 position: relative; 更改为定位:固定;。改回position:rela
我对 Elasticsearch 的滚动功能有点困惑。在 elasticsearch 中,每当用户在结果集上滚动时,是否可以每次调用搜索 API?来自文档 "search_type" => "scan
我试图做到这一点,以便当我向上或向下滚动页面时,它会运行不同的相应功能。我发现了一个类似的问题here但我已经尝试了他们的答案并且没有运气。 注意:此页面没有正常显示的滚动条。没有地方可以滚动。 bo
(C语言,GTK库) 在我的表单上,我有一个 GtkDrawingArea 小部件,我在上面使用 Cairo 绘制 GdkPixbufs(从文件加载)。我想要完成的是能够在窗口大小保持固定的情况下使用
最近我一直在尝试创建一个拉到(刷新,加载更多)swiftUI ScrollView !!,灵感来自 https://cocoapods.org/pods/SwiftPullToRefresh 我正在努
我正在开发一个应用程序,其中有两个带有可放置区域的列表和一个带有可拖动项目的侧面菜单。 当我滚动屏幕时,项目的位置困惑。 我试图在谷歌上寻找一些东西,最后得到了这个问题:jQuery draggabl
我在 UIWebView 中加载了一个 HTML 表单,而我的 UIWebView 恰好从 View 的中间开始并扩展。我必须锁定此 webView 不滚动并将其放在 ScrollView 之上以允许
如何在每个元素而不是整个元素上应用淡入淡出(与其高度相比)? HTML: CSS: * { padding: 0; margin: 0; box-sizing: border
我想使用带有垂直轴的 PageView 并使用鼠标滚动在页面之间移动,但是当我使用鼠标滚动时页面不滚动...仅页面单击并向上/向下滑动时滚动。 有什么办法吗? 我想保留属性 pageSnapping:
我制作这个程序是为了好玩,但我被卡住了,因为程序在屏幕外运行。如何在不完全更改代码的情况下实现滚动条。 public static void main(String args[]) throws IO
我想使用带有垂直轴的 PageView 并使用鼠标滚动在页面之间移动,但是当我使用鼠标滚动时页面不滚动...仅页面单击并向上/向下滑动时滚动。 有什么办法吗? 我想保留属性 pageSnapping:
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
使用 jquery 技术从 css-tricks.com 获得滚动/跟随侧边栏,如果您不知道我在说什么,这里是代码: $(function() { var $sidebar = $
我是 jQuery Mobile 新手。我需要向我的应用程序添加 Facebook 滑动面板功能。 我经历了 sliding menu panel ,它工作正常,但我在菜单面板中的内容超出了窗口大小,
有没有办法在 js 或 jQuery 或任何其他工具中检测 ctrl + 滚动。我正在尝试执行一些动态布局代码,我需要检测不同分辨率下的屏幕宽度,我通过使用 setTimeout() 的计时器实现了这
我有一部分html代码:
我想控制 RichTextBox 滚动,但在控件中找不到任何方法来执行此操作。 这样做的原因是我希望当鼠标光标位于 RichTextBox 控件上时鼠标滚轮滚动有效(它没有事件焦点:鼠标滚轮事件由表单
我是一名优秀的程序员,十分优秀!