html - 调整 HTML 视频的大小以适应父容器的高度 * 和 * 宽度
问题描述
我已经阅读了很多关于调整视频大小以适应浏览器和/或父元素的 SO 帖子,但它们都没有满足我的需求。我有一个单页应用程序,overflow: hidden
因此该应用程序不会滚动。该应用程序有各种display:flex
容器,其中一个我想要一个 16x9 视频。我希望整个视频始终适合其容器(因此,如果容器太宽,顶部/底部会出现条形,如果容器太高,则左/右会出现条形)。我可以width: 100%
在视频上使用它来根据容器宽度调整它的大小,但是我想不出任何方法可以让它在容器高度变小时时缩小以适应。(我猜这是因为大多数网页是垂直增长的,所以基于高度的限制不太重要。)
我发现,至少在 Chrome 上,video
标签不允许height
是百分比,不幸的是,W3C 规范同意这一点。我已经尝试过使用相对定位的视频包装器,padding-bottom: 56.25%
然后将绝对定位的视频放入其中,但是当容器太宽时,它仍然会切断视频的底部。
这是一个jsfiddle;在那里看到比写起来更容易:https ://jsfiddle.net/darkstarsys/q1fr9jwd/2/
在那里你会看到视频对其容器的宽度做出正确的反应,但视频的底部被切断时高度很小。使用main
元素的高度和宽度来查看它如何对其容器大小作出反应。
如果可能,我想避免使用基于 Javascript 的解决方案;似乎 CSS 应该能够以某种方式做到这一点。
解决方案
我不确定这是否是你想要的,但试试看:
.main {
/*overflow: hidden;*/
/* TRY ASPECT RATIOS HERE
800w x 300h doesn't work -- bottom gets cut off */
width: 800px;
height: 300px;
background: red;
}
.video-wrapper {
display: flex;
height: 100%;
}
.video {
width: 100%;
height: auto; /* spec says no percent allowed here */
}
推荐阅读
- react-native - react-native-view-pdf 在 react-native 应用程序中显示 pdf
- c# - 网格布局更改后检索相同大小的图像
- java - 为什么我得到 Lat Long 0.0?
- reactjs - 如何使用 ReactJS 的 rest api 挂钩刷新
- vb.net - 如何在 vb.net 中捕获指针的新地址
- c# - ' DataRow '对象引用未设置为对象的实例。
- ios - iOS钥匙串错误-26276代表什么?(26276)
- c++ - 应该避免这种从 int 到 double 的静态转换吗?
- javascript - 如何在递归组件 VUE 中隔离状态
- typescript - 如何使用 typescript 接口将 regsiterComponent 传递给 graphql?