为什么 CSS 令人沮丧?

Avatar of Robin Rendle
Robin Rendle

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费额度!

这是 Kevin Powell 发布的一条 精彩帖子,正在被广泛传播。他认为很多人认为 CSS 是一种令人沮丧且恼人的语言。

为什么人们会尊重 JavaScript 或其他语言,并深入学习它们,却不断贬低 CSS?好吧,所有这些都让我想起了 Jeremy Keith 之前写过的一篇文章,他在文章中认为 CSS 虽然简单,但并不容易

与需要了解循环、变量和其他概念的编程语言不同,CSS 非常容易上手。也许正是因为这一点,它才获得了简单的声誉。它在“不复杂”的意义上简单的,但这并不意味着它很容易。将“简单”误认为“容易”只会导致伤心。

我认为这就是一些第一次接触 CSS 的程序员所遇到的情况。他们听说它很简单,所以他们认为它很容易。但当他们尝试使用它时,它却不起作用。一定是语言的错,因为他们知道自己很聪明,而且这应该很容易。因此,他们责怪这种语言。他们说它坏了。因此,他们试图通过使其符合更具编程性的思维方式来“修复”它。

有时我会和工程师坐在一起,与他们一起解决棘手的布局问题,而 CSS 被视为低于他们——就好像这种语言不可预测到不值得学习和掌握一样。也许这与过去有关,在过去,我们花了数年时间与浏览器以不同的方式呈现内容作斗争。但这主要是一个已经解决的问题。我不记得上次像那样与浏览器作斗争是什么时候了。

相反,我认为工程师面临的最大问题——以及他们为什么发现它如此令人沮丧的原因——是 CSS 强制你面对网络的网络特性。事情需要回退。您需要考虑不同的设备,以及查看网站的所有不同方式:移动设备、桌面电脑、无鼠标、无键盘等。当然,在编写 JavaScript 时也必须处理这些问题,但更容易忽略。你不能忽视你的网站在手机上完全崩溃的布局。

旁注:我们有 一篇关于 CSS 中居中的指南,不是因为 CSS 坏了且很蠢,而是因为变量太多了,以至于像“如何居中文字?”这样简单的问题实际上比看起来复杂得多。很多上下文都被忽略了。

这让我想起了我最喜欢的博文之一,其中 Brandon Smith 认为 CSS 很棒,我们应该尊重这种语言并学习它的底层工作原理。

CSS 很困难,因为它的属性会交互,而且经常以意想不到的方式交互。因为当您设置其中一个属性时,您永远不仅仅是在设置那个属性。那个属性会与其他十几个属性组合、反弹和冲突,包括您从未实际设置的默认属性。

缓解此问题的一条经验法则是,永远不要比需要更明确。网页默认情况下是响应式的。编写良好的 CSS 意味着利用这一事实而不是覆盖它。如果可能,使用百分比或视口单位而不是媒体查询。在您可以使用的地方使用min-width而不是width。以规则为导向,以您真正想表达的意思为导向,而不是仅仅添加属性直到看起来正确为止。尝试了解浏览器如何解决布局和大小调整问题,并谨慎地在顶部进行更改和添加。与 CSS 合作,而不是与它对抗。