我正在测试使用引导程序在我的计算机上本地构建站点。
我有一个<video>
作为网站的标题。
我希望该视频在移动设备上显示完整的宽度和高度,并在台式机上显示该视频的裁剪/宽版。我尝试在<source>
标记中使用内联媒体查询,以使src
发生变化,但没有任何效果。
所以我换了档,并使用了一些JavaScript来进行更改。
所以疯狂的是,看来我的脚本有效。当我查看chrome开发工具时,src
实际上在更改浏览器屏幕大小时会发生变化,但是,它不会反映在网站本身上,而是将我设置的src
保留在html,好像忽略了我的脚本一样。
我已经尝试了所有可能想到的方法,但是我被困住了,不确定如何进一步进行下去。我的代码如下:
HTML
<video class="col-12" loop muted autoplay >
<source id="hvid" src="media/test.mp4" type="video/mp4">
</video>
JS
let homeVideo = document.getElementById('hvid')
console.log(homeVideo.src)
function myFunction(x) {
if (x.matches) { // If media query matches
homeVideo.src = "media/test.mp4";
} else {
homeVideo.src = "media/test-3.mp4";
}
}
var x = window.matchMedia("(max-width: 700px)")
myFunction(x) // Call listener function at run time
x.addListener(myFunction) // Attach listener function on state changes
;
console.log(homeVideo.src)
-编辑-
JS
var w = window.matchMedia("(max-width: 700px)");
var vid = document.getElementById("vid");
var source = document.getElementById("hvid");
window.addEventListener("resize", function screenres(){
if (w.matches) {
vid.pause();
source.src = "media/test.mp4";
vid.load();
vid.play();
} else {
vid.pause();
source.src = "media/test-3.mp4";
vid.load();
vid.play();
};
});
HTML
<div class="container">
<div class="row">
<video id="vid" class="col-12" loop muted autoplay>
<source id="hvid" src="media/test.mp4" type="video/mp4">
</video>
</div>
</div>
答案 0 :(得分:0)
只需获取视口大小,然后基于该值,暂停视频,更改src
链接,加载新视频并播放新视频。
但是请注意,您需要在更改浏览器大小后刷新页面才能看到视频更改。
如果您希望在屏幕调整大小和刷新页面时更改视频,则首先需要将上述JavaScript移至某个函数,并在触发resize
事件时运行它。然后,对于页面加载,您需要从HTML中删除video元素,并使用createElement()方法在页面加载时将其添加,并根据视口宽度添加src
属性值。>
选中此 JSFiddle 或运行以下代码段,以获取上述内容的实际示例:
/* JavaScript */
var w = window.matchMedia("(max-width: 700px)");
var vid = document.getElementById("vid");
var source = document.createElement("source");
source.id = "hvid";
source.setAttribute("type", "video/mp4");
vid.appendChild(source);
if (w.matches) {
vid.pause();
source.removeAttribute("src");
source.setAttribute("src", "https://storage.googleapis.com/coverr-main/mp4/Love-Boat.mp4");
vid.load();
vid.play();
} else {
vid.pause();
source.removeAttribute("src");
source.setAttribute("src", "https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4");
vid.load();
vid.play();
}
window.addEventListener("resize", function(){
var w = window.matchMedia("(max-width: 700px)");
var vid = document.getElementById("vid");
var source = document.getElementById("hvid");
if (w.matches) {
vid.pause();
source.src = "https://storage.googleapis.com/coverr-main/mp4/Love-Boat.mp4";
vid.load();
vid.play();
} else {
vid.pause();
source.src = "https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4";
vid.load();
vid.play();
}
});
/* CSS */
html, body {margin: 0; padding:0; width: 100%; height: 100%;}.row{display: block !important;}
<!-- CDN Links -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"></script><script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/><link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"/>
<!-- HTML -->
<div class="container">
<div class="row">
<video id="vid" class="col-12" loop muted autoplay></video>
</div>
</div>