HTML 元信息与最佳实践
meta 标签
html
<!-- 字符编码 -->
<meta charset="UTF-8">
<!-- 视口设置,用于响应式设计 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- 页面描述 -->
<meta name="description" content="页面描述内容">
<!-- 关键词 -->
<meta name="keywords" content="关键词1, 关键词2">
<!-- 作者 -->
<meta name="author" content="作者名称">
<!-- 机器人指令 -->
<meta name="robots" content="index, follow">
<!-- 重定向 -->
<meta http-equiv="refresh" content="3; url=https://www.example.com">
<!-- IE 兼容性 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge"><!-- 字符编码 -->
<meta charset="UTF-8">
<!-- 视口设置,用于响应式设计 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- 页面描述 -->
<meta name="description" content="页面描述内容">
<!-- 关键词 -->
<meta name="keywords" content="关键词1, 关键词2">
<!-- 作者 -->
<meta name="author" content="作者名称">
<!-- 机器人指令 -->
<meta name="robots" content="index, follow">
<!-- 重定向 -->
<meta http-equiv="refresh" content="3; url=https://www.example.com">
<!-- IE 兼容性 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">link 标签
html
<!-- 外部样式表 -->
<link rel="stylesheet" href="style.css">
<!-- 网站图标 -->
<link rel="icon" href="favicon.ico" type="image/x-icon">
<!-- 预加载资源 -->
<link rel="preload" href="important.js" as="script">
<!-- 预获取资源 -->
<link rel="prefetch" href="/js/xx.js">
<!-- 规范链接 -->
<link rel="canonical" href="https://www.example.com/canonical-url"><!-- 外部样式表 -->
<link rel="stylesheet" href="style.css">
<!-- 网站图标 -->
<link rel="icon" href="favicon.ico" type="image/x-icon">
<!-- 预加载资源 -->
<link rel="preload" href="important.js" as="script">
<!-- 预获取资源 -->
<link rel="prefetch" href="/js/xx.js">
<!-- 规范链接 -->
<link rel="canonical" href="https://www.example.com/canonical-url">script 标签
html
<!-- 外部脚本 -->
<script src="script.js"></script>
<!-- 内联脚本 -->
<script>console.log('Hello, World!');</script>
<!-- 延迟执行(文档解析完后执行) -->
<script src="script.js" defer></script>
<!-- 异步执行(加载完立即执行) -->
<script src="script.js" async></script>
<!-- 模块脚本 -->
<script type="module" src="module.js"></script><!-- 外部脚本 -->
<script src="script.js"></script>
<!-- 内联脚本 -->
<script>console.log('Hello, World!');</script>
<!-- 延迟执行(文档解析完后执行) -->
<script src="script.js" defer></script>
<!-- 异步执行(加载完立即执行) -->
<script src="script.js" async></script>
<!-- 模块脚本 -->
<script type="module" src="module.js"></script>defer vs async:
defer在 HTML 解析完成后按顺序执行;async加载完成后立即执行,不保证顺序。无属性时脚本会阻塞 HTML 解析。
样式表引入
html
<!-- 外部样式表 -->
<link rel="stylesheet" href="style.css">
<!-- 内部样式表 -->
<style>
body { font-family: Arial, sans-serif; margin: 0; padding: 0; }
h1 { color: blue; }
</style>
<!-- 内联样式 -->
<p style="color: red; font-size: 16px;">红色文本</p><!-- 外部样式表 -->
<link rel="stylesheet" href="style.css">
<!-- 内部样式表 -->
<style>
body { font-family: Arial, sans-serif; margin: 0; padding: 0; }
h1 { color: blue; }
</style>
<!-- 内联样式 -->
<p style="color: red; font-size: 16px;">红色文本</p>最佳实践
语义化 HTML
- 使用合适的标签描述内容,避免过度使用
<div>和<span> - 为图片添加有意义的
alt属性
代码组织
- 使用缩进提高可读性,保持一致的代码风格
- 使用小写标签和属性,关闭所有标签,使用双引号包围属性值
性能优化
- 压缩 HTML、CSS 和 JavaScript
- 优化图片大小和格式,使用 CDN 加载常用库
- 延迟加载非关键资源,减少 HTTP 请求
可访问性
- 确保所有内容都可以通过键盘访问
- 为表单元素添加标签,使用 ARIA 属性增强可访问性
- 确保足够的颜色对比度
响应式设计
- 使用
meta viewport标签 - 采用流动布局,使用媒体查询适配不同设备
- 图片使用
max-width: 100%
工具和资源
- W3C HTML 验证器 — 验证 HTML 代码
- Can I use — 检查 HTML/CSS/JS 特性支持情况
- MDN Web Docs — 权威 HTML 文档
- W3Schools HTML Tutorial — 适合初学者的教程
Cao Note