html - 保持纵横比,同时保持流体容器 100% 的宽度
问题描述
对于以下项目,我想设置如下样式:
parentContainer
- 宽度 100vw 和高度 100vh;所有项目都必须适合容器(即没有滚动条)searchBar
- 在顶部;宽度为 100vw,高度取决于内容bottomContainer
- 占用未消耗的剩余空间searchBar
videoContainer
- 包含一个视频元素和一个标题;两个项目都必须适合整个高度,bottomContainer
但视频元素必须保持16:9
纵横比;所有剩余的宽度应由sidebarContainer
video
- 最初不会提供源,但必须保持纵横比16:9
;sidebarContainer
- 一些随机内容minWidth: 150px
(在较小的屏幕上会消失);将占用 videoContainer 未使用的剩余宽度;
我能够满足大多数要求,但videoContainer
/ video
。如果我修复比率问题,则video
元素太小。如果我修复了video
元素大小,则不会保持纵横比或videoContainer
不适合视口(即通常它会超出极宽屏幕上的高度)。
示例: https ://codesandbox.io/s/video-css-structure-dfc2q?file=/src/App.js
解决方案
如果侧边栏只是智能手机上的问题,则将 css 中的 parentContainer、rowContainer、sidebarContainer 和 videoContainer 更改为下面的 css。
在小屏幕上,左右列将堆叠,这意味着在小屏幕上,视频位于侧边栏的顶部。
/* overflow temporary commented for testing */
.parentContainer {
height: 100%;
/* overflow: hidden; */
}
/* wrap columns if total width > 100% */
.rowContainer {
display: flex;
flex-wrap: wrap;
}
/* small screens */
.sidebarContainer,
.videoContainer {
flex: 0 0 100%;
width: 100%;
}
/* medium and large screens */
@media (min-width: 992px) {
.sidebarContainer {
flex: 0 0 25%;
width: 25%;
}
.videoContainer {
flex: 0 0 75%;
width: 75%;
}
}
推荐阅读
- google-cloud-platform - 为 Google Cloud Storage 中的存储分区设置日志记录
- android - Android studio - 无法从文件 app.iml 加载设置,文件不存在?
- perforce - helix core 将工作区根设置为临时文件夹
- android - 没有将我的数据设置在子位置,因为没有可用的子数组
- android - 当我回到片段时,立即调用观察者
- url - 如何在 Flutter 中启动 URL?
- javascript - 刷新 MongoDB 中的令牌
- elasticsearch - 搜索多个值,但在找到完全匹配时停止搜索
- reactjs - 无法对未安装的组件执行 React 状态更新 - Socket.IO
- java - 如何使用 Google Or-tools 传播域过滤变量?