如何在 Flexbox 内获取具有外部高度和内部宽度的 div

2023-12-11

Problem

假设我们有一个具有给定宽度和高度的垂直(即 flex-direction:column)Flexbox 容器。 Flexbox 包含 div,每个 div 包含一个图像。

  • 所有 div 和图像都应该以相同的百分比收缩/增长以填充 Flexbox 的高度,这是通过使用 flex-shrink 和/或 flex-grow 来实现的。
  • 所有图像都应该保持其纵横比(即不拉伸),这是通过未设置其 css“宽度”属性来实现的。
  • 每个 div 应该与它内部的图像具有相同的宽度,我希望通过“width: min-content”或“width: max-content”或“width: fit-content”来实现,但是这个不起作用.

第三点如何实现呢?

注意:它似乎可以在 Flexbox 之外工作。

Example

在下面的示例中,当 id 为“imagecontainer”的 div 的高度缩小到低于 flex-basis 时,即使其内容宽度减小,也不会减小其宽度。 然而,在 Flexbox 外部拥有相同的 div 可以在通过高度限制强制其子图像变小时正确地减小其宽度。

如何使 Flexbox 中的“图像容器”div 随图像缩放其宽度(以便第一个示例中的红色 div 与第三个示例中的红色 div 具有相同的大小)?

Image in flex container with limited height
<div style="display: flex; flex-direction: column; border: 1px solid black; height: 110px; width: 200px; align-items: flex-start;">
  <div id="imagecontainer" style="position: relative; flex-shrink: 1; flex-basis: 150px; min-height: 0; box-sizing: border-box; border: 1px solid red; width: min-content;">
    <img src="https://via.placeholder.com/150.png" style="max-height: 150px; height: 100%;" />
  </div>
</div>

Original image<br />
<img src="https://via.placeholder.com/150.png" style="border: 1px solid black;" />

<br />
Image in just a simple div with limited height
<div style="position: relative; height: 110px; border: 1px solid red; width: min-content;">
  <img src="https://via.placeholder.com/150.png" style="max-height: 150px; height: 100%;" />
</div>

Edit:

根据下面的答案之一,这个版本可以解决 Chrome 上的问题,但不适用于 Firefox。与上面的示例相比,使其工作的唯一显着变化是在“imagecontainer”div 上添加“height: 100%”。

Image in flex container with limited height
<div style="display: flex; flex-direction: column; border: 1px solid black; height: 110px; width: 200px; align-items: flex-start;">
  <div id="imagecontainer" style="position: relative; flex-shrink: 1; flex-basis: 120px; min-height: 0; box-sizing: border-box; border: 1px solid red; width: min-content; height: 100%;">
    <img src="https://via.placeholder.com/120.png" style="max-height: 120px; height: 100%;" />
  </div>
  <div id="imagecontainer" style="position: relative; flex-shrink: 1; flex-basis: 150px; min-height: 0; box-sizing: border-box; border: 1px solid red; width: fit-content; height: 100%;">
    <img src="https://via.placeholder.com/150.png" style="max-height: 150px; height: 100%;" />
  </div>
</div>

Original image<br />
<img src="https://via.placeholder.com/150.png" style="border: 1px solid black;" />

<br />
Image in just a simple div with limited height
<div style="position: relative; height: 110px; border: 1px solid red; width: min-content;">
  <img src="https://via.placeholder.com/150.png" style="max-height: 150px; height: 100%;" />
</div>

编辑解决方案:

根据接受的答案,上面示例的解决方案是这样的(根据否则为柔性基础的值计算高度百分比):

Image in flex container with limited height
<div style="border: 1px solid black; height: 110px; width: 200px;">
  <div id="imagecontainer" style="box-sizing: border-box; border: 1px solid red;height: calc(100% / (270 / 120)); width: max-content;">
    <img src="https://via.placeholder.com/120.png" style="height: 100%;" />
  </div>
  <div id="imagecontainer" style="box-sizing: border-box; border: 1px solid red;height: calc(100% / (270 / 150)); width: max-content;">
    <img src="https://via.placeholder.com/150.png" style="height: 100%;" />
  </div>
</div>

请注意,这不再需要 Flexbox。


如果你设置max-height: calc(100% / (total height / own height)) and height: 100% for #imagecontainer它也适用于 Firefox。相关答案

