CSS:保持给定高度的元素的纵横比

2023-12-24

上面可能重复的链接不是这种情况的解决方案,因为高度对于多个断点来说将是固定值。

我有一些 DIVdisplay:inline-block,所以它们并排漂浮得很好。这些 DIV 都具有相同的高度,例如height:300px。稍后,我将使用 Ajax 在每个 DIV 中加载图像,并且我希望 DIV 保持图像的宽高比,这样当图像实际加载时它们就不会到处摆动。

因此,当 DIV 在浏览器中显示时,图像还没有出现,因此固定图像的高度height:auto;行不通的。

示例代码:

<div class="wrapper">
    <div class="item">...</div>
    <div class="item">...</div>
    <!-- More items here -->
</div>

CSS:

.item {
    display:inline-block;
    vertical-align:top;
    height: 300px;
    width: /* depending on the image ratio */
}

现在我知道如何保持给定宽度的元素的纵横比 (see here http://www.mademyday.de/css-height-equals-width-with-pure-css.html or here http://wellcaffeinated.net/articles/2012/12/10/very-simple-css-only-proportional-resizing-of-elements/)。但是由于我的 DIV 应该具有相同的高度,我如何保持纵横比并仅更改宽度?

一种(不太好的)解决方案是插入空白图像并将该图像调整为正确的尺寸。

问题是:当调整窗口大小时,所有DIV的高度都会改变,所以仅仅计算宽度是不够的。我可以用 Javascript 重新计算宽度,但我更喜欢纯 CSS 版本(如果可能的话)。

所以这是我的问题:如何仅通过 CSS 保持给定高度的元素的纵横比?

Thanks


您有纵横比,但没有实际的图像尺寸。我think你可以使用calc https://developer.mozilla.org/en-US/docs/Web/CSS/calc为此功能。但浏览器支持是一个问题:

/* Note: using 30px height for demonstration */
 .item {
    display: inline-block;
    vertical-align: top;
    height: 30px;
    background: #FC0;
}
.ratio-3-2 .item {
    /* 3:2 = 1.5 */
    width: calc(30px * 1.5);
}
.ratio-4-3 .item {
    /* 4:3 = 1.3333 */
    width: calc(30px * 1.3333);
}
<div class="wrapper ratio-3-2">
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
</div>
<div class="wrapper ratio-4-3">
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
</div>

在上面的演示中,第一组 div 的宽度为 45px,第二组的宽度为 40px。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CSS:保持给定高度的元素的纵横比 的相关文章

随机推荐

  • 如何在 apollo graphql 服务器中创建嵌套解析器

    给定以下 apollo 服务器 graphql 架构 我想将它们分解为单独的模块 因此我不希望在根查询模式下进行作者查询 并希望将其分开 所以我在将其添加到根查询之前添加了另一个名为authorQueries的层 type Author i
  • 为什么屏幕截图不起作用(黑屏)?

    服务是 允许服务与桌面交互 unit Unit1 interface uses Windows Messages SysUtils Classes Graphics Controls SvcMgr Dialogs type TCopyDes
  • wget 转义特殊字符

    我正在尝试使用 wget 下载该网页的内容 https bibliotheque numerique paris fr search aspx SC DEFAULT Search query ForceSearch f Page 0 Pag
  • 生成复合饼图或饼图饼图

    下面是一个复合饼图的示例 也称为使用 Excel 绘制的饼图 是否可以使用 python 创建这样的图形 是的 这可以通过 matplotlib 实现 下面是改编自的示例here https matplotlib org 3 1 1 gal
  • Sparkfun Edge 引导加载程序问题

    今天终于到了 Sparkfun 板边板 遵循这个写得很好的指南 https codelabs developers google com codelabs sparkfun tensorflow 3 https codelabs devel
  • Sitecore索引重建实践

    在我们的 Sitecore 项目 6 6 0 rev 130404 中 我们拥有超过 200 万个 Sitecore 项目 我们配置了多个 Lucene 索引 每个索引对应这些项目的子集 我们面临的问题是重新构建这些索引所需的时间 特别是对
  • 将图像保存到文件目录

    我正在尝试使用文件目录保存图像 但我无法在没有错误的情况下保存图像 没有这样的文件夹 这是我的代码 我不确定我哪里出错了 Write image to directory func writeImageToPath path String
  • 当没有根标签时使用 lxml 解析 html

    我一直在使用lxml 和formalchemy 为sqlalchemy 构建一个脚手架库 但我很难让它们很好地发挥作用 具体来说 formalchemy FieldSet render 返回没有根标签的 html 片段 我似乎无法弄清楚如何
  • 在Python中生成随机文件名的最佳方法

    在Python中 生成一些随机文本以添加到我保存到服务器的文件 名称 之前的好方法或最佳方法是什么 只是为了确保它不会被覆盖 谢谢你 你可以使用UUID模块 http docs python org library uuid html用于生
  • VSTS - 持续交付 - 发布触发器不适用于标签

    更新2017 02 28 发布触发器中的标签不是源代码控制标签 它们是可以由构建步骤生成的标签 您可以自动标记您的构建 见下文 或在构建过程中手动标记 我还没有尝试过 我对标签的假设是flawed 这使得这个问题几乎无效 不过 我将尝试看看
  • 有没有办法在 Chrome DevTools 中更改时区?

    我用 JavaScript 创建了一个工具 用于确定当前 UTC 时间并检查另一个预定日期是否已经过去 我想将浏览器更改为另一个时区 看看测试是否仍然通过 但我无法找到执行此操作的方法 有没有办法在 Chrome DevTools 中做到这
  • SQL 强制显示十进制值

    我正在使用 Firebird 数据库并尝试以下 sql 但每次它返回 0 而不是 0 61538 等 SELECT COUNT myfield 26 totalcount FROM mytable 现在 当我删除 26 时 总计数将返回 1
  • 有没有办法增加代码本身的Java堆空间? [复制]

    这个问题在这里已经有答案了 可能的重复 是否可以动态更改最大 java 堆大小 https stackoverflow com questions 1091566 is it possible to dynamically change m
  • 在 R 传单中标记鼠标单击事件以获得闪亮效果

    如何在 R 中的传单地图中的标记上接收鼠标单击事件 我正在使用 RStudio 传单并运行 Shiny 我想获取标记的值 例如 ID 并使用它来更新侧边栏面板 你想使用input MAPID marker click 请参阅下面的示例 li
  • C# 中的类型初始化异常

    我将根据教程创建一个学生信息系统 一旦用户想要将新学生添加到数据库中 就会发生以下异常 我尝试了解一些有关 TypeInitializationException 的知识 并且我通过它的名称了解了一些 但我无法完全理解它 此外 我正在遵循的
  • MySQL 备份:我可以将单个 MyISAM 表文件复制到另一台具有不同 MySQL 版本和不同操作系统的服务器吗?

    我的意思是复制单个 MyISAM 表文件是 关闭 mysqld 并将 frm myd 和 myi 文件从一个数据库文件夹复制到另一个数据库文件夹 问题 a 我可以使用这种方式将MySQL数据库文件夹从一台服务器备份到另一台具有不同MySQL
  • 在 Web 开发中 - 哪些 ASP.net 可以做而 PHP 不能做? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何调整 PDF 上的页边距,我需要将 PDF 设置为适合页面

    我的基本脚本运行良好 它完全按照我想要的方式做 它获取 Google Sheet 将其转换为 PDF 然后通过电子邮件将 PDF 发送给我 我的问题是 如何调整 PDF 的页边距 我需要设置 PDF 以适合页面 我不能只调整纸张大小 因为它
  • TeamCity - FTP 上传到 Azure 失败

    我正在尝试使用 TeamCity 构建将 Net Core 2 0 项目部署到 Azure Web 应用程序 有 3 个步骤 1 Nuget 恢复2 点网发布3 FTP 上传 第 2 步之后 我会得到一个文件夹 Output 其中包含我需要
  • CSS:保持给定高度的元素的纵横比

    上面可能重复的链接不是这种情况的解决方案 因为高度对于多个断点来说将是固定值 我有一些 DIVdisplay inline block 所以它们并排漂浮得很好 这些 DIV 都具有相同的高度 例如height 300px 稍后 我将使用 A