更新: はい、LESS が役立ちます
!important
極端な場合を除いて、私は使うのが嫌いです。ほとんどの人は、頭皮を使って仕事をする必要があるときに、チェーンソーのように使用します. それにもかかわらず、私はあなたのようなウィジェット開発者が直面している問題を理解しています。
Marc の回答は、LESS の優れた機能を指摘していましたが、それがこの問題にどのように役立つかを示すことができませんでした。
LESS コード全体を名前空間付き mixin でラップすると、この機能はまさに必要なことを行います。したがって、ウィジェット コードが次のようになっていると仮定します (ウィジェットに何らかのタイプのクラスを既に使用していると述べました)。
.yourWidgetClass div > p {
prop: something;
&:hover {
prop: some-hover-style;
}
}
.yourWidgetClass .someClass {
prop: something;
}
次に、これを行うことができます(すべてのウィジェットコードをラップしてから、マークの回答に記載されている機能#makeImportant()
を使用してそのミックスインを呼び出します):!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;
}
手動でより集中的な私の元の(受け入れられた)回答については、編集履歴を参照してください。