【问题标题】:How to delete padding property?如何删除填充属性?
【发布时间】:2022-01-17 13:40:41
【问题描述】:

我们正在使用第 3 方支付网关,它的 CSS 与我们的代码相混淆。它添加了以下属性以将所有列设置为填充 0。

[class*=col-] {
   padding: 0;
}

我应该如何删除这个填充属性?我不想要这个填充属性。

【问题讨论】:

  • 这看起来像是一个设计非常糟糕的支付网关,它能够弄乱您网站上的其他样式:/padding 的问题在于,由于它不能从父级继承,因此使用 padding: unset不会解决你的问题:(
  • 从不 只是使用*=选择器。在您的情况下,*=col- 也可能匹配 "racol-1" "tricol-green" 等元素。

标签: html css flexbox


【解决方案1】:

重置

[class*=col-] {
   padding: initial;
}

确保样式文件链接在第三方文件之后,例如:

<head>
  <link rel="stylesheet" href="third party">
  <link rel="stylesheet" href="style that have padding initial">
  <!--OR-->
  <style>
    [class*=col-] {
      padding: initial;
    }
  </style>
</head>

当多个声明具有相同的特异性时,CSS 中的最后一个声明将应用于元素。 --- Specificity - Mozilla

注意

如果这不起作用,请在这样的样式后写!important

[class*=col-] {
  padding: initial !important;
}

删除

可以使用JS来移除属性:removeProperty()

重新设置

或者只是在任何你想要的地方设置填充,最后添加!important
但是,

important 规则用于样式声明时,此声明将覆盖任何其他声明。虽然技术上!important 与特异性无关,但它直接与之交互。但是,使用!important 是一种不好的做法,应该避免使用,因为它会破坏样式表中的自然级联,从而使调试变得更加困难。当两个具有!important 规则的冲突声明应用于同一元素时,将应用具有更高特异性的声明。

所以不要仅在您编辑外部插件/库时才使用它:

仅在覆盖外部 CSS(来自外部库,如 Bootstrap 或 normalize.css)的页面特定 CSS 上使用 !important。


资源
Specificity - Mozilla

【讨论】:

  • 你从不只是使用*=而且你的答案是容易出错且不正确。如果某些东西开头(如您假定的*="col")而不是使用^="col-",并且作为后备而不是使用*=" col-"带有空格前缀) , 一起:[class^="col-"], [class*=" col-"] { /*styles here*/ }
  • 好吧,我刚刚选择了第 3 方中的选择器选择的任何东西,所以如果 padding: 0; 的选择器不起作用,padding: initial; 的选择器也不起作用,这就是他需要
  • 只是提一下 - 对于 OP 特定情况虽然可能 OK - 但是 - !important 只会导致更严重的问题和糟糕的样式表编码习惯;应不惜一切代价避免。阅读:developer.mozilla.org/en-US/docs/Web/CSS/Specificity.
  • 首先,对于之前删除的答案中发生的事情,我很抱歉,感谢您尝试改进我的问题,并为我感到抱歉,因为我不欣赏它。感谢您在此答案中的提示,它还将帮助我改进我的代码!
  • 你可以检查编辑,我没有完全删除!important,因为它可能是唯一的解决方案,在你提供的链接中“仅在覆盖外国 CSS 的页面特定 CSS 上使用 !important (来自外部库,如 Bootstrap 或 normalize.css)“developer.mozilla.org/en-US/docs/Web/CSS/…
【解决方案2】:

您无法真正删除属性。你只能写一个选择器给它一个不同的值。

将其设置为initial 应该使元素恢复其默认值。

它不会导致它恢复到您应用的早期样式。如果需要,则应通过添加它的选择器的 specificty 覆盖原始分配。

【讨论】:

    【解决方案3】:

    变量

    你可以这样做:

    .my-class[class] /* for specificity */ {
      padding: var(--padding);
    }
    

    然后为每个带有.my-class 类的标签创建一个您选择的--padding

    还是显而易见的

    .my-element[class] {
      padding: [padding]
    }
    

    【讨论】:

    • 就像 Quentin 所说,将其设置为 initial 应该让元素恢复其默认值,但通常您会将其设置为 20px 之类的东西,因为默认值有时会因浏览器而异。跨度>
    【解决方案4】:

    也许您正在寻找 CSS removeProperty()

    CSSStyleDeclaration.removeProperty() 方法接口从 CSS 样式声明对象中删除属性。

    查看更多here

    【讨论】:

      猜你喜欢
      • 2021-11-27
      • 2019-09-03
      • 2020-07-21
      • 2017-11-20
      • 1970-01-01
      • 2017-04-23
      • 1970-01-01
      • 2022-11-15
      • 2021-02-23
      相关资源
      最近更新 更多