Javascript HTML视频调整大小以始终适合

Javascript 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

我正在寻找一个简单的解决方案,以始终保持视频的纵横比,但也始终适合在浏览器窗口内的宽度和高度的视频

到目前为止,我找到的所有解决方案都只适合宽度,但我还需要适合高度。}

尝试使用Javascript

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,这是一个很好的挑战。:)太棒了!很高兴提供帮助。