Image in flex container with limited height
<div style="display: flex; flex-direction: column; border: 1px solid black; height: 110px; width: 200px; align-items: flex-start; ">
  <div id="imagecontainer" style="position: relative; flex-shrink: 1; flex-basis: 120px; min-height: 0; box-sizing: border-box; border: 1px solid red; width: min-content; max-height: calc(100% / (270 / 120));height: 100%;">
    <img src="https://via.placeholder.com/120.png" style=" height: 100%;" />
  </div>
  <div id="imagecontainer" style="position: relative; flex-shrink: 1; flex-basis: 150px; min-height: 0; box-sizing: border-box; border: 1px solid red; width: fit-content; max-height: calc(100% / (270 / 150));height: 100%;">
    <img src="https://via.placeholder.com/150.png" style=" height: 100%;" />
  </div>
</div>

Original image<br />
<img src="https://via.placeholder.com/150.png" style="border: 1px solid black;" />

<br />
Image in just a simple div with limited height
<div style="position: relative; height: 110px; border: 1px solid red; width: min-content;">
  <img src="https://via.placeholder.com/150.png" style="max-height: 150px; height: 100%;" />
</div>

如果flex容器中有3个元素:

Image in flex container with limited height
<div style="display: flex; flex-direction: column; border: 1px solid black; height: 110px; width: 200px; align-items: flex-start;">
  <div id="imagecontainer" style="position: relative; flex-shrink: 1; flex-basis: 120px; min-height: 0; box-sizing: border-box; border: 1px solid red; width: min-content; max-height: calc(100% / (420 / 120)); height: 100%;">
    <img src="https://via.placeholder.com/120.png" style=" height: 100%;" />
  </div>
  <div id="imagecontainer" style="position: relative; flex-shrink: 1; flex-basis: 150px; min-height: 0; box-sizing: border-box; border: 1px solid red; width: min-content; max-height: calc(100% / (420 / 150));height: 100%;">
    <img src="https://via.placeholder.com/150.png" style=" height: 100%;" />
  </div>
   <div id="imagecontainer" style="position: relative; flex-shrink: 1; flex-basis: 150px; min-height: 0; box-sizing: border-box; border: 1px solid red; width: min-content; max-height: calc(100% / (420 / 150));height: 100%;">
    <img src="https://via.placeholder.com/150.png" style=" height: 100%;" />
  </div>
</div>

Original image<br />
<img src="https://via.placeholder.com/150.png" style="border: 1px solid black;" />

<br />
Image in just a simple div with limited height
<div style="position: relative; height: 110px; border: 1px solid red; width: min-content;">
  <img src="https://via.placeholder.com/150.png" style="max-height: 150px; height: 100%;" />
