HTML表格中thead、tbody、tfoot必须按thead→tfoot→tbody顺序书写,这是HTML规范强制要求,关乎渲染逻辑、打印分页、可访问性及JS DOM一致性,顺序错误将导致语义失效、打印错乱、读屏错乱。
浏览器只把 <body> 里的标签当可视内容处理。写在 <head> 里的 <p>、<div> 或 <h1> 不会显示,也不会触发样式或脚本执行(除非是 <script> 或 <style> 这类元数据标签)。
常见错误现象:
<head>,页面空白,检查元素才发现 DOM 树里根本没挂载<script> 动态插入 HTML,但插入目标是 document.head,结果内容不可见正确做法:所有用户可见结构必须包裹在 <body> 内;<head> 只放元信息、资源链接、内联脚本/样式(且需明确用途)。
<div> 和语义化标签在嵌套层级中的行为差异<div> 是纯容器,不带任何语义;<header>、<main>、<section> 等 HTML5 标签则自带文档角色。它们在 DOM 树中层级相同,但对辅助技术、SEO 和开发者理解影响巨大。
立即学习“前端免费学习笔记(深入)”;
使用场景:
<div> 套 <div> 没问题,但上线前应逐步替换为语义化标签<main> 必须有且仅有一个,不能嵌套在 <article> 或 <aside> 内<section> 要有明确主题,不能只为加 margin 而存在;空的 <section> 会被屏幕阅读器跳过容易踩的坑:用 <div class="header"> 代替 <header>,导致搜索引擎无法识别页首区域,也增加无障碍测试失败风险。
<html lang> 属性缺失时的实际影响<html lang="zh-CN"> 不是装饰项。缺失时,屏幕阅读器可能按默认语言(通常是英语)朗读中文,声调错乱;Google 搜索结果页可能把页面归类为“未指定语言”,降低中文搜索曝光。
参数差异:
lang="zh":泛指中文,兼容性最广lang="zh-CN":明确简体中文,适合大陆用户为主站点lang="zh-TW":繁体中文,影响字体渲染和词典匹配注意:<meta http-equiv="Content-Language" content="zh-CN"> 已被废弃,不起作用;只有 <html lang> 是有效且被广泛支持的方案。
<thead>、<tbody>、<tfoot> 的实际约束这三个标签不是可选装饰,而是浏览器解析表格逻辑的硬性分区。没有 <tbody>,浏览器会自动补上;但手动写错顺序(比如 <tbody> 在 <thead> 前),会导致渲染异常或 JS 获取 rows 时顺序错乱。
性能与兼容性影响:
<thead> 可配合 CSS position: sticky 实现表头悬浮,但前提是它必须是第一组 <tr> 的父容器<tfoot> 置顶渲染,若依赖该特性需降级 fallback<tbody> 内容为空,某些框架会跳过整个 <table> 渲染,需确保至少含一个 <tr>
复杂点在于:这些标签本身不接受 style 属性,样式必须通过 <tr> 或 <th>/<td> 控制,否则容易误以为加了 class 就能直接生效。