CSS重置的矛盾:20年技术实践的反思与挑战

本文深入探讨CSS重置技术的历史背景、前提假设与现实矛盾,分析开发者盲目使用重置带来的便利性与后果,并提出选择性使用重置的解决方案,帮助前端开发者做出更明智的技术决策。

CSS重置的矛盾

我们的领域(Web和前端开发)使用重置(为简单起见,这里包括“重启”和“规范化”)已有大约20年。我说“大约”是因为似乎Tantek Çelik在2004年开始了这一切(你也会在那里找到我),但其他作者可能更早使用了类似技术。

前提

CSS重置基于三个前提:

  1. 用户代理呈现网页的方式存在差异,即它们的默认样式各不相同。
  2. 这些差异对给定网站有影响。
  3. 处理这些差异很重要。

应该显而易见的是,如果(或一旦)所有用户代理都以相同方式处理CSS,就不需要CSS重置。 同样明显的是,如果差异不适用,也不需要CSS重置。例如,在无表单的网站上,表单样式差异无关紧要。 而且——许多争论不必要地爆发于此——这也意味着如果差异被认为不够重要,也不需要CSS重置。 我相信,我们在过去20年看到的是,并非所有作者都关注用户代理之间的样式差异是否影响他们,以及这些差异是否真的重要。 但是,还有其他问题。

现实

对于CSS重置用户来说,现实是他们感到需要使用CSS重置。可能(也很可能)有些CSS重置用户没有这种感觉,他们要么因为必须使用而使用CSS重置,要么因为使用它们感到更安全。然而,实际上,使用CSS重置也是他们现实的一部分。 CSS重置用户忽略的是还有另一个现实,即不使用CSS重置的开发者和网站所有者。 这可以通过前面概述的前提来解释,但有两个原因使其有趣。

  1. 在CSS重置的背景下,几乎从未讨论过那些不使用CSS重置且运行良好的网站和应用程序。
  2. 当我们采取总是需要和从不需要CSS重置的极端立场(我们在实践中观察到的立场)时,我们最终会陷入矛盾。P & ¬P。*

虽然前提允许调和矛盾,但问题依然存在:在我们关于CSS重置的讨论中,似乎没有人承认有些网站在没有重置的情况下工作——这从根本上挑战并矛盾于CSS“原教旨主义”认为它们总是需要的观念。这既不真实,也无帮助。 然而,这就是全部吗?不:

便利性

CSS重置已成为一种商品形式。它们有很多(搜索显示的种类比我能找到的最佳收藏更多),并且它们被内置到一些HTML/CSS甚至JS框架中。 这使得开发者容易忘记前提,并假设普遍需要CSS重置。 因此,我们很久以前就可以观察到,人们停止质疑他们对重置的使用,即使它们可能没有效果。†

后果

类似于传输无效和幻想HTML的影响,所有这些都在蚕食前端开发的工艺。 我们有什么选择? 首先,我们需要清楚CSS重置背后的前提,并将前提纳入我们的讨论。这将使讨论中减少热度,同时做出更好的决策。 其次,我们需要进行现实检查。有许多网站和应用程序不使用CSS重置,并且在所有用户代理中完全正常运行。这是我们现实的一部分,考虑到一些CSS重置的性能和维护足迹,这是一个值得关注的现实。 第三,我们需要互相挑战,也许更重要的是挑战自己。寻求便利似乎很自然,但清楚后果很重要——便利容易导致自满、教条,最终导致无知。让我们的开发者生活稍微困难一些是有用的。

当我们做所有这些时,我们应该达到20年前本可以达到的地方——一个我们非常有选择地使用定制重置的地方,很可能只在技术复杂性高或开发者资历多样性大的环境中。但这是对我们没有的现在的推测。

标题故意不完整。 非常感谢Miriam Suzanne和Jad Joubran审阅这篇文章。

  • 矛盾特别迷人,如果你考虑在形式逻辑中,它们允许得出结论任何东西。 † 这是丢失的“CSS重置第一规则”的原因:在用重置设置网站后,至少在没有重置的情况下测试一次。
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计