Appearance
Web 标准与 W3C
问题
如何理解 Web 标准和 W3C?如何写出符合标准的网页?怎样检测页面是否符合标准?
结论
Web 标准不是某一条固定规则,而是一组由标准组织、浏览器厂商和社区共同推进的规范集合。面试里提 W3C 时,可以说明它是重要的 Web 标准组织之一;同时现代 HTML 标准主要由 WHATWG 维护,浏览器实现和 MDN 文档也是校准答案的重要来源。
符合标准的网页通常具备这些特征:
- 正确的文档结构:
<!doctype html>、html lang、head、body。 - 合法嵌套:元素放在符合内容模型的位置。
- 结构与表现分离:HTML 表达结构,CSS 控制样式,JS 负责行为。
- 语义清晰:标题、列表、表格、表单、链接、按钮使用合适元素。
- 可访问性基础:控件有名称,键盘可用,图片有合适替代文本。
- 渐进增强:基础内容先可用,再增强交互体验。
检测方式:
- 使用 Nu HTML Checker / W3C Validator 检查 HTML 语法和嵌套。
- 使用浏览器 DevTools 检查 DOM、可访问性树、控制台错误。
- 使用 Lighthouse 或 axe 检查性能和可访问性问题。
- 在目标浏览器和设备上做真实测试。
Demo
html
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>符合基本标准的页面</title>
</head>
<body>
<main>
<h1>页面标题</h1>
<p>主体内容。</p>
</main>
</body>
</html>常见问题
渐进增强与优雅降级有什么区别?
两者都是跨浏览器兼容的策略,出发点相反:
| 维度 | 渐进增强 | 优雅降级 |
|---|---|---|
| 方向 | 从基础功能出发,向上增强 | 从完整功能出发,向下兼容 |
| 构建顺序 | 先保证低版本可用,再为高版本加特性 | 先为现代浏览器构建完整体验,再为旧浏览器做降级 |
| 核心关注 | 内容和基本功能的可达性 | 高版本浏览器的完整体验 |
| 典型手段 | @supports、语义 HTML、<picture>、srcset | CSS hack、polyfill、特性检测后走分支 |
面试中推荐的答法:渐进增强是现代 Web 开发的主流理念——先写语义正确、可访问的基础 HTML,再用 CSS 和 JS 增强体验;旧浏览器拿到基础体验,新浏览器拿到完整体验。优雅降级则是从完整体验出发,尽量在旧环境中不崩坏。
面试回答:
Web 标准是一组关于 HTML、CSS、DOM、可访问性等的规范和实践。写标准页面不是背标签列表,而是保证文档结构正确、元素嵌套合法、结构表现行为分离、语义清晰,并用验证器、DevTools、Lighthouse、真实浏览器测试来校验。渐进增强与优雅降级都是跨浏览器策略,前者从基础可用出发往上加特性,后者从完整体验出发向下兼容;现代项目更推荐渐进增强。