美文网首页
如何在 React 中添加 !important 的行内样式?

如何在 React 中添加 !important 的行内样式?

作者: 越前君 | 来源:发表于2023-02-24 14:06 被阅读0次
配图源自 Freepik

不知道你有没有发现,在 React 中是无法给行内样式添加 !important 权重的。

// not worked
export default function App() {
  return (
    <div className="app" style={{ fontSize: '30px !important' }} >
      React App
    </div>
  )
}

如果非要用,可以用 Callback Refs 处理,比如:

// worked
export default function App() {
  return (
    <div
      className="app"
      ref={el => el && el.style.setProperty('font-size', '30px', 'important')}
    >
      React App
    </div>
  )
}

相关讨论可看:

Support !important for styles? #1881

To be fair, the ref solution doesn’t help for server rendering. Again, if you have a particular API proposal, sending an RFC would be a better place to discuss it. Thank you! commented by dan

为什么 React 不支持呢?

首先,这需求的实现是没有任何技术难度的。但 React 为什么不做呢,个人猜测可能是开发者滥用 !important 处理样式样式优先级。虽说如此,但理应支持,总会遇到「用魔法打败魔法」的场景的。

关于 !important 的一些看法:

当在一个样式声明中使用一个 !important 规则时,此声明将覆盖任何其他声明。虽然,从技术上讲,!important 与优先级无关,但它与最终的结果直接相关。使用 !important 是一个坏习惯,应该尽量避免,因为这破坏了样式表中的固有的级联规则 使得调试找 bug 变得更加困难了。当两条相互冲突的带有 !important 规则的声明被应用到相同的元素上时,拥有更大优先级的声明将会被采用。

一些经验法则:

  • 一定要优先考虑使用样式规则的优先级来解决问题而不是 !important
  • 只有在需要覆盖全站或外部 CSS 的特定页面中使用 !important
  • 永远不要在你的插件中使用 !important
  • 永远不要在全站范围的 CSS 代码中使用 !important
  • 与其使用 !important,你可以:
    1. 更好地利用 CSS 级联属性
    2. 使用更具体的规则。在您选择的元素之前,增加一个或多个其他元素,使选择器变得更加具体,并获得更高的优先级。
    3. 对于(2)的一种特殊情况,当您无其他要指定的内容时,请复制简单的选择器以增加特异性。

以上摘自 MDN

相关文章

  • React组件中的DOM样式

    React组件中的DOM样式 一、行内、class、模块化 二、根据不同的条件添加不同的样式 安装classnam...

  • css选择器优先级

    内联样式:行内样式 style=""外联样式:选择器 !important>行内样式>id(#)选择器>类选择器...

  • 复习js

    web的标准: 结构,样式,行为 样式的层级关系: !important>行内样式>ID>class>Elemen...

  • Css中样式的优先级

    Css中样式的优先级 !important>行内样式>ID选择器>类、伪类、属性>元素、伪元素>继承>通配符 !i...

  • CSS选择器权重

    权重规则概述: !important 优先级最高,但也会被权重高的important所覆盖 行内样式总会覆盖外部样...

  • css的样式优先级

    优先级 !important > 行内样式 > id选择器 > class选择器 > 元素继承的样式 Class选...

  • react行内样式

    react的行内样式本质上是一个对象,比如官方文档的这个 如果打算直接写在标签上的话,更简单,不过就是看着比较多,...

  • react 行内样式

    style={this.state.join_show ? "height:88vh" : ""} this.se...

  • CSS选择器

    !important >行内样式>(#)ID选择器>(.)Class选择器>标签>(* )通配符 >继承 > 浏览...

  • CSS优先级

    总结排序:!important > 行内样式 > ID选择器 > 类选择器 > 标签 > 通配符 > 继承 > ...

网友评论

      本文标题:如何在 React 中添加 !important 的行内样式?

      本文链接:https://www.haomeiwen.com/subject/zqwvhdtx.html