CSS重置的矛盾:技术必要性与现实应用之间的冲突

本文探讨了CSS重置技术在前端开发中的必要性、现实应用及其矛盾。文章分析了CSS重置的前提条件、实际使用情况以及带来的便利与后果,并提出了解决方案。

CSS重置的矛盾

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

前提条件

CSS重置基于三个前提:

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

显然,如果(或一旦)所有用户代理都以相同方式处理CSS,就不需要CSS重置。同样,如果差异不适用,也不需要CSS重置。例如,表单样式差异在无表单的网站上无关紧要。而且——许多争论不必要地爆发了——这也意味着如果差异被认为不够重要,也不需要CSS重置。

我相信,在过去20年中我们看到的是,并非所有作者都关注跨用户代理的样式差异是否影响他们,以及这些差异是否真的重要。但还有其他问题。

现实

对于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 设计