是否可以根据内容设置比例网格列?

2024-04-10

使用 Flexbox 或 CSS Grid,是否可以根据其中一列的内容来调整我的列的大小?

这就是我想要的:

我有 2 列,一个main and a side.

|------------------------container--------------------------|
|                                                           |
||----------------------------------------|----------------||
||               main                     |      side      ||
||----------------------------------------|----------------||
|                                                           |
|-----------------------------------------------------------|

我想要side根据其内容自动调整大小,我想要main宽度为两倍side, 最低限度。它可以变大,但不能变小。

随着容器的增大,main将以同样的速度增长,而side保持其自动宽度。

|--------------------------container increases----------------------|
|                                                                   |
||------------------------------------------------|----------------||
||                   main increases               |      side      ||
||------------------------------------------------|----------------||
|                                                                   |
|-------------------------------------------------------------------|

容器可以缩小到原来的3倍side,此时main将是两倍宽side。我希望这是断点。

|--------------------container----------------------|
|                                                   |
||--------------------------------|----------------||
||               main             |      side      ||
||--------------------------------|----------------||
|                                                   |
|---------------------------------------------------|

如果容器进一步缩小,我希望将列堆叠起来,其中两列现在都是 100% 宽度:

|--------------------container--------------------|
|                                                 |
||-----------------------------------------------||
||               main                            ||
||-----------------------------------------------||
||-----------------------------------------------||
||                           side                ||
||-----------------------------------------------||
|                                                 |
|-------------------------------------------------|

这是我尝试过的:

我尝试使用 Flexbox 和 Grid 执行此操作,但无法让主列根据侧列确定其大小。

.container-grid {
  display: grid;
  grid-template-columns: 1fr auto; /* works, but doesn’t wrap when left column gets too small */
  /* I also tried the repeat() syntax, but that only worked for similarly-sized columns */
}
.container-flex {
  display: flex;
  flex-wrap: wrap;
}
.main { flex: 2; } .side { flex: 1; } /* same problem, doesn’t wrap */
.main ( flex: 0 1 auto; } .side { flex: 0 0 auto; } /* wraps columns too early, any time main is smaller than intrinsic width */

我尝试过的唯一可行的解​​决方案是知道侧栏的固定宽度(我必须在不知道其内容的情况下预测),然后使用其宽度 3 倍的媒体查询。当然,媒体查询仅适用于窗口宽度,而不适用于容器宽度,因此我必须使用容器的任何父元素来计算媒体查询。

.container-grid {
  display: grid;
  grid-template-columns: 1fr 15em;
}
@media screen and (max-width: 45em) {
  .container-grid {
    grid-template-columns: 1fr;
  }
}

这是一种使用 Flexbox 的解决方案,您可以在其中使用弹性增长价值非常大mainside.

至此,side当包裹时,以及在宽屏幕上时,将填充父级,其值要高得多main, the 弹性增长 on side实际上不会。

结合一个min-width on the main是两倍大小side,它会在变小之前换行,为此我们可以使用百分比,因为它基于父级的宽度。

所以在这种情况下尺寸是两倍main将是父级的 2/3,即 66.666%。

小提琴演示 https://jsfiddle.net/51vr4jqd/1/

堆栈片段

.container-flex {
  display: flex;
  flex-wrap: wrap;
}

.main {
  flex: 10000;
  min-width: 66.666%;
  background: lightblue;
}

.side {
  flex: 1 0 auto;
  background: lightgreen;
}

span {
  display: inline-block;
  padding: 20px;
}
<div class="container-flex">

  <div class="main">
    <span>Fill remain, min. twice the "side"</span>
  </div>

  <div class="side">
    <span>Take content size</span>
  </div>

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

是否可以根据内容设置比例网格列? 的相关文章

随机推荐

  • 无法修改 Dictionary 的返回值,因为它不是变量

    有这样的错误 无法修改 System Collections Generic Dictionary this string 的返回值 因为它不是变量 My code Dictionary
  • Mysql 的 Doctrine 查询

    我想创建一个 Doctrine 查询 Doctrine 2 3 SELECT FROM car WHERE plate like AND datetime BETWEEN 2013 03 13 22 20 18 AND 2013 03 13
  • Ruby 进程之间的共享变量

    我有一个 Ruby 程序 可以加载两个非常大的 yaml 文件 因此我可以通过分叉一些进程来利用多核来提高速度 我尝试过寻找 但我无法弄清楚如何或是否可以在不同的进程中共享变量 以下代码是我目前拥有的 proteins decoyProte
  • 在 Moq 中模拟通用方法而不指定 T

    我有一个接口 其方法如下 public interface IRepo IA
  • Docker Compose 在 v2 中注入链接容器

    在 Docker Compose v1 中 etc hosts文件已使用链接的容器进行更新 例如 cat etc hosts 127 0 0 1 localhost 1 localhost ip6 localhost ip6 loopbac
  • 分布式版本控制系统真的没有集中存储库吗?

    这似乎是一个愚蠢的问题 但是如何在没有服务器可供检出的情况下设置工作目录呢 企业如何保存存储库的安全备份副本 我认为必须有一个中央仓库 但是它到底是如何 分布 的 我一直认为服务器 客户端 SVN 与点对点 GIT 的区别 但我不认为这是正
  • 单元测试 AuthorizationHandler

    我在 NET Core 2 1 中使用了基于资源的授权模式 如下所述 我唯一的问题是我不知道如何测试我的AuthorizationHandler干净地 这里有人已经做过类似的事情了吗 AuthorizationHandler示例 来自上面的
  • Postgresql 错误:必须出现在 GROUP BY 子句中或在聚合函数中使用

    在您将其标记为重复之前 我尝试了同一个网站上给出的几种解决方案 但没有一个起作用 My query SELECT temp fk settlements sku temp fk settlements order item id temp
  • PushManager订阅承诺从不履行也不拒绝

    我目前遇到一些 Chrome Chromium 版本的问题 其中PushManager subscribe来自 ServiceWorker 的承诺保持待处理状态 代码本身非常简单 return serviceWorkerRegistrati
  • Safari 中不显示边框图像

    边框图像未显示在 Safari 或平板电脑和移动设备上 在 FF IE Chrome 和 Opera 中都没有问题 这是 HTML div class col sm 4 ctas div class rooms img src images
  • C#在Excel文件中添加多个超链接的优化方式

    我想问是否有一些实用的方法可以使用 C 在 Excel 工作表中添加多个超链接 我想生成一个网站列表并锚定它们的超链接 以便用户可以单击此类超链接并访问该网站 到目前为止 我已经提供了简单的嵌套 for 语句 该语句循环遍历给定 Excel
  • 如何在 Vaadin Flow 的 FormLayout 中添加空格?

    例如 如果我有 2 列和 2 行的表单 但希望将第一个第一列中的第二列保留为空 如何在不添加空值 空跨度 的情况下执行此操作 field empty field field 现在我正在做 formLayout add new TextFie
  • OAuth 2.0 令牌对于提供商来说永远是唯一的吗?

    当 OAuth 2 0 提供商颁发令牌时 该令牌值对于提供商而言是否永远是唯一的 或者是否有可能在未来的某个时候 大概在令牌过期后 可能会为不同的用户发行具有相同值的另一个令牌 在搜索中 我发现了很多有关令牌过期的信息 但没有关于该令牌值将
  • Cmake 与 bitbake 配方

    我正在尝试用我自己的包构建 yocto 图像 我在 github 上有使用 cmake 的 OpenCV 代码 我试图为其编写一个食谱 但遇到了很多错误 任何人都可以提示我的食谱中应包含哪些功能或参数吗 我的食谱如下 DESCRIPTION
  • Struts2如何在页面之间导航时保​​留表单值?

    我的项目使用的是 struts2 spring3 请帮我解决这个问题 在我的应用程序中 a jsp 与 gt aAction java 相关 从主菜单 用户可以访问a jsp a jsp 中有很多字段 用户需要键入数据 在页面中间 用户需要
  • Cx_Freeze 找不到 pkg_resources/*.*'

    我正在尝试使用 cx Freeze setup py 文件和以下命令构建 EXE python setup py bdist msi 该命令的输出以以下内容结尾 正在从包 pkg resources 复制数据 错误 错误 3 系统 找不到指
  • 活动资​​源响应,如何获取它们

    我有一个活动资源 可以查询数据 它返回记录 计数 无论我要求什么 例如 product Product find 123 响应标头应该包含一个自定义属性 例如 HTTP PRODUCT COUNT 20 我想检查响应 IRB 执行此操作的最
  • InsertMany 在 mongodb 中不起作用

    我对 Mongoose 和 MongoDB 本身相当陌生 我试图保存一堆通过 insertMany 方法插入的文档 但它没有保存文档 这是我的代码 Model var mongoose require mongoose var Schema
  • 使用 IPv6 进行地理定位?

    我正在开发一个 IP 地理定位库 它使用 IPv4 地址的前三个八位字节来确定用户的国家 地区 城市 纬度 经度等 效果非常好 但它不处理 IPv6 地址 我希望它能够处理 有没有办法转换 IPv6 地址以获得 IPv4 地址的前三个八位字
  • 是否可以根据内容设置比例网格列?

    使用 Flexbox 或 CSS Grid 是否可以根据其中一列的内容来调整我的列的大小 这就是我想要的 我有 2 列 一个main and a side container main side