我正在制作一个布局非常简单的页面 - 基本上是一个数据表格,但使用网格布局,这样列的大小会根据内容自动调整。我想要对行进行排序(使用jQuery),所以我需要找到一种方法将同一行中所有单元格包装在容器中。
display: subgrid;
我已经尝试使用子网格,但目前似乎支持不太好。显然,仅嵌套网格是无法在不同网格之间同步列大小的。
你有任何想法吗?
这是目前我的笔记本电脑:https://codepen.io/anon/pen/PEjqgx
我正在制作一个布局非常简单的页面 - 基本上是一个数据表格,但使用网格布局,这样列的大小会根据内容自动调整。我想要对行进行排序(使用jQuery),所以我需要找到一种方法将同一行中所有单元格包装在容器中。
display: subgrid;
我已经尝试使用子网格,但目前似乎支持不太好。显然,仅嵌套网格是无法在不同网格之间同步列大小的。
你有任何想法吗?
这是目前我的笔记本电脑:https://codepen.io/anon/pen/PEjqgx
display: contents
可能是 display: subgrid
的可行解决方法。display: contents
会导致元素的子元素显示为它们直接是父元素的子元素,忽略了元素本身。当使用 CSS grid 或类似的布局技术时,这可以在包装器元素应该被忽略时很有用。
这里的一个重大胜利是我们可以保持当前的标记 - 将每行数据组合在一起 - 同时仍然使每行的组件在一起同步,因为它们是一个 CSS 网格 - 网格容器的一部分。display: contents
。display: contents
来实现期望的结果:#globalWrapper {
display: grid;
grid-template-columns: 1fr 1fr max-content;
grid-gap: 3px;
}
2) 设置rowWrapper div的display: contents
.rowWrapper {
display: contents;
}
display: contents
的支持会比 display: subgrid
更快得到改善……但你永远不知道 :) - Danielddisplay:contents
来模拟CSS子网格是一种hack:hack会增加复杂性,使代码更难维护并容易出现其他错误,并且迟早会停止工作。display:contents
作为子网格的替代品:有很多理由不建议使用它。相反,可以在容器元素中使用另一个网格或Flex布局。
[补充 11/1/2020] Firefox从V71开始支持Subgrid,其他浏览器尚未公布消息。在codrops上有关于该功能的很好解释,你还可以在这里看到一些示例。这是链接查看所有浏览器当前支持情况的can I use页面。
[附录 06/06/2022] 苹果宣布 Safari 16 支持子网格
[附录 05/25/2023] display: contents 被认为是有害的
[附录 08/17/2023] 它越来越近了:Chrome 117 Beta 支持子网格,这是 Rachel Andrews 最新更新的一篇关于 CSS 子网格如何工作 的文章
display:contents
来_模拟_ css 子网格是一种 hack:hack 会增加复杂性——使代码更难维护且容易出现其他错误——而且迟早会停止工作。 - ganar