不要与级联战斗,控制它!
掌握CSS级联:告别混乱,拥抱掌控!本文将探讨如何利用新的CSS特性来掌控级联,从而编写更简洁高效的CSS代码。以往,来自不同来源的样式常常导致级联难以管理,最终产生冗余代码。即使使用ITCSS和BEM等方法,我们仍然会面临级联带来的挑战,例如需要精确控制@import
语句的位置或不得不求助于!important
。幸运的是,一些新的工具已经问世,让我们能够有效地控制级联。
驾驭:where
伪选择器
:where
伪选择器允许我们消除选择器的特殊性,使其优先级仅高于用户代理默认样式,而与CSS加载顺序无关。这意味着选择器的特殊性实际上为零,这对于通用组件非常有用。
例如,使用:where
定义通用的表格样式:
:where(table) { background-color: tan; }
即使在此之前定义了其他表格样式:
table { background-color: hotpink; } :where(table) { background-color: tan; }
表格背景色仍然为tan
,因为:where
消除了选择器的特殊性。这使得:where
非常适合CSS重置。
:where
的兄弟选择器:is
则具有相反的效果:
:is()
伪类的特殊性由其最特殊参数的特殊性决定。因此,使用:is()
编写的选择器并不一定具有与不使用:is()
编写的等效选择器相同的特殊性。——选择器级别4规范
继续之前的例子:
:is(table) { --tbl-bgc: orange; } table { --tbl-bgc: tan; } :where(table) { --tbl-bgc: hotpink; background-color: var(--tbl-bgc); }
表格背景色将为tan
,因为:is
的特殊性与table
相同,而table
位于之后。但是,如果我们将其更改为:
:is(table, .c-tbl) { --tbl-bgc: orange; }
背景色将为orange
,因为:is
的权重与其最特殊的选择器.c-tbl
相同。
示例:可配置的表格组件
让我们构建一个表格组件,HTML如下:
接下来,我们将.c-tbl
包裹在:where
选择器中,并添加圆角:
:where(.c-tbl) { border-collapse: separate; border-spacing: 0; table-layout: auto; width: 99.9%; }
表格单元格使用不同的样式:
:where(.c-tbl thead th) { /* ... */ } :where(.c-tbl tbody td) { /* ... */ }
由于圆角和border-collapse: separate
,我们需要添加额外的样式:
:where(.c-tbl tr td:first-of-type) { /* ... */ } /* ... */
现在,我们可以通过在通用样式之前或之后注入其他样式来创建表格组件的变体(得益于:where
的特殊性消除功能):
.c-tbl--purple th { background-color: hsl(330, 50%, 40%) } /* ... */
CSS自定义属性
我们将使用data-component
属性来定义组件:
以上是不要与级联战斗,控制它!的详细内容。更多信息请关注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)