优化网页性能,提升用户体验
HTML 结构对 CSS 和 JavaScript 性能有重要影响。理解重绘(Repaint)和重排(Reflow)有助于编写高性能代码。
<!-- ❌ 不好的:深层嵌套 -->
<div>
<div>
<div>
<div>
<p>深层嵌套的内容</p>
</div>
</div>
</div>
</div>
<!-- ✓ 好的:扁平化结构 -->
<article>
<p>扁平化的内容</p>
</article>懒加载可以延迟非首屏图片的加载,显著提升页面初始加载速度。
<!-- 原生懒加载(现代浏览器支持)-->
<img src="image.jpg" loading="lazy" alt="描述">
<!-- iframe 也支持懒加载 -->
<iframe src="video.html" loading="lazy"></iframe>
<!-- 预加载首屏图片 -->
<img src="hero.jpg" loading="eager" alt="首屏图片">| loading 值 | 说明 |
|---|---|
lazy |
延迟加载,元素进入视口附近时加载 |
eager |
立即加载(默认行为) |
<!-- ✓ 好的代码规范 -->
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>页面标题 | 网站名称</title>
<meta name="description" content="页面描述">
</head>
<body>
<header>
<nav aria-label="主导航">
<ul>
<li><a href="/" aria-current="page">首页</a></li>
</ul>
</nav>
</header>
<main id="main-content">
<h1>页面主标题</h1>
</main>
<footer>
<p>© 2026 网站名称</p>
</footer>
</body>
</html>| 工具 | 用途 | 配置 |
|---|---|---|
| Prettier | 代码格式化 | 自动格式化 HTML |
| HTMLHint | HTML 语法检查 | 检查标签闭合、属性规范 |
| ESLint | JavaScript 检查 | 配合插件检查内联脚本 |
| Stylelint | CSS 检查 | 检查内联样式 |
// .prettierrc
{
"printWidth": 100,
"tabWidth": 2,
"useTabs": false,
"semi": true,
"singleQuote": true,
"bracketSpacing": true,
"arrowParens": "avoid",
"htmlWhitespaceSensitivity": "css"
}| 错误 | 问题 | 解决方案 |
|---|---|---|
| 缺少 DOCTYPE | 浏览器进入怪异模式 | 添加 <!DOCTYPE html> |
| 缺少 charset | 中文乱码 | 添加 <meta charset="UTF-8"> |
| 缺少 viewport | 移动端显示异常 | 添加 viewport meta 标签 |
| 标签未闭合 | 布局错乱 | 使用 HTMLHint 检查 |
| id 重复 | JavaScript 选择器失效 | 确保 id 唯一 |
| 图片无尺寸 | 布局偏移(CLS) | 设置 width 和 height |
<!-- 1. 验证 HTML -->
<!-- 使用 W3C Validator: https://validator.w3.org/ -->
<!-- 2. 检查页面大纲 -->
<!-- Chrome 插件: HeadingsMap -->
<!-- 3. 性能分析 -->
<!-- Lighthouse: Chrome DevTools -> Lighthouse 标签 -->
<!-- 4. 网络分析 -->
<!-- Chrome DevTools -> Network 标签 -->| 指标 | 说明 | 目标值 |
|---|---|---|
| LCP | Largest Contentful Paint(最大内容绘制) | < 2.5s |
| FID | First Input Delay(首次输入延迟) | < 100ms |
| CLS | Cumulative Layout Shift(累积布局偏移) | < 0.1 |
| FCP | First Contentful Paint(首次内容绘制) | < 1.8s |
| TTFB | Time to First Byte(首字节时间) | < 600ms |
优化你的 HTML 项目: