#TIL:显示表和内联与容器查询不兼容
学习笔记:容器查询与表格显示模式的冲突
最近在网页组件中遇到一个问题:需要根据屏幕宽度隐藏表格中的某些列。
假设需要隐藏表格的第二列和第三列(包括表头和单元格),CSS代码如下:
:is(th, td):is(:nth-child(2), :nth-child(3)) { display: none; }
我尝试使用容器查询,只在窄屏幕(小于600px)时隐藏这些列:
table { /* 这部分不起作用 */ container-type: inline-size; } /* 窄屏幕下隐藏第二列和第三列 */ :is(td, th):is(:nth-child(2), :nth-child(3)) { @container (width < 600px) { display: none; } }
然而,这段代码并没有生效。原因是容器查询仅兼容特定的 display
值:
<code>- block - inline-block - flex - inline-flex - grid - inline-grid - flow-root</code>
不兼容的 display
值包括:inline
,contents
,none
,以及所有表格相关的 display
值:table
,table-row-group
,table-header-group
,table-footer-group
,table-row
,table-cell
,table-column-group
,table-column
,table-caption
。
解决方法是将容器查询应用于表格的父元素。我的表格位于一个Web组件内,而Web组件默认的 display
值为 inline
。 将组件的 display
属性改为 block
即可解决问题:
:host { container-type: inline-size; display: block; } /* 窄屏幕下隐藏第二列和第三列 */ :is(td,th):is(:nth-child(2),:nth-child(3)) { @container (width < 600px) { display: none; } }
代码中使用了 :host
选择器,因为我的样式在 Shadow DOM 中,容器查询的范围受 Shadow DOM 限制。如果使用 Light DOM,则可以使用组件的带连字符的标签名称。 这种方法不会破坏表格的语义。
以上是#TIL:显示表和内联与容器查询不兼容的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

您是否曾经在项目上需要一个倒计时计时器?对于这样的东西,可以自然访问插件,但实际上更多

在元素个数不固定的情况下如何通过CSS选择第一个指定类名的子元素在处理HTML结构时,常常会遇到元素个数不�...

关于Flex布局中紫色斜线区域的疑问在使用Flex布局时,你可能会遇到一些令人困惑的现象,比如在开发者工具(d...

格子呢是一块图案布,通常与苏格兰有关,尤其是他们时尚的苏格兰语。在Tartanify.com上,我们收集了5,000多个格子呢
