首页 / 文章 / CSS:那些无法避免的糟糕部分
← 返回
AI技术

CSS:那些无法避免的糟糕部分

✍️ zhirenhun 📅 2026/6/11 👁 69 阅读 ⏱ 6 分钟
CSS:那些无法避免的糟糕部分

CSS:那些无法避免的糟糕部分

原文:CSS: Unavoidable Bad Parts · 作者:matklad(rust-analyzer 作者)

这是一篇写给非 Web 开发者的 CSS 教程——给那些需要给网页写样式、但不是专业前端的人。作者自认不是写这个的最佳人选,但不得不从 MDN 中摸索学习,于是把心得体会记录下来。

CSS、HTML 和 Web API 非常庞大,需要整个职业生涯才能成为专家。好消息是,现代 Web 有一个规模合理、可学习子集,足以应付编程博客或简单 GUI 等任务。坏消息是,有一堆陷阱会破坏你的页面、需要几天调试才能搞明白。不过,也没那么糟——作者对这个网站的样式很满意,只用了大约 200 行可读的 CSS

好的部分:HTML5 语义标签名

值得翻阅 MDN 元素参考。像 mainarticlenavkbd 这些标签让页面结构更清晰。不太明显的用法:ul 用于任何列表、details 用于目录、dl/dt 用于键值对列表。

坏的部分:包装器(Wrappers)

查看"真实"网站的源码,你会发现层层叠叠的包装器元素。作者建议反过来——只使用有语义意义的标签,然后写出在这些标记上能正常工作的 CSS。

坏的部分:布局(Layout)

布局是每个 GUI 框架的难点。不存在终极布局算法。不同的系统使用不同的启发式方法。不要想"我如何做布局",而要想"这个系统允许哪些布局"。

坏的部分:浏览器默认样式

不同浏览器的默认样式不同。解决方案是 CSS reset 或归一化。推荐的 reset 第一行:* { box-sizing: border-box; }

好的部分:Classless CSS

reset 之后直接给通用 HTML 元素设置样式,不需要写任何 CSS 选择器。使用 mainheaderfooternav 标签就能设置整体页面布局。

不好的部分:CSS 选择器

编程领域不信任继承而偏好组合,但默认 CSS 是超级增强版继承。两种合理做法:用 classless CSS + inline styles(如 Tailwind),或用 CSS nesting 避免"范围过大"的选择器。

Chaotic Good:Margin Collapsing

两个相邻的 margin 用 max 而非 sum 合并。建议父容器控制子元素间距:section > * + * { margin-top: 1rem; }

好的部分:Flexbox

这是现代 Web 开发的关键。允许垂直或水平排列元素,适应可用空间。

关于 Box-Sizing

* { box-sizing: border-box; } 应该作为 CSS reset 的第一行,使元素边框和内边距不改变元素计算宽度。

关于 Font-Size

如果写 font-size: 16px,16px 是什么的大小?答案是"没有具体所指"。建议设置 font-size-adjust。默认 16px 在有些字体下偏小。

关于 Line-Height

line-height 不设置"行"的高度,而是设置"同一字体"文本行的高度。混用不同字体时可能产生意外效果。

关于 Word-Break

长行内代码或 URL 在移动设备上容易溢出。需要特别注意 word-break 设置。

原文地址:https://matklad.github.io/2026/06/04/css-unavoidable-bad-parts.html

——

🧑‍💻

zhirenhun

一个热爱技术的程序员,喜欢分享前沿AI知识和开发经验。

CSS Web Frontend Layout matklad
← 上一篇
构建 HTML-First 网站让用户量一夜翻倍
下一篇 →
AMD 不愿修复的 RCE 漏洞:历时 124 天只为加上一个 "s"

📌 相关推荐

📄
Rhombus 1.0 正式发布
2026/6/24
📄
艾尔登法环的低技术AI
2026/6/24
提示注入的理论基础:角色混淆(Prompt Injection as Role Confusion)
2026/6/23
← 返回文章列表