flexbox中的HTML5视频高度错误

Posted

技术标签:

【中文标题】flexbox中的HTML5视频高度错误【英文标题】:HTML5 video wrong height in flexbox 【发布时间】:2017-11-12 17:20:01 【问题描述】:

在recent website I made 上,我添加了一个视频:

<video autoplay loop muted 
  src="video.mp4">
    Your browser doesn't seem to support videos :(
</video>

此视频位于 display: flex 父级中。 因为我希望它具有响应性,所以我在我的 CSS 中有这个:

video 
    width: 100%;
    height: auto;

这个functions fine in Firefox. 在Chrome, on the other hand 中,似乎发生了以下情况:

元素的宽度按预期设置。 如果元素没有限制其大小,则元素的高度是根据视频的宽度应该是设置的。

我该如何解决这个问题,以便视频尊重&lt;video&gt; 元素的宽度(以响应方式),而高度由视频的纵横比和元素的宽度决定?

.container 
  display: flex;
  flex-wrap: wrap;
  width: 50%;
  border: 2px dotted red;

video 
  width: 100%;
  height: auto;
  flex-shrink: 1;
  border: 2px solid blue;

.content 
  border: 2px solid green;
<div class="container">
  <video autoplay loop muted 
    src="https://birjolaxew.github.io/flippy.js/assets/video/train.mp4">
      Your browser doesn't seem to support videos :(
  </video>
  <div class="content">
    Content below video goes here.
  </div>
</div>

【问题讨论】:

【参考方案1】:

问题似乎是由于 flex。

.container 中删除display:flex 将修复它。

如果您需要flex,请将flex-direction:column 添加到.container,因为这是您实际使用它的方式。


*box-sizing:border-box;
.container 
  display: flex;
  flex-wrap: wrap;
  flex-direction:column;
  width: 50%;
  border: 2px dotted red;

video 
  width: 100%;
  height: auto;
  flex-shrink: 1;
  border: 2px solid blue;

.content 
  border: 2px solid green;
<div class="container">
  <video autoplay loop muted 
    src="https://birjolaxew.github.io/flippy.js/assets/video/train.mp4">
      Your browser doesn't seem to support videos :(
  </video>
  <div class="content">
    Content below video goes here.
  </div>
</div>

【讨论】:

我得出的结论与您的回答相同(尽管没有解决方案):) 谢谢!

以上是关于flexbox中的HTML5视频高度错误的主要内容,如果未能解决你的问题,请参考以下文章

三 div / 两列布局 - 可以使用 Flexbox 吗?

html5中的静音标题视频

Chrome 中的 Flexbox 容器没有达到 100% 的高度 [重复]

在 HTML5 中设置视频高度

获取真正的 HTML5 视频宽度和高度

flexbox中的图像高度在IE中不起作用