</div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Flexbox 内获取具有外部高度和内部宽度的 div 的相关文章

  • 隔离必需的字段验证器?

    我在页面上有两个搜索按钮 一个链接到下拉列表 另一个链接到带有文本框的下拉列表以获取更多搜索条件 我在所有上述控件上都需要现场验证器 当我从第一个下拉列表中选择某些内容并单击相应的搜索按钮时 文本框的字段验证器会触发 从而禁用第一个搜索按钮
  • 没有宽度/高度的 SVG 以自然尺寸渲染

    我有这个 SVG 但没有width or height属性 我有以下 HTML div class block img src https s3 eu vAmfIxVv kiwi svg div 使用以下CSS block display
  • 哪些浏览器支持 HTML5 WebSocket API?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我将开发一个在浏览器中运行的即时消息应用程序 哪些浏览器支持WebSocket API
  • CSS 中“!important”的反义词是什么?

    我正在构建一个 jQuery 插件 它使用 CSS 样式向嵌套 DIV 标签添加颜色和边距 由于我宁愿将插件保留为单个文件 因此我的代码使用 jQuery 将这些颜色和边距作为 CSS 属性直接添加到 DIV 中 css 方法 这些属性的值
  • htmlspecialchars() 期望参数 1 为字符串,Laravel 中给出的数组

    我的程序中出现了这个错误Laravel刀片模板 htmlspecialchars 期望参数 1 为字符串 给定数组 我尝试将数组转换为刀片模板中的字符串 这是代码 Where silderImageDataArray是这里存储的变量和值 这
  • iOS 10.3 safari text-align:调整波斯语/阿拉伯语内容的错误

    在更新到 10 3 之前 我的网站在 iPhone 的所有移动浏览器上都能正常运行和查看 从我将 iOS 更新到 10 3 后 我的内容页面遇到了一个问题 内容被包装在 div CSS 属性为text align justify 我的内容在
  • 避免 Django 中表单输入元素 ID 重复

    当一页上的两个表单具有相同名称的字段时 Django 将生成无效的 HTML
  • 图像在 IE8 中不显示

    在我的网站上 http appliedcodingtech com site factory automation photos http appliedcodingtech com site factory automation phot
  • 如何将身份验证详细信息传递给 iframe 内的应用程序?

    我有一个网页 想在其中显示詹金斯的网页 因此使用iframe like But http xxx xxx xx xx 8080 view Nightly 20Builds 20 打开登录页面 因此无法直接显示内容 其实我想在没有登录的情况下
  • CSS/XHTML 菜单 - 在所有浏览器中工作 - IE6 帮助

    我发现这个菜单正是我想要的 它适用于所有现代浏览器和 IE 7 8 我需要找到一个修复程序才能在 IE6 中工作 任何帮助将不胜感激 http lab returnwt net htmlcss tabmenu http lab return
  • svg路径指针事件-点击检测

    我正在编写一些 HTML 以便可以使用 HTML SVG 和 PATH 标签绘制贝塞尔曲线 我的曲线效果非常好 现在我想添加一项功能 如果用户将鼠标悬停在曲线上 我会更改颜色 但实际情况是 SVG 创建了一个包含路径的大框 并捕获所有点击
  • 将 HTML 编辑器的内容保存为桌面上的 HTML 文件

    我想通过单击按钮来保存 TinyMce HTML 编辑器的内容 TinyMce 是本地安装的 我在 Chrome 中使用它 我见过这个answer https stackoverflow com a 30740104 3154274然后on
  • SVG 沿圆弧添加文本

    我正在尝试绘制 SVG 径向饼图 如下所述 色卡 https stackoverflow com a 18210763 1395178 现在我尝试将文本与圆弧一起添加到每个切片 我试图展示Text 1具有与 M 和 A 值完全相同的 x y
  • 从动态服务器中抓取 html 列表数据

    哈喽大家好 抱歉提出转储问题 这是我最后的手段 我发誓我尝试了无数其他 Stackoverflow 问题 不同的框架等 但这些似乎没有帮助 我有以下问题 一个网站显示一个数据列表 前面有大量的 div li span 等标签 它是一个很大的
  • 在CSS中重置Margins/Padding时使用*是错误的吗?

    应该避免以下内容 还是应该因其简单性而受到赞扬 作为记录 我在我构建的每个站点中都使用它 但我注意到它并不存在于许多主流 CSS 重置框架中 他们是否也不使用它 margin 0 padding 0 最好不要使用它 因为它会导致表单元素出现
  • 是否可以使 Font Awesome 图标大于“fa-5x”?

    我正在使用这个 HTML 代码 div class col lg 4 div class panel div class panel heading div class row div class col xs 3 i class fa f
  • 将 SVG 元素放置在图像上

    是否可以拥有以下元素并设置它们的样式 以便 SVG 对象出现在图像上 即像图像的一部分 目前它们显示在其下方的新行中 我知道我可以将图像设置为父 div 的背景图像 但不幸的是我还需要能够在父级内旋转它 所以我认为这不是一个选项 div s
  • 如何使用FileSystem API的window.requestFileSystem?

    我用 JavaScript 编写了以下代码 JavaScript 代码 var fs null function initFS window requestFileSystem window requestFileSystem window
  • Mailto 链接在 Chrome 中不起作用,但在 Firefox 中有效?

    似乎是mailto我们在网站中嵌入的链接在 Chrome 中无法执行任何操作 但它们在 Firefox 中可以工作 简单的例子在这里 http jsfiddle net wAPNH http jsfiddle net wAPNH a hre
  • HTML 和 CSS 的基本编码标准 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想知道它们是否是像 PSR 01 这样的 HTML 和 CSS 基本编码标准 我尝试谷歌搜索和搜索 但没有找到 我建议看看类似的东西

