CSS为什么这么难?Julia Evans的深度反思

CSS并非缺陷重重,而是在解决本质复杂的问题,值得认真学习。
Julia Evans从Tailwind迁移回原生CSS的经历引发反思:CSS长期被低估和贬低,但许多曾经的痛点(如居中问题)早已被Flexbox、Grid等现代特性解决。CSS的复杂性源于Web布局问题本身的复杂性,其声明式设计和容错性体现了Web平台的核心哲学。开发者应认真学习CSS,而非停留在十年前的认知中贬低它。
从「CSS太难了」到「认真对待CSS」
Julia Evans 最近发表了一篇关于从 Tailwind 迁移并重新学习组织 CSS 的文章,其中一段关于 CSS 的反思引发了广泛共鸣。她写道:
在过去10年里,我学会了真正热爱和尊重 CSS 这项技术。
这句话看似简单,却道出了许多前端开发者的心路历程。CSS 长期以来被视为「不够硬核」的技术,甚至成为开发者社区中的笑料——「用 CSS 居中一个元素」一度是经典的吐槽素材。但 Julia Evans 选择了一条不同的路:与其贬低 CSS,不如认真学好它。

「CSS居中很难」背后的真相
Julia Evans 在文章中提到了一个非常有洞察力的观点:当她真正深入学习 CSS 之后,发现自己曾经的许多挫败感(比如「居中是不可能的」)其实早就在 CSS 中得到了解决。
CSS 居中之所以成为经典难题,根源在于 CSS 最初的设计模型——文档流(Document Flow)。CSS 诞生于1996年,最初是为了给学术文档添加样式,而非构建复杂的应用界面。在传统的块级格式化上下文(Block Formatting Context)中,垂直方向的布局由文档流自动管理,开发者缺乏直接控制垂直对齐的手段。早期开发者不得不依赖 margin: 0 auto、text-align: center、line-height hack、position: absolute 配合 transform,甚至 display: table-cell 等各种技巧来实现居中。每种方法都有其适用场景和局限性,这正是混乱的根源。直到2012年 Flexbox 规范逐步稳定,justify-content: center 和 align-items: center 的组合才真正提供了一种直观、通用的居中方案。
更重要的是,Julia Evans 意识到「居中」这个概念本身并不总是那么直截了当。水平居中、垂直居中、在 flex 容器中居中、在 grid 布局中居中、文本居中、块级元素居中——这些场景各有不同,CSS 提供多种居中方式恰恰是合理的设计,而非缺陷。
这个认知转变非常关键:CSS 之所以复杂,是因为它在解决一个本质上就很复杂的问题。
开发者为什么容易低估CSS的难度
在技术社区中,CSS 长期处于一种尴尬的位置。它不像 JavaScript 那样有复杂的运行时逻辑,也不像后端语言那样涉及系统架构设计。许多开发者倾向于将 CSS 视为「样式层面的小事」,认为它不值得投入太多精力去深入学习。
这种心态催生了大量 CSS 框架和工具的流行。CSS 框架的演化史本身就是开发者与 CSS 复杂性博弈的缩影。2011年 Twitter 开源的 Bootstrap 采用了组件化思路,提供预定义的类名和样式组合,开发者只需拼装组件即可快速构建页面。但 Bootstrap 的问题在于样式耦合度高、定制困难,生成的页面往往带有明显的「Bootstrap 风格」。2017年 Adam Wathan 推出的 Tailwind CSS 则走了另一条路——原子化 CSS(Utility-First CSS),将每个 CSS 属性拆解为独立的工具类(如 flex、pt-4、text-center),直接在 HTML 中组合使用。这种方式极大提升了开发速度,但也带来了 HTML 可读性下降、对底层 CSS 理解弱化等争议。
这些工具当然有其价值,但如果使用它们的动机是「我不想学 CSS」,那问题就来了。Julia Evans 从 Tailwind 迁移出来的决定,正是对这种权衡的重新审视。当她决定重新学习如何组织原生 CSS 时,她发现这项技术远比她之前认为的更加优雅和强大。
现代CSS的进化远超你的想象
现代 CSS 已经发生了翻天覆地的变化。
Flexbox 与 Grid:布局的革命
Flexbox(弹性盒子布局)和 CSS Grid(网格布局)是 CSS 布局史上最重要的两次范式转变。在它们出现之前,开发者主要依赖 float 属性进行布局——这个原本设计用于文字环绕图片的属性被「滥用」了十余年。float 布局需要手动清除浮动(clearfix hack)、难以实现等高列、无法优雅地处理垂直对齐,这些痛苦经历塑造了一代开发者对 CSS 的负面印象。
Flexbox 于2009年首次提案、2012年语法稳定,专注于一维方向(行或列)的空间分配和对齐;CSS Grid 于2017年获得主流浏览器支持,提供了真正的二维布局能力,可以同时控制行和列。两者并非替代关系,而是互补:Flexbox 适合组件内部的弹性排列,Grid 适合页面级的结构化布局。这两项技术的成熟,使得过去需要 JavaScript 计算或复杂 CSS hack 才能实现的布局变得声明式且直观。
新一代CSS特性:Container Queries、:has() 与 Subgrid
CSS 自定义属性(变量)带来了前所未有的灵活性,而更令人兴奋的是一系列新特性持续扩展着 CSS 的能力边界。
Container Queries(容器查询)是 CSS 社区呼吁了近十年的功能,于2023年获得主流浏览器全面支持。与传统的 Media Queries(媒体查询)基于视口宽度响应不同,Container Queries 允许组件根据其父容器的尺寸来调整样式,这使得真正可复用的响应式组件成为可能。:has() 选择器被称为 CSS 的「父选择器」,它允许根据子元素的状态来选择父元素(如 div:has(> img) 选择包含直接子图片的 div),这在以前只能通过 JavaScript 实现。Subgrid 则解决了嵌套网格对齐的难题,允许子网格继承父网格的轨道定义,使得跨层级的对齐变得简单。
这些特性的共同趋势是:CSS 正在从一种纯粹的「样式描述语言」进化为具备逻辑判断能力的「样式编程语言」,其表达力已经远超许多开发者的认知。
然而,许多开发者对 CSS 的认知仍然停留在五年甚至十年前。他们记住的是 float 布局的痛苦、IE 兼容性的噩梦,却没有跟上 CSS 的快速进化。如果你还在用十年前的眼光看待 CSS,那确实会觉得它「又难又不好用」。
认真对待CSS,而非贬低它
Julia Evans 的态度给我们一个重要启示:面对一项「看起来很难」的技术,我们有两种选择——要么贬低它、绕过它,要么认真学习它、理解它背后的设计逻辑。
选择后者往往会带来意想不到的收获。当你理解了 CSS 为什么这样设计,你不仅能写出更好的样式代码,还能更深刻地理解 Web 平台本身的设计哲学。Web 平台的核心理念是渐进增强(Progressive Enhancement)和容错性(Fault Tolerance)。与编程语言遇到未知语法就报错不同,CSS 的设计原则是:遇到不认识的属性或值,静默忽略并继续解析。这种设计使得新特性可以被逐步采用,而不会破坏旧浏览器的基本体验。CSS 的另一个核心设计理念是「声明式」而非「命令式」——开发者描述期望的结果(如「这个元素应该居中」),而非指定实现步骤(如「计算父容器宽度,减去子元素宽度,除以二,设为左边距」)。这种声明式模型意味着浏览器有更大的自由度来优化渲染,但也意味着开发者需要理解浏览器的布局算法(如 BFC、IFC、Flex Formatting Context 等)才能准确预测结果。这正是 CSS「看似简单实则深邃」的根本原因。
正如 Julia Evans 所说:CSS is hard because it's solving a hard problem. 承认问题的复杂性,是解决问题的第一步。
核心要点
- Julia Evans 分享了从 Tailwind 迁移回原生 CSS 的经历,强调应认真对待 CSS 而非贬低它
- 许多开发者曾经的 CSS 挫败感(如居中问题)其实早已被现代 CSS 解决,其历史根源在于 CSS 最初为文档流设计而非应用界面
- CSS 之所以复杂,是因为它在解决一个本质上就很复杂的问题——Web 布局和样式
- 现代 CSS(Flexbox、Grid、Container Queries、:has() 选择器等)的进化程度被许多开发者严重低估,CSS 正在从样式描述语言进化为具备逻辑判断能力的样式编程语言
- CSS 的声明式设计哲学和容错性是 Web 平台核心理念的体现,理解这些设计逻辑能带来认知上的根本转变
相关推荐
观点碰撞Windsurf CEO深度访谈:速度是唯一的护城河
Windsurf CEO Varun Mohan深度访谈,分享AI编程IDE的创业pivot经验、产品构建方法论、异步Agent挑战,以及与Cursor竞争的差异化策略。速度才是创业公司唯一的护城河。
观点碰撞被低估即自由:AI时代的逆向竞争哲学
探讨AI行业中"被低估即自由"的逆向竞争策略。从OpenAI、DeepSeek到Cursor,解析为何低调积蓄力量比站在风口浪尖更具战略优势,以及这一哲学对AI创业者和从业者的深刻启示。
观点碰撞新教工作伦理如何被劫持:从保护工人到压迫工人的演变
哲学家Elizabeth Anderson揭示新教工作伦理如何从保护工人的理想被扭曲为压迫工具。从清教徒的公平商业伦理到新自由主义的复活,深度解析工作伦理的历史演变及其对AI时代劳动关系的启示。