更新:是的,LESS 可以提供帮助
我讨厌!important
在最极端的情况下使用。大多数人在应该使用手术刀来完成这项工作时,会像使用电锯一样使用它。尽管如此,我了解像您这样的小部件开发人员所面临的问题,并且您选择使用https://github.com/premasagar/cleanslate让您别无选择。
Marc 的回答指出了 LESS 的一个很好的特性,但他未能证明这对这件事有什么帮助。
如果你将整个 LESS 代码包装在一个命名空间的 mixin 中,那么这个特性正是需要的。所以假设你的小部件代码看起来像这样(你提到你已经为你的小部件使用了某种类型的类):
.yourWidgetClass div > p {
prop: something;
&:hover {
prop: some-hover-style;
}
}
.yourWidgetClass .someClass {
prop: something;
}
然后你可以这样做(包装你所有的小部件代码,然后使用Marc 的回答中提到#makeImportant()
的功能调用该 mixin ):!important
#makeImportant() {
.yourWidgetClass div > p {
prop: something;
&:hover {
prop: some-hover-style;
}
}
.yourWidgetClass .someClass {
prop: something;
}
}
& {
#makeImportant() !important;
}
这会产生以下 CSS 输出:
.yourWidgetClass div > p {
prop: something !important;
}
.yourWidgetClass div > p:hover {
prop: some-hover-style !important;
}
.yourWidgetClass .someClass {
prop: something !important;
}
对于我的原始(已接受)答案,手动密集程度更高,请参阅编辑历史记录。