html - Flexbox 根据内容(问题)自动确定容器的大小(宽度)
问题描述
我有一个指向jsFiddle的链接,它会出现问题。基本上,问题出在中间容器(sector2
蓝色容器)中,它在列方向上弯曲并有 5 个 flex 子元素。其中四个元素内部是大小为 150x150 像素的图像。我已经将image-wrapper
(每个子元素的类)赋予了flex: 1
,这意味着蓝色容器应该被分成 5 个等高的部分。现在我设置min-height: 100%
每个图像的高度,这使得图像的高度与一部分(子元素)高度一样多。
当我想保持图像的纵横比并设置object-fit: scale-down
. 此属性使图像保持纵横比,但容器 ( image-wrapper
) 和蓝色容器 ( sector2
) 仍保持 150 像素的原始图像宽度。
我的问题是:如何保持图像纵横比,同时容器应根据内容自动调整大小?
我将在此处另外添加 HTML 和 CSS 代码:
.container {
display: flex;
flex-direction: row;
width: 600px;
height: 500px;
background-color: red;
}
.sector1 {
display: flex;
flex-direction: row;
flex: 1 0 0%;
background-color: green;
}
.sector3 {
display: flex;
flex-direction: row;
flex: 1 0 0%;
background-color: green;
}
.sector2 {
display: flex;
flex-direction: column;
flex: 0 0 auto;
background-color: blue;
margin: 0 6px;
}
.image-wrapper {
display: flex;
flex-direction: column;
flex: 1 0 0%;
min-height: 0;
min-width: 0;
}
.image {
object-fit: scale-down;
min-height: 100%;
width: auto;
}
<div class="container">
<div class="sector1"></div>
<div class="sector2">
<div class="image-wrapper">
<img class="image" src="https://mk0powerpackele6qayu.kinstacdn.com/wp-content/uploads/2018/07/image-75-150x150.jpg" />
</div>
<div class="image-wrapper">
<img class="image" src="https://mk0powerpackele6qayu.kinstacdn.com/wp-content/uploads/2018/07/image-75-150x150.jpg" />
</div>
<div class="image-wrapper"></div>
<div class="image-wrapper">
<img class="image" src="https://mk0powerpackele6qayu.kinstacdn.com/wp-content/uploads/2018/07/image-75-150x150.jpg" />
</div>
<div class="image-wrapper">
<img class="image" src="https://mk0powerpackele6qayu.kinstacdn.com/wp-content/uploads/2018/07/image-75-150x150.jpg" />
</div>
</div>
<div class="sector3"></div>
</div>
解决方案
我改变了.image-wrapper
,flex: 0 0 auto;
我相信它有你想要的效果。检查我是否在这个小提琴中 fork。
您之前.image-wrapper
的flex: 1 0 0%;
意思是元素从 0 宽度开始,然后增长到容器的大小。该确定大小的方法没有考虑内部元素的大小。因此,增长到容器的宽度将在图像周围创建蓝色空间。
将其设置为flex: 0 0 auto
将根据内部元素所需的大小确定宽度,因此为自动。将 flex-grow 设置为 0 将告诉它不要增长到超过所需的大小,并且不会创建蓝色空间。
推荐阅读
- oracle - 如何为存储过程中的选择查询动态传递“列名”和“值”的数量..?
- azure - 使用PowerShell将托管磁盘复制/移动到Azure中的另一个区域
- angular - 当没有数据表单服务时,我需要显示“-”来代替空白单元格,并且如果有数据则必须显示数据
- c++ - 如何使用 Rapidjson 打印或 to_string() 具有未知结构的嵌套 JSON
- node.js - 将 Express Js 启动文件拆分为模块
- ansible - Ansible 无法根据 stdout_lines 列表上的字符串搜索使任务失败
- mysql - 如何导出 Postgresql 数据库,以便在 MySQL 中使用?
- html - WordPress style.css 中的预期 RBRACE 错误
- docker - Docker Compose - getaddrinfo 失败:名称或服务未知
- ruby-on-rails - How to reduce select commands in a Simple one table query. Rails