随机推荐

  • WKWebView:是否可以预加载多个URL?

    刚刚将应用程序迁移到WKWebView想知道是否有任何可能的方法来 预加载 多个 URL 但一次只显示一个 我有 5 个 URL 的列表 我已经知道我会在某个时间点显示 并且我想通过预加载这些内容以在单个时间点中使用来加快体验速度WKWeb
  • Scala Futures:每个新创建或映射的异常的默认错误处理程序

    是否有可能始终使用默认的 onFailure 处理程序创建 Future 块 例如将堆栈跟踪写入控制台 该处理程序还应该自动附加到映射的 future 通过在已经具有默认故障处理程序的 future 上调用映射创建的新 future 另请参
  • 为什么我不能使用 Start-Process 来调用带参数的脚本?

    我正在尝试在 Powershell 中编写一个包装器脚本 该脚本传递可执行文件的名称 进行一些预处理 然后使用该预处理产生的参数调用该可执行文件 我希望可执行文件是可以在 Windows 上运行 打开的任何内容 所以我想使用Start Pr
  • 自引用多对多递归关系代码优先实体框架

    我似乎根本无法完成这项工作 class Member public virtual IList
  • 使用jQuery在IE10中动态提交文件上传表单

    我有一个表单 其唯一目的是上传文件 但出于用户体验的原因 我需要一个漂亮的按钮 加载文件对话框 选择文件后自动提交表单 原来的解决方案是这样的这个 JSFiddle 其中有一个加载文件对话框的链接 然后监听该对话框的change自动提交表单
  • 将 SDL 嵌入 GTK+

    我有一个使用 GTK 来显示一些漂亮的 GUI 的应用程序 但我使用 SDL 在 GTK 内显示一个小的 RGB 帧缓冲区 我使用以下代码将 SDL 引入 GTK char SDL windowhack 32 sprintf SDL win
  • Android使用路径中的空间和通用图像加载器加载本地图像

    我正在开发 Android 应用程序 我想在通用图像加载器的帮助下显示本地图像 但是 当我尝试显示本地图像路径中有空间的图像时 它无法显示图像 我按照以下方式尝试过 Uri fromFile new File newImagePath to
  • OWL:如何从超类中继承两个类之间的属性关系?

    假设我们有两个名为People and Disease 这些类通过对象属性相关has People has Disease People有子类 或个人 John and Disease有子类 或个人 Cancer John a People
  • 如何在Android中应用多个查询来过滤firebase数据结果?

    我想在回收者视图中显示城市 瓦拉纳西 性别 男 且工资在 5000 到 15000 之间的所有工人姓名 在这种情况下 必须显示所显示的工作人员的姓名 必须应用什么查询以及如何实现 首先 我认为你需要用双值保存工资 而不是字符串 您需要在工作
  • 用字符串+整数组成变量名并调用函数

    首先 我对这些很陌生 这个问题可能很愚蠢 无论如何 我有一个这样的程序 procedure Tform1 QueryChange sqltext String query Integer begin if query 1 then begi
  • 如何在 CQL 3 准备好的语句中绑定 IN 子句值?

    我有一张大致类似于 create table mytable id uuid something text primary key id 我正在尝试创建一个具有绑定子句的准备好的语句 PreparedStatement ps session
  • 如何使用 TCPDF 制作包含 2D 条形码的 2x6 标签,而不使用列或第 3 方类?

    三周以来 我想我就是这么慢 我尝试使用 TCPDF 自己的示例以及在该网站上找到的一些建议来弄清楚如何使用数据库记录来做到这一点 当其他人询问如何使用第 3 方补丁 类 来使事情顺利进行时 Asuni 先生回应了一些帮助请求 只是它可以在没
  • 如何在rails中使用jsonb

    我有一个以 Postgresql 9 4 作为后端的 Rails 项目 我有这样的专栏 t json slot details null false default 如何将其从 JSON 更改为 JSONB 我应该添加索引并将其更改为 JS
  • 如何使用 mysql udf json_extract 0.4.0 从 json 数组中提取行?

    我有一些 sql 想要传递到 mysql 存储过程中 我正在使用 mysql json udfs 0 4 0 labs json udfs linux glibc2 5 x86 64 中的 json 函数 我们正在运行 mysql 5 5
  • 对空数组使用 $push

    我有一个 mongo 文档 其中包含名为 events 的数组字段 该字段有时可能为空 我在用着 push将元素添加到 事件 数组中 问题是 当 events 字段为空时它无法工作 例如 如果在数据库中它看起来像这样 id ObjectId
  • 如何修剪字符串中的空格? [复制]

    这个问题在这里已经有答案了 我正在为 J2ME 应用程序编写此函数 因此我没有一些可用的更高级 现代的 Java 类 我正进入 状态java lang ArrayIndexOutOfBoundsException关于这一点 所以 显然它不喜
  • ASP javascript radiobutton启用禁用不包含在回发ajax中

    问题就在这里 我有一个单选按钮组 两个单选按钮 这些人最初都是残疾的 当用户单击复选框时 我通过设置动态启用 JavaScript 中的单选按钮rbtn disabled false 并对其父级 span 元素 执行相同操作 以便它在 IE
  • div 内的 JQuery .load()

    这让我抓狂 我搜索并尝试了一堆看起来应该有效的建议 所以我一定是做了一些愚蠢的事情 document ready function trigger click function var link this attr href target
  • R数据框字符串包含:第1列是否包含第2列?

    我有一个包含两列的数据框 Surname Email 1 house email protected 2 wilson email protected 我想创建一个逻辑向量来检查是否Surname包含在Email 因此结果应该是 Surna
  • 如何在 Flexbox 内获取具有外部高度和内部宽度的 div

    Problem 假设我们有一个具有给定宽度和高度的垂直 即 flex direction column Flexbox 容器 Flexbox 包含 div 每个 div 包含一个图像 所有 div 和图像都应该以相同的百分比收缩 增长以填充