应使用语义化标签替代div堆砌,如header、nav、main、section、footer;图片需lazy加载和srcset适配;表单method/action须严格匹配后端;字体应在head声明并用font-display:swap。

用语义化标签代替 <div> 堆砌<p>纯靠 <code><div> 搭官网,后期维护和 SEO 都会变慢——搜索引擎和屏幕阅读器根本分不清哪块是导航、哪块是正文。必须用 <code><header></header>、<nav></nav>、<main></main>、<section></section>、<footer></footer> 这类语义标签明确区块职责。
常见错误是把所有内容都塞进 <div class="container">,结果页面结构扁平、无法被辅助技术识别。实际中:<ul>
<li>
<code><nav></nav> 只包主导航链接,不包含 logo 或搜索框(它们属于 <header></header>)
<section></section> 应有 <h2></h2> 或更高阶标题作为标题,否则语义断裂<main></main> 必须且只能出现一次,且不能嵌套在 <article></article> 或 <aside></aside> 内图片加载慢?优先用 loading="lazy" 和 srcset
公司主页首屏图片(如 banner)若没做优化,用户打开就卡住——尤其移动端。原生 HTML 就能解决,不用立刻上框架或懒加载库。
关键点:
- 所有非首屏图片加
loading="lazy"属性,浏览器自动延迟加载 - 首屏大图必须用
<picture></picture>+srcset适配不同 DPR 和视口宽度,例如:<picture><source media="(min-width: 1024px)" srcset="banner-2x.webp 2x, banner-1x.webp 1x"> @@##@@ </source></picture>
- 避免直接丢一张 4MB 的 JPG 到
<img src="banner-mobile.webp" alt="公司服务概览">标签里;WebP/AVIF 格式优先,尺寸按最大显示区域裁切
表单提交失败?检查 <form></form> 的 method 和 action 是否匹配后端路由
官网联系页的表单点提交没反应,或者跳转到空白页,90% 是前后端约定没对齐。HTML 本身不处理提交逻辑,只负责把数据按规则发出去。
实操注意:
-
method值必须是"GET"或"POST"(大小写敏感),别写成"post"或"Post" -
action要填绝对路径(如"/api/contact")或完整 URL(如"https://api.example.com/contact"),相对路径容易因当前 URL 变化而失效 - 必填字段必须加
required属性,但别依赖它当唯一校验——它只防误触,不防绕过 - 提交按钮用
<button type="submit"></button>,不是<button onclick="submitForm()"></button>,否则回车提交失效
字体闪动、布局抖动?把 @font-face 提前声明并限制字体加载范围
公司官网常用定制字体(比如品牌黑体),但一刷新就先显示系统字体再跳变成品牌字体,用户感知就是“文字晃一下”——这叫 FOIT/FOUT,根源是字体加载时机失控。
解决方案不在 JS,而在 HTML + CSS 协同:
- 在
最前面引入字体 CSS,确保解析优先级最高 - 用
font-display: swap声明在@font-face中,让浏览器立即用备用字体渲染,等自定义字体加载完再切换 - 避免在 CSS 中用通配符选择器(如
* { font-family: BrandFont; })全局设字体,只在或具体组件类上设置 - 图标字体已过时,改用 SVG Sprite 或内联
<svg></svg>,减少额外字体请求
复杂点在于字体文件体积和 fallback 链设计,但最易被忽略的是:没验证不同设备下 font-display 的兼容性(iOS Safari 12+ 才完全支持 swap)。











