CSS 的未来
诸如原生函数、锚点定位、嵌套和层等新的 CSS 特性,正在让网页开发者既兴奋又不安。许多人欢迎用更强大的“原生” CSS 替代 JavaScript 和沉重的框架,但也有人担心这门语言正变得过度复杂、接近一种准编程语言,越来越难以推理、测试,也更难在不同浏览器之间保持互操作性——尤其是在 Chrome 影响力过大的情况下。技术细节背后,更深层的张力在于:Web 技术栈应继续在原有基础上演进,还是应该被一个更简单、更一致的替代方案取代。
对现代 CSS 的热情
- 许多评论者说,与几年前相比,CSS 已经变得很令人愉快。
- 新特性(grid、flexbox、nesting、
@layer、:has()、变量、light-dark()、clamp()等)让布局和主题定制容易得多,也减少了对 JS 的需求。 - 有些人表示,他们用 CSS 替代了大量 JS,并通过仔细的 HTML 结构和现代布局工具构建了快速、响应式的网站。
对复杂性和功能膨胀的担忧
- 另一些人觉得 CSS 正变得不必要地复杂,并且越来越像“编程语言”,尤其是在函数和不断增长的条件逻辑方面。
- 向后兼容意味着复杂性只会不断增加;有些人希望 CSS 能被简化为一个更小的“精华部分”子集。
- 层叠和继承仍然被视为核心痛点;一些人更偏好 utility-class 方法,甚至宁愿用 HTML 表格,也不想用现代布局系统。
函数、图灵完备性,以及“把 CSS 当作语言”
- 关于函数是否应属于 CSS 的争论:
- 支持:Sass 里已经有类似想法;函数可以减少重复和复杂性,尤其适用于渐变之类的模式。
- 反对:这有把 CSS 变成一个笨拙的编程环境的风险;一些人担心,一旦它明显变成图灵完备,安全性、可维护性和调试都会出问题。
- 还有几个人指出,CSS 本质上已经是一个被困在旧式样式表语法里的编程语言,只是缺少静态类型检查之类的强工具支持。
CSS 与 JavaScript 的职责划分
- 有人认为,对于复杂逻辑,应优先使用 JS 集成;也有人回应说,CSS 的求值比 JS 更轻量、延迟更低。
- 讨论中提到了 CSS Painting API 和基于 JS 的“响应性”模式,但也有人对平台没有提供符合直觉的原生状态化 UI 方案感到沮丧。
互操作、浏览器政治与 Chrome 的主导地位
- 讨论了 Interop 项目:它的初衷是让浏览器对齐,但许多展示出来的特性目前要么只有 Chrome 支持,要么是 Chrome 优先实现。
- 对 Chrome 是在“横冲直撞”推动标准,还是在真正推动平台前进,大家看法不一。
缺失的或人们想要的原语
- 常见愿望包括:更好的打印 / 分页媒体、原生高质量工具提示、可定制的 select 和日期/时间选择器、作用域 CSS、更容易的角和边框塑形、自动的“相对角”。
- 一些人认为,这些比高级角样式之类的新装饰性能力更有价值。
AI 与开发者工作流
- 一些人现在依赖 LLM 来编写或翻译他们并不完全理解的现代 CSS,把 CSS 当作一种“只要你很少直接去看它就还行”的东西。
- 也有人警告不要对前端进行“vibecoding”,认为面向用户的 UI 仍然值得谨慎、由人主导的设计。