在非常简单的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
元素