Javascript HTML视频调整大小以始终适合
我正在寻找一个简单的解决方案,以始终保持视频的纵横比,但也始终适合在浏览器窗口内的宽度和高度的视频 到目前为止,我找到的所有解决方案都只适合宽度,但我还需要适合高度。} 尝试使用JavascriptJavascript HTML视频调整大小以始终适合,javascript,jquery,html,css,video,Javascript,Jquery,Html,Css,Video,我正在寻找一个简单的解决方案,以始终保持视频的纵横比,但也始终适合在浏览器窗口内的宽度和高度的视频 到目前为止,我找到的所有解决方案都只适合宽度,但我还需要适合高度。} 尝试使用Javascript function updateHeight() { var videoHeight = 9 * videoDom.offsetWidth / 16; videoDom.style.height = vidoeHeight + "px"; } window.onload = func
function updateHeight()
{
var videoHeight = 9 * videoDom.offsetWidth / 16;
videoDom.style.height = vidoeHeight + "px";
}
window.onload = function()
{
updateHeight();
}
window.onresize = function()
{
updateHeight();
}
假设视频的纵横比为16:9。尝试使用Javascript
function updateHeight()
{
var videoHeight = 9 * videoDom.offsetWidth / 16;
videoDom.style.height = vidoeHeight + "px";
}
window.onload = function()
{
updateHeight();
}
window.onresize = function()
{
updateHeight();
}
假设您的视频的纵横比为16:9。我写这篇文章最初是为了回答另一个问题,但它应该适用于任何元素。只需更改第一个变量以匹配视频元素。如果只调整单个元素的大小,也可以删除for循环
.video-container {
position: relative;
overflow: hidden;
height: 0;
padding-bottom: 56.25%; /* calculate by aspect ratio (h / w * 100%) */
}
.video-container .video {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
<div class="video-container">
<video class="video"></video>
</div>
JS:
function resize(){
var img=document.getElementsByTagName('img');
var w=窗内宽度;
var h=窗内高度;
//控制台日志(w);
//控制台日志(h);
对于(i=0;ih&&img[i].clientWidth=w){
img[i].style.width=w+“px”;
}
if(img[i].clientHeight
.video-container {
position: relative;
overflow: hidden;
height: 0;
padding-bottom: 56.25%; /* calculate by aspect ratio (h / w * 100%) */
}
.video-container .video {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
<div class="video-container">
<video class="video"></video>
</div>
JS:
function resize(){
var img=document.getElementsByTagName('img');
var w=窗内宽度;
var h=窗内高度;
//控制台日志(w);
//控制台日志(h);
对于(i=0;ih&&img[i].clientWidth=w){
img[i].style.width=w+“px”;
}
if(img[i].clientHeight
.video-container {
position: relative;
overflow: hidden;
height: 0;
padding-bottom: 56.25%; /* calculate by aspect ratio (h / w * 100%) */
}
.video-container .video {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
<div class="video-container">
<video class="video"></video>
</div>
.video容器{
位置:相对位置;
溢出:隐藏;
身高:0;
填充底部:56.25%;/*按纵横比计算(高宽*100%)*/
}
.视频容器.视频{
位置:绝对位置;
排名:0;
左:0;
宽度:100%;
身高:100%;
}
请参阅。它与
、
、
和
标记一起工作。我的示例只是一个彩色的
,它保持其“纵横比”恒定。做到了这一点。诀窍是CSS填充底部是根据元素的宽度计算的
.video-container {
position: relative;
overflow: hidden;
height: 0;
padding-bottom: 56.25%; /* calculate by aspect ratio (h / w * 100%) */
}
.video-container .video {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
<div class="video-container">
<video class="video"></video>
</div>
.video容器{
位置:相对位置;
溢出:隐藏;
身高:0;
填充底部:56.25%;/*按纵横比计算(高宽*100%)*/
}
.视频容器.视频{
位置:绝对位置;
排名:0;
左:0;
宽度:100%;
身高:100%;
}
请参阅。它与
、
、
和
标记一起工作。我的示例只是一个彩色的
,它保持其“纵横比”恒定。您可以尝试CSS唯一的路线。YouTube有我正在寻找的解决方案,即保持宽度和高度的16:9比例
video {
width: 100%;
min-height: 480px;
height: calc((9 / 16) * 100vw);
max-height: calc(100vh - 169px);
}
有了HTML5,无论视频的比例如何,视频的外观都会对父视频产生影响。你可以尝试仅使用CSS的方式。YouTube有一个我一直在寻找的解决方案,就是将宽度和高度保持在16:9的比例
video {
width: 100%;
min-height: 480px;
height: calc((9 / 16) * 100vw);
max-height: calc(100vh - 169px);
}
有了HTML5,无论视频的比例如何,视频的外观都会对家长产生影响。嘿,什蒂安,你有什么可以提供的代码示例吗?试试display:flex
或display:run-in
HI!到目前为止我正在使用这个解决方案()它适用于宽度,但不关心视口的高度。你所要求的,据我所知,自相矛盾。你希望视频保持纵横比,但根据屏幕调整其高度和宽度。不,我不希望它调整其宽度,我只想保持纵横比并适应视口。对角调整大小确切地说是这样的。:)嘿,Štěpán,你有什么可以提供的代码示例吗?试试display:flex
或display:run-in
HI!到目前为止,我正在使用这个解决方案()它适用于宽度,但不关心视口的高度。你所要求的,据我所知,自相矛盾。你希望视频保持纵横比,但根据屏幕调整其高度和宽度。不,我不希望它调整其宽度,我只想保持纵横比并适应视口。对角调整大小说的没错。:)谢谢Matt,我自己编辑了这一小段并解决了这个问题!以前从未使用过Javascript,这是一个很好的挑战。:)太棒了!很高兴能提供帮助。谢谢Matt,我自己编辑了这一小段并解决了这个问题!以前从未使用过Javascript,这是一个很好的挑战。:)太棒了!很高兴提供帮助。