HTML基础精讲 📚
1. 元素类型详解 🔍
块级元素 (Block Elements)
常见元素: div
, h1-h6
, p
, ul
, ol
, li
- 📌 特点:
- 独占一行
- 可设置宽高、内外边距
- 默认宽度为父容器100%
- 可包含其他块级或行内元素
- ⚠️ 注意:
h1-h6
、p
等文字类元素内不能嵌套块级元素
行内元素 (Inline Elements)
常见元素: span
, a
, strong
, em
, i
, b
- 📌 特点:
- 同行显示
- 不可直接设置宽高
- 宽度由内容决定
- 只能包含文本或其他行内元素
- ⚠️ 特例:
<a>
标签可以包含块级元素,但建议转换为块级
行内块元素 (Inline-block Elements)
常见元素: img
, input
, td
- 📌 特点:
- 同行显示但可设置宽高
- 元素间存在间隙
- 默认宽度由内容决定
- 可设置内外边距
2. HTML5语义化 🎯
语义化布局示例
html
<header>
<nav>导航栏</nav>
</header>
<main>
<article>
<h1>文章标题</h1>
<section>
<h2>章节标题</h2>
<p>内容...</p>
</section>
</article>
<aside>侧边栏内容</aside>
</main>
<footer>页脚内容</footer>
3. 现代HTML特性 🌟
响应式图片
html
<picture>
<source
media="(min-width: 800px)"
srcset="large.webp"
type="image/webp">
<source
media="(min-width: 400px)"
srcset="medium.webp"
type="image/webp">
<img
src="small.jpg"
alt="描述"
loading="lazy"
decoding="async">
</picture>
现代表单控件 📝
html
<form>
<!-- 自动完成 -->
<input
type="text"
autocomplete="username"
inputmode="text">
<!-- 日期时间 -->
<input type="datetime-local">
<!-- 颜色选择 -->
<input type="color">
<!-- 范围滑块 -->
<input
type="range"
min="0"
max="100"
step="1">
<!-- 文件上传 -->
<input
type="file"
accept="image/*"
multiple>
</form>
4. HTML高级特性 🔥
Dialog对话框
html
<dialog id="myDialog">
<h2>对话框标题</h2>
<p>对话框内容...</p>
<button onclick="this.closest('dialog').close()">
关闭
</button>
</dialog>
<button onclick="myDialog.showModal()">
打开对话框
</button>
自定义数据属性
html
<div
data-user-id="123"
data-role="admin">
用户信息
</div>
<script>
const div = document.querySelector('div');
console.log(div.dataset.userId); // "123"
console.log(div.dataset.role); // "admin"
</script>
5. 性能优化技巧 ⚡
资源加载优化
html
<!-- 预加载关键资源 -->
<link rel="preload" href="style.css" as="style">
<link rel="preload" href="main.js" as="script">
<!-- 预连接到重要域名 -->
<link rel="preconnect" href="https://api.example.com">
<!-- DNS预解析 -->
<link rel="dns-prefetch" href="https://api.example.com">
脚本加载优化
html
<!-- 异步加载不阻塞渲染 -->
<script async src="analytics.js"></script>
<!-- 延迟加载直到HTML解析完成 -->
<script defer src="app.js"></script>
<!-- 模块化脚本 -->
<script type="module" src="module.js"></script>
6. 可访问性最佳实践 ♿
ARIA属性使用
html
<button
aria-label="关闭菜单"
aria-expanded="false">
<span class="icon">×</span>
</button>
<div
role="alert"
aria-live="polite">
操作成功!
</div>
7. SEO优化技巧 🎯
Meta标签优化
html
<!-- 基本SEO meta -->
<meta name="description" content="页面描述">
<meta name="keywords" content="关键词1,关键词2">
<!-- Open Graph协议 -->
<meta property="og:title" content="标题">
<meta property="og:description" content="描述">
<meta property="og:image" content="缩略图URL">
<!-- Twitter Cards -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="标题">
8. 开发注意事项 ⚠️
- 始终声明文档类型和字符编码
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
- 表单安全性
- 使用CSRF令牌
- 实施内容安全策略(CSP)
- 使用HTTPS
- 添加适当的表单验证
- 跨浏览器兼容性
- 使用现代特性时注意提供降级方案
- 测试主流浏览器
- 使用特性检测而非浏览器检测
- 性能考虑
- 压缩资源
- 使用CDN
- 实施缓存策略
- 优化关键渲染路径
- 代码规范
- 保持代码缩进一致
- 使用语义化命名
- 添加适当的注释
- 遵循HTML5规范
</rewritten_file>