CSS重置的矛盾:20年技术争议与前端开发真相

本文深入探讨CSS重置技术的历史与现状,分析其三大前提假设与实际开发中的矛盾,揭示无重置网站存在的现实,并提出选择性使用重置的解决方案,挑战前端开发中的便利性陷阱。

CSS重置的矛盾

我们的领域(网页与前端开发)使用重置(为简化起见,此处包括“重启”和“规范化”)已有约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 设计