JS窗口宽度html5视频元素响应
JS window width html5 video element responsive
好吧,我已经尝试了很多不同的东西,但不能让它工作。所以我在这里问。
我在一个页面上有3个视频元素。一款适用于台式机、平板电脑和智能手机。现在我需要根据屏幕大小来删除视频元素。
So when screen size is < 767:
Smartphone = visible
Tablet = removed
Desktop = removed
Screen size is >=767 && <980
Smartphone = removed
Tablet = visible
Desktop = removed
Screen size is >=980
Smartphone = removed
Tablet = removed
Desktop = visible
CSS媒体查询不工作,因为视频元素一直在播放。是的,在移动设备上它被阻止了自动播放,但在桌面浏览器上调整它的播放大小,这应该不会发生。所以显示:没有;是不可能的。
所以我想我需要创建一些JS魔法。这就是我到目前为止所拥有的,我正试图用我能想到的一切来填补空白页,但到目前为止,它并没有产生预期的效果。
$(document).ready(function () {
$(window).resize(function () {
if ($(this).width() < 767)
WHAT SHOULD I WRITE HERE
else if ($(this).width() >= 767 && $(this).width() < 980)
WHAT SHOULD I WRITE HERE
else if ($(this).width() >= 980)
WHAT SHOULD I WRITE HERE
});
});
http://jsfiddle.net/36unpxj0/2/在上面的代码中,您可以完整地看到代码并对其进行操作。谢谢你的帮助。
PS: jQuery解决方案就像纯JS一样受欢迎,但请告诉它是JS还是jQuery。
编辑1:像往常一样,我将继续搜索和添加信息到这篇文章!我发现下面的代码可以达到这个目的:$("#video-ID").first().attr('src','')
或
$("#video-ID").empty().remove();
我尝试了两个,但没有运气:见小提琴http://jsfiddle.net/36unpxj0/3/
编辑2:好了,从citizenendelta那里得到了答案,它在JSFiddle中工作,因此我接受了他的答案。然而,这是目前没有工作在Joomla网站。所以我要继续查找
这里有一个演示,我希望,这是你需要的:demo
步骤:
- 我隐藏每个视频(pauseAndHideAll函数)
- 我检测屏幕(showTheGoodOne函数)
- 我显示并播放对应的视频
在JavaScript中,我刚刚做了这个:
$(document).ready(function () {
function pauseAndHide($element) {
$element.get(0).pause();
$element.hide();
}
function showTheGoodOne() {
if ($(window).width() < 767) {
$('#smartphonevid').show();
$('#smartphonevid').get(0).play();
} else if ($(window).width() >= 767 && $(this).width() < 980) {
$('#tabletvid').show();
$('#tabletvid').get(0).play();
} else if ($(window).width() >= 980) {
$('#desktopvid').show();
$('#desktopvid').get(0).play();
}
}
function pauseAndHideAll() {
$('video').each(function() {
pauseAndHide($(this));
});
}
pauseAndHideAll();
showTheGoodOne();
$(window).resize(function () {
pauseAndHideAll();
showTheGoodOne();
});
});
可选改进:
也许你可以检测到视频的当前播放时间,然后你继续播放另一个视频到这个时间
希望这对你有所帮助
#video-bg {
height: 0;
overflow: hidden;
padding-bottom: 56.25%;
padding-top: 30px;
position: relative;
}
#video-bg > video {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
<div id="video-bg" class="smartphone">
<video autoplay muted loop controls id="smartphonevid">
<source src=http://techslides.com/demos/sample-videos/small.webm type=video/webm>
<source src=http://techslides.com/demos/sample-videos/small.ogv type=video/ogg>
<source src=http://techslides.com/demos/sample-videos/small.mp4 type=video/mp4>
</video>
</div>
相关文章:
- tiltSlider播放/暂停视频元素(如果li有当前类)
- 如何在没有safari的情况下为浏览器隐藏视频元素
- 如何将视频数据流式传输到视频元素
- IndexSizeError在使用JS的视频元素上衰减声音时引起
- 更改 i-Devices 的 html5 视频元素的 HLS 视频源
- HTML 5<视频>元素上的弹性增长不起作用
- 在视频元素上获取准确的鼠标坐标
- 如何在 HTML5 视频元素中播放电影时在 IOS 上显示非全尺寸视频
- 在整个网页上重复<视频>元素作为磁贴
- 为什么ctx.drawImage只将视频元素的一部分绘制到画布上
- 如何在 owl-carousel 幻灯片中查找视频元素,然后仅为该特定幻灯片设置 owl-carousel 控件的 cs
- 向视频元素添加/删除类
- 读取视频中的视频元素/属性的正确方法是什么.js
- 创建两个具有相同源的 HTML5 视频元素不起作用
- 寻找什么事件..更改视频元素的当前时间时
- 普通<视频>元素或视频插件加载速度更快
- 当我按下HTML5视频元素的默认全屏按钮时,如何捕获全屏事件
- 视频元素阻止右键单击代码不适用于动态元素
- jquery插件,引用DOM中的视频元素
- html5视频元素有任何错误?它不会在几个小时后继续播放内容