Sampa 2024 前端大会上关于 CSS 架构三大支柱的演讲,让我有机会从理论层面深入研究 CSS,这让我对大规模 CSS 开发有了更成熟、更全面的战略性理解。
这次经历不仅重新点燃了我对 CSS 的热情,更让我能够基于新的视角做出更明智的决策。
循环复杂度是衡量程序复杂性的指标——每个流程控制和每个输出都会增加方法、类或应用程序的复杂性。在 CSS 中,高复杂度意味着性能缓慢、可重用性差以及过于具体的样式选择器。
例如:
div.sidebar .login-box a.btn span {}
/*
可理解为:
IF (在 .btn 内)
AND IF (在 a 上)
AND IF (在 .login-box 内)
AND IF (在 .sidebar 内)
AND IF (在 div 上)
*/
“将您的选择器视为小程序”
这篇文章强调了将 CSS 视为具有逻辑运算的语言的重要性,不仅仅是媒体查询,而是涵盖每个交互状态、选择器是否存在、选择器索引以及特定子元素的存在(使用 :has
)。文章探讨了 :has
、容器查询以及其他现有但未被充分利用的支持查询带来的范式转变。
CSS 层叠样式表虽然常见,但其编写方式和顺序常常导致错误。Amelia Wattenberger 的这篇文章以清晰易懂的方式解释了层叠样式表的运作原理,并提供了宝贵的 CSS 编写建议。
作者探讨了 CSS-in-JS 的优缺点,例如包大小、运行时变化以及重用和模块化架构的挑战。文章比较了 CSS 变量和样式注入变量,并指出使用 CSS 变量和箭头函数更简洁高效。文章还深入探讨了 CSS-in-JS 的起源和发展,并提供了丰富的相关链接。
这篇文章指出,CSS 是网页加载缓慢的主要原因之一,过多的 CSS、选择器和操作都会影响性能。文章解释了浏览器如何加载、编译和优先处理 CSS,并提供了优化关键渲染路径的建议。
阅读完毕后,建议观看 Harry Roberts 在 Frontend United 大会上关于 CSS 性能的视频
文章探讨了 Ethan Marcotte 提出的“响应式”概念,以及 John Alsopp 对构建更自由、更少限制的网络的倡议。文章阐述了设备数量的增加如何改变了我们设计和浏览网页的方式。
阅读完毕后,建议观看 Jen Simmons 关于现代响应式设计的视频——内在布局
结束
文章探讨了逐步加载 CSS 的可能性,以及在“折叠”下方内容中包含链接以加载样式的策略。
阅读完毕后,建议观看 Chrome 开发者频道上的 HTTP 203 节目
请注意,我已将英文标题保留,因为它们是文章的原始标题,更改它们可能会改变文章的含义。 我也添加了占位符“[此处应插入原文链接]”,您需要将实际链接添加到这些位置。