CSS重置的矛盾
我们的领域(Web和前端开发)使用重置(为简化起见,此处包括“reboots”和“normalizers”)已有约20年历史。我说“约”是因为似乎Tantek Çelik在2004年开始了这一切(您也能在那里找到我),但其他作者可能更早使用了类似技术。
前提
CSS重置基于三个前提:
- 用户代理呈现网页的方式存在差异,即它们的默认样式各不相同。
- 这些差异对给定网站有影响。
- 处理这些差异很重要。
显然,如果(或一旦)所有用户代理都以相同方式处理CSS,则不需要CSS重置。
同样明显的是,如果差异不适用,也不需要CSS重置。例如,在无表单的网站上,表单样式差异无关紧要。
而且——许多争论不必要地由此爆发——这也意味着如果差异被认为不够重要,也不需要CSS重置。
我相信,在过去20年中我们看到的是,并非所有作者都关注跨用户代理的样式差异是否影响他们,以及差异是否真正重要。
但还有其他问题。
现实
对于CSS重置用户来说,现实是他们感到需要使用CSS重置。可能(也很可能)有些CSS重置用户并不这么觉得,而是因为必须使用或觉得使用更安全而使用重置。然而,实际上,使用CSS重置也是他们现实的一部分。
CSS重置用户忽略的是还有另一个现实,即不使用CSS重置的开发者和网站所有者。
这可以通过前述前提解释,但有趣的原因有两个:
- 在CSS重置的讨论中,几乎从未提及那些不使用重置且运行良好的网站和应用程序。
- 当我们采取总是需要和从不需要CSS重置的极端立场(我们在实践中观察到的立场)时,我们最终会陷入矛盾。P & ¬P。*
虽然前提允许调和矛盾,但问题依然存在:在我们关于CSS重置的讨论中,似乎没有人承认有些网站在没有重置的情况下工作——这从根本上挑战并矛盾于CSS“原教旨主义”认为它们总是需要的观念。这既不真实,也无帮助。
然而,仅此而已吗?不:
便利性
CSS重置已成为一种商品形式。它们有很多(搜索显示的种类比我能找到的最佳收藏还多),并且被嵌入到一些HTML/CSS甚至JS框架中。
这使得开发者容易忘记前提,并假设普遍需要CSS重置。
因此,我们早就可以观察到,人们停止质疑他们对重置的使用,即使它们可能没有效果。†
后果
与发布无效和幻想HTML的影响类似,所有这些都在蚕食前端开发的技艺。
我们有什么选择?
首先,我们需要明确CSS重置背后的前提,并将前提纳入我们的讨论。这将使讨论减少热度,同时做出更好的决策。
其次,我们需要进行现实检查。有许多网站和应用程序不使用CSS重置,并且在所有用户代理中完全正常运行。这是我们现实的一部分,考虑到某些CSS重置的性能和维护负担,这是一个值得关注的现实。
第三,我们需要互相挑战,也许更重要的是挑战自己。寻求便利似乎很自然,但明确后果很重要——便利容易导致自满、教条,最终导致无知。让我们的开发者生活稍微困难一些是有用的。
当我们做到所有这些时,我们应该达到20年前本可以达到的地方——一个我们非常有选择性地使用定制重置的地方,很可能仅在技术复杂度高或开发者资历多样性大的环境中使用。但这是对我们没有的现在的推测。
标题故意未完成。
非常感谢Miriam Suzanne和Jad Joubran审阅本文。
- 矛盾特别迷人,如果您考虑在形式逻辑中,它们允许推导出任何结论。
† 这是丢失的“CSS重置第一规则”的原因:在用重置设置网站后,至少测试一次没有重置的情况。
Jens Oliver Meiert是一位前端工程领导(例如,Google、Miro)和技术作者/出版商(O’Reilly、Frontend Dogma)。他是Web开发专家,专注于HTML和CSS优化与可维护性。Jens为技术标准做出贡献,并定期撰写关于他的工作和研究,特别是在他的网站meiert.com上。