幽默:使用CSS中!important的原因只有一个


CSS的语法!important很容易被误用。来自CSS 联合设计师Steven Pemberton认为:
添加 !important 仅出于一个原因:法律要求某些文本采用指定的字体大小。
!important 阻止CSS级联改变它。
其他任何事情都可能是误用,并且表明您可能无法正确理解CSS级联。
 
这是!important message to us all.
 
其他HN网友意见:
内联样式(用于更快的初始页面加载)有时需要通过 !important 覆盖(在页面加载后)。
 
我喜欢 Svelte 的部分原因是它通过将 CSS 划分为我正在处理的 UI 组件来解决问题。感觉很自然,如果我在一个组件的文件中编写 CSS,它通常不应该被其他组件看到。
即使没有 Svelte,如果您执行以下操作,人们在使用 CSS 时遇到的大多数问题都会消失:

  • - 避免级联(即没有嵌套选择器,除非“没有其他方法”)
  • - 为样式和页面/组件布局实现单独的选择器(关注点分离)
  • - 使用良好的命名约定并坚持下去

 
在编写代码的漫长职业生涯中,我觉得我已经非常擅长编写干净、可维护、易读、可更改的代码。尤其是我最有经验的语言。
我觉得我不知道如何编写可维护、易读、可更改的 CSS。就像,这不仅仅是因为我没有时间——我只是不知道该怎么做,尽管我付出了所有努力,但 CSS 总是变得可怕。
 
作为一个喜欢编写 CSS 并认为自己相当擅长它的人,我得出的结论是编写 CSS 是一种反模式,如果您希望团队快速构建具有可维护的“前端样式”的界面层”,它应该阻止编写 css 的能力。
 
对,这种说法的缺陷。> 其他的都可能是误用,也说明你可能没有正确理解级联。
是它假定改变 "整个级联 "的成本是最小的。而且很容易设计出一个最初的级联,它可以完美地满足你的需要,而不需要随着设计的发展进行任何改变。换句话说,它假设了经典的瀑布法,即一旦 "实施 "阶段开始,规格和设计就已经完成,而且永远不会改变。
建议是:CSS并没有什么问题,只是开发者在开始编码之前不能想出一个完美的CSS设计。
在我看来,CSS的一个大问题正是它的级联性质。据我所知,目前还没有一个好的工具可以告诉你,由于某条CSS规则的改变,所有的东西都会改变。我们认为开发者的大脑中应该有这样一个工具,如果你没有,你就不是一个合格的开发者。)
 
我最终经常使用 !important 的一个地方是为网站编写用户样式/扩展。显然不是一个常见的用例,但我很高兴 CSS 有 `!important`。
如果您明确地尝试覆盖另一个您无法控制的规则,则`!important` 比其他规则更惯用。