如何仅将自定义属性应用于元素?



在非常简单的html/css中,我的菜单在<table id="menu">中。菜单没有边框,但是我希望博客中的所有其他表格都有边框。

我让它以这种方式工作:

#menu, #menu th, #menu td {border: none; color: red}
table, th, td {border: 1px solid black;}

然而,这不是很强大。如果我向tables添加其他内容,我可能会忘记在 #menu 中"重置"它。有没有办法强制 #menu 中的所有属性,这样我就不必一一覆盖我要添加到table, th, td {...}的任何内容? 我尝试了:not()选择器,但它也感觉不健壮,我宁愿在#menu {...}行上指定我想要的菜单,而不是其他地方。让我知道这是否有意义,或者我可以重新制定

我想我现在明白了。我正在寻找一种取消设置css类所有值的方法,并遇到了此页面:仅重置/删除元素的CSS样式

它告诉我们,我们可以做这样的事情来实现你想要的:

#menu, #menu th, #menu td {
all: unset;
color: red;
}
table, th, td {
border: 1px solid black;
}

请注意我如何添加all: unset;并删除border: none;

这应该重置具有该 id 的元素的所有样式,但请确保将其他样式放在 all: unset 之后,否则它将取消设置您刚刚编写的样式。希望这有帮助!

也许使用而不是id。

如果您使用类,则可以将 css 规则应用于具有它的所有元素

因此,例如,对于您的桌子,您可以使用

.custum-table

prevoius 类将 css 样式应用于所有元素

最后,如果你想应用另一个css规则,你可以用这种方式向你的元素添加另一个类

另一个 html 文件

.custom-table__no--effect

使用BEM的上一个类 将仅将 css 样式应用于一个元素,例如table元素

最新更新