我正在使用一个布局非常简单的页面-基本上是一个数据表,但使用网格布局,以便根据内容大小很好地调整列。我想使行可排序(使用jQuery),所以我需要找到一种方法来将同一行的所有单元格 Package 在一个容器中。
display: subgrid;
我试过使用子网格,但似乎它不是很支持的时刻..显然,仅仅嵌套网格是不起作用的,因为它不会同步不同网格之间的列大小。
有什么办法吗?
以下是我的笔:https://codepen.io/anon/pen/PEjqgx
我正在使用一个布局非常简单的页面-基本上是一个数据表,但使用网格布局,以便根据内容大小很好地调整列。我想使行可排序(使用jQuery),所以我需要找到一种方法来将同一行的所有单元格 Package 在一个容器中。
display: subgrid;
我试过使用子网格,但似乎它不是很支持的时刻..显然,仅仅嵌套网格是不起作用的,因为它不会同步不同网格之间的列大小。
有什么办法吗?
以下是我的笔:https://codepen.io/anon/pen/PEjqgx
2条答案
按热度按时间p4tfgftt1#
根据上下文,
display: contents
可能是display: subgrid
的可行解决方案。来自caniuse:(粗体矿)
display: contents
使元素的子元素看起来好像是元素的父元素的直接子元素,忽略元素本身。当使用CSS grid或类似布局技术时应忽略 Package 器元素时,此功能非常有用。最大的好处是,我们可以保留当前的标记--将每行数据分组在一起--同时保持每行的组件同步在一起,因为它们只是一个CSS网格的一部分--网格容器。
关于浏览器支持:
display: contents
受Chrome、Firefox和iOS 11.4+支持。所以回到OP的示例Codepen,我们可以使用
display: contents
来实现所需的结果:1)将网格容器属性移动到globalWrapper div并
2)使用
display: contents
设置rowWrapper divUpdated Codepen demo
qoefvg9y2#
使用
display:contents
来模拟css子网格是一个技巧:黑客行为增加了复杂性--使代码更难维护并容易出现其他错误--迟早他们会停止工作。注意使用
display:contents
作为子网格的替代:there are good reasons why it should be avoided。在容器元素中使用另一个Grid或Flex。**[Adendum 11/1/2020]**Firefox从V71开始支持Subgrid,其他浏览器尚未发布消息。有一个good explanations about the feature in codrops,你可以see some examples here。这是一个链接,可以看到当前所有浏览器的支持,我可以使用
[Adendum 06/06/2022]Apple announces subgrid support for Safari 16
[Adundum 05/25/2023]display: contents considered harmful