换成
,不是为了代码看起来更现代,而是让浏览器立刻知道“这是页面唯一核心内容区”——
必须且只能出现一次,不能嵌套在
或
里。同理: 表示主导航(非面包屑或页脚链接), 是与当前内容相关但可剥离的补充(如侧边引用),纯广告位该用
而非硬套 。
  • 要能独立成文(比如一篇新闻、一个工具介绍),而
    套
    套

    这类纯样式驱动结构,先问一句:“这个容器有没有独立语义?”没有就删
  • 多个相邻
    并列?优先考虑用
    包一层,再用
    包每个卡片
  • 用开发者工具 Elements 面板按 Ctrl+Shift+C 点击任意元素,看它的父链是否超过三层;超过就查是不是
    堆出来的“假结构”

    DOM 嵌套超三层,CSS 和 JS 就开始“猜谜”

    浏览器构建 DOM 树是深度优先遍历,每多一层嵌套,解析耗时增加,CSS 选择器匹配成本也指数上升。比如 .a .b .c .d p 这种写法,浏览器要逐层回溯父节点,实际性能损耗远高于表面看上去的“多写几个点”。实测中,单个

    下子元素超 50 个,滚动时重排明显卡顿。

    • 用 Flex 或 Grid 替代 2–3 层包裹容器:三栏布局不用
      …
      ,直接 display: grid + grid-template-columns
    • 动态列表插入别用 el.innerHTML +=
    • ...
    • ,改用 DocumentFragment 批量插入,避免每加一项都触发一次 DOM 重排
    • 检查老项目里是否存在

      这类无语义嵌套——它们通常来自复制粘贴或过时的 UI 框架模板

      资源加载顺序错一位,首屏就白屏两秒

      一个没加 defer 的 <script src="app.js"></script> 放在 里,会立刻中断 HTML 解析,等 JS 下载执行完才继续——此时连 都没生成,用户看到白屏。更隐蔽的问题是:它还会卡住 CSSOM 构建,尤其当这个 script 放在 前面时。

      使用华数设计生成高保真HTML原型、演示文稿、动画和设计评审
      使用华数设计生成高保真HTML原型、演示文稿、动画和设计评审

      使用经过文档化的设计技能,从真实的品牌或项目背景中生成HTML原生原型、幻灯片、动态演示、可视化图表和评审流程。

      下载
      • CSS 必须放 ,但禁止在 CSS 文件里写 @import:它强制串行加载,main.css 里的 @import "theme.css" 会让浏览器等 main 下完再发 theme 请求
      • 关键 JS(如首屏交互)用 <script defer></script>;非关键(统计、埋点)用 <script async></script>;内联脚本(<script>init();</script>)默认阻塞,务必加 defer
      • 字体、首屏图片用 提前拉取,但别对所有 JS preload——它不控制执行时机,反而可能挤占带宽

      HTML 不该“动态拼接”,服务端能定死的尽量定死

      所谓“高负载优化”,很多败在 HTML 生成阶段:模板引擎边渲染边请求数据、服务端拼接大量内联 JSON、甚至前端用 JS 动态生成整个

      区域。这些做法让首屏完全依赖 JS 执行,失去 SSR 优势,也放大 TTFB 影响。

      真正关键的是:哪些结构必须由服务端输出?、、首屏可见的

      、关键导航链接——这些应尽可能在初始 HTML 中存在。JS 只负责增强,而非构造骨架。

      容易被忽略的一点是:HTML 压缩不能只删空格换行。如果用了构建工具,确认它是否移除了未使用的 <script></script> 或冗余 data-* 属性;手写项目则建议用 html-minifier-terser 做 CI 检查,避免上线后还带着开发期的 注释。