【问题标题】:CSS without using !important and follow DRY principalCSS 不使用 !important 并遵循 DRY 原则
【发布时间】:2020-09-11 09:56:57
【问题描述】:

我不喜欢在 CSS 上使用 !important。但不幸的是,我有一种情况,我不能忽视它。你知道如何克服这种情况吗?

例如我需要在多个 Ionic 页面上使用它。

.font-bold {
    font-weight: bold;
}

如果我将在每一页上都使用它,那么我不需要!important。但上述代码违反了 DRY 原则。

要遵循 DRY,我可以这样做:

global.scss

 .font-bold {
        font-weight: bold !important;
    } 

那么我如何在 Ionic 5 应用上不使用 !important 的情况下关注 DRY?

【问题讨论】:

  • 也许让 css 规则更具体。没有 !important 的优先级是什么?
  • @David 那么它与 UI 布局紧密结合不是吗?我想像实用方法一样使用上面的代码。
  • 可能是这样的.font-bold:not(#random) { font-weight: bold; }?使用 ID 选择器增加特异性
  • 然后将您的规则添加到另一个 scss 文件中并将其导入您的组件中?但是我想知道如果您不使用 !important... 会发生什么优先级?
  • 是的,它们都使用 !important .. 而且你不需要添加 ID,我使用了 not() 的技巧来增加选择器的特异性,试试看。跨度>

标签: css angular ionic-framework sass ionic5


【解决方案1】:

!important1 的使用并没有错,但是你总是可以尝试增加选择器的特异性以使其永远获胜。

一个想法是考虑与:not() 选择器结合的具有最高特异性的ID。只需确保使用永远不会使用的随机 ID:

.font-bold:not(#randomID) {
  font-weight: bold;
}

.box p {
  font-weight: 200;
}
<div class="box">
  <p>some text here</p>

</div>

<div class="box">
  <p class="font-bold">some text here</p>
</div>

更多细节在这里:Which CSS pseudo-classes don't have specificity?


1:Boostrap 使用大约 1000 个 !important (https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css)

Stack Overflow 也使用了大约 2970 个 !important (https://stackoverflow.com/Content/Shared/stacks.css)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    • 1970-01-01
    • 2014-10-11
    • 1970-01-01
    相关资源
    最近更新 更多