HTML 全面知识整理
1. HTML 基础概念
1.1 什么是 HTML
- HTML (HyperText Markup Language) 超文本标记语言
- 用于创建网页的标准标记语言
- 描述网页的结构,由一系列元素组成
- 通过标签来标记内容
1.2 HTML 文档结构
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>页面标题</title>
</head>
<body>
<!-- 页面内容 -->
</body>
</html>
2. HTML 元素和标签
2.1 基本语法
html
<标签名 属性="值">内容</标签名>
<空标签名 属性="值">
2.2 文档类型声明
html
<!DOCTYPE html> <!-- HTML5 文档类型 -->
3. 常用 HTML 标签详解
3.1 文档结构标签
<html>: 文档的根元素<head>: 包含文档的元数据<body>: 包含文档的可见内容<title>: 文档标题<meta>: 文档元数据<link>: 链接外部资源<style>: 内嵌CSS样式<script>: 客户端脚本
3.2 文本内容标签
标题标签
html
<h1>一级标题</h1>
<h2>二级标题</h2>
<h3>三级标题</h3>
<h4>四级标题</h4>
<h5>五级标题</h5>
<h6>六级标题</h6>
段落和文本标签
html
<p>这是一个段落</p>
<br> <!-- 换行 -->
<hr> <!-- 水平线 -->
<pre>预格式化文本</pre>
<blockquote>块级引用</blockquote>
<q>短引用</q>
文本格式化标签
html
<b>粗体文本</b>
<strong>重要文本</strong>
<i>斜体文本</i>
<em>强调文本</em>
<mark>标记文本</mark>
<small>小号文本</small>
<del>删除文本</del>
<ins>插入文本</ins>
<sub>下标</sub>
<sup>上标</sup>
<code>代码文本</code>
<kbd>键盘输入</kbd>
<samp>样本输出</samp>
<var>变量</var>
<abbr title="完整文本">缩写</abbr>
<address>联系信息</address>
3.3 链接和图像标签
链接标签
html
<a href="https://example.com" target="_blank" rel="noopener">链接文本</a>
<a href="#section-id">锚点链接</a>
<a href="mailto:email@example.com">发送邮件</a>
<a href="tel:+1234567890">拨打电话</a>
图像标签
html
<img src="image.jpg" alt="图片描述" width="300" height="200" loading="lazy">
<figure>
<img src="image.jpg" alt="图片">
<figcaption>图片说明</figcaption>
</figure>
3.4 列表标签
无序列表
html
<ul>
<li>项目一</li>
<li>项目二</li>
<li>项目三</li>
</ul>
有序列表
html
<ol>
<li>第一步</li>
<li>第二步</li>
<li>第三步</li>
</ol>
<ol type="A" start="3">
<li>项目A</li>
<li>项目B</li>
</ol>
定义列表
html
<dl>
<dt>术语</dt>
<dd>定义</dd>
<dt>HTML</dt>
<dd>超文本标记语言</dd>
</dl>
4. 表格标签
4.1 基本表格结构
html
<table border="1">
<caption>表格标题</caption>
<thead>
<tr>
<th>姓名</th>
<th>年龄</th>
<th>城市</th>
</tr>
</thead>
<tbody>
<tr>
<td>张三</td>
<td>25</td>
<td>北京</td>
</tr>
<tr>
<td>李四</td>
<td>30</td>
<td>上海</td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="2">总计</td>
<td>2人</td>
</tr>
</tfoot>
</table>
4.2 表格属性
border: 边框宽度cellspacing: 单元格间距cellpadding: 单元格内边距width: 表格宽度colspan: 跨列rowspan: 跨行
5. 表单标签
5.1 基本表单结构
html
<form action="/submit" method="post" enctype="multipart/form-data">
<!-- 表单控件 -->
</form>
5.2 表单控件
输入控件
html
<!-- 文本输入 -->
<label for="name">姓名:</label>
<input type="text" id="name" name="name" required placeholder="请输入姓名">
<!-- 密码输入 -->
<input type="password" name="password" minlength="8">
<!-- 邮箱输入 -->
<input type="email" name="email">
<!-- 数字输入 -->
<input type="number" name="age" min="0" max="120" step="1">
<!-- 日期输入 -->
<input type="date" name="birthday">
<input type="datetime-local" name="appointment">
<!-- 文件上传 -->
<input type="file" name="avatar" accept="image/*">
<!-- 隐藏字段 -->
<input type="hidden" name="user_id" value="123">
<!-- 颜色选择 -->
<input type="color" name="favcolor">
<!-- 范围滑块 -->
<input type="range" name="volume" min="0" max="100">
选择控件
html
<!-- 单选按钮 -->
<input type="radio" id="male" name="gender" value="male">
<label for="male">男</label>
<input type="radio" id="female" name="gender" value="female">
<label for="female">女</label>
<!-- 复选框 -->
<input type="checkbox" id="subscribe" name="subscribe" value="yes">
<label for="subscribe">订阅新闻</label>
<!-- 下拉选择 -->
<select name="country">
<option value="">请选择国家</option>
<option value="china">中国</option>
<option value="usa">美国</option>
</select>
<!-- 多选下拉 -->
<select name="hobbies" multiple>
<option value="reading">阅读</option>
<option value="sports">运动</option>
</select>
<!-- 选项分组 -->
<select name="car">
<optgroup label="德国车">
<option value="bmw">宝马</option>
<option value="benz">奔驰</option>
</optgroup>
<optgroup label="日本车">
<option value="toyota">丰田</option>
</optgroup>
</select>
文本域
html
<textarea name="message" rows="4" cols="50" placeholder="请输入消息"></textarea>
按钮
html
<input type="submit" value="提交">
<input type="reset" value="重置">
<input type="button" value="普通按钮">
<button type="submit">提交按钮</button>
<button type="reset">重置按钮</button>
<button type="button">普通按钮</button>
5.3 表单分组
html
<fieldset>
<legend>个人信息</legend>
<!-- 表单控件 -->
</fieldset>
6. 语义化标签 (HTML5)
6.1 结构语义化
html
<header>
<nav>
<!-- 导航链接 -->
</nav>
</header>
<main>
<article>
<section>
<h1>文章标题</h1>
<p>文章内容...</p>
</section>
</article>
<aside>
<!-- 侧边栏内容 -->
</aside>
</main>
<footer>
<!-- 页脚内容 -->
</footer>
6.2 其他语义化标签
html
<time datetime="2023-10-01">2023年10月1日</time>
<mark>高亮文本</mark>
<progress value="75" max="100">75%</progress>
<meter value="0.6">60%</meter>
<details>
<summary>更多信息</summary>
<p>详细内容...</p>
</details>
7. 多媒体标签
7.1 音频
html
<audio controls>
<source src="audio.mp3" type="audio/mpeg">
<source src="audio.ogg" type="audio/ogg">
您的浏览器不支持音频元素
</audio>
7.2 视频
html
<video width="320" height="240" controls poster="preview.jpg">
<source src="movie.mp4" type="video/mp4">
<source src="movie.ogg" type="video/ogg">
您的浏览器不支持视频元素
</video>
7.3 嵌入内容
html
<iframe src="https://example.com" width="800" height="600"></iframe>
<embed src="flash.swf" width="400" height="300">
<object data="document.pdf" width="800" height="600"></object>
8. 全局属性
8.1 核心属性
id: 唯一标识符class: 类名style: 内联样式title: 提示文本lang: 语言设置dir: 文本方向 (ltr, rtl)
8.2 事件属性
onclick: 点击事件onload: 加载完成onchange: 值改变onsubmit: 表单提交onkeydown: 按键按下
8.3 其他重要属性
data-*: 自定义数据属性aria-*: 可访问性属性contenteditable: 可编辑draggable: 可拖动hidden: 隐藏元素spellcheck: 拼写检查tabindex: Tab键顺序
9. 字符实体
9.1 常用字符实体
html
& <!-- & -->
< <!-- < -->
> <!-- > -->
<!-- 空格 -->
© <!-- © -->
® <!-- ® -->
™ <!-- ™ -->
€ <!-- € -->
£ <!-- £ -->
¥ <!-- ¥ -->
10. HTML5 新特性
10.1 新的输入类型
html
<input type="color">
<input type="date">
<input type="datetime-local">
<input type="email">
<input type="month">
<input type="number">
<input type="range">
<input type="search">
<input type="tel">
<input type="time">
<input type="url">
<input type="week">
10.2 新的表单属性
html
<input required> <!-- 必填 -->
<input placeholder="提示"> <!-- 占位文本 -->
<input autofocus> <!-- 自动聚焦 -->
<input pattern="[A-Za-z]"><!-- 正则验证 -->
<input list="browsers"> <!-- 数据列表 -->
<datalist id="browsers">
<option value="Chrome">
<option value="Firefox">
</datalist>
10.3 图形和媒体
html
<canvas id="myCanvas" width="200" height="100"></canvas>
<svg width="100" height="100">
<circle cx="50" cy="50" r="40" fill="red" />
</svg>
11. 最佳实践
11.1 可访问性
html
<!-- 使用语义化标签 -->
<!-- 为图片添加alt属性 -->
<img src="image.jpg" alt="描述图片内容">
<!-- 使用label关联表单控件 -->
<label for="username">用户名:</label>
<input id="username" name="username">
<!-- 使用ARIA属性 -->
<button aria-label="关闭对话框">×</button>
11.2 SEO优化
html
<!-- 使用合适的标题结构 -->
<h1>主要标题</h1>
<h2>次级标题</h2>
<!-- 添加meta描述 -->
<meta name="description" content="页面描述">
<!-- 使用语义化标签 -->
11.3 性能优化
html
<!-- 延迟加载图片 -->
<img src="image.jpg" loading="lazy" alt="图片">
<!-- 预加载关键资源 -->
<link rel="preload" href="style.css" as="style">
<!-- 使用合适的图片格式 -->
<picture>
<source srcset="image.webp" type="image/webp">
<source srcset="image.jpg" type="image/jpeg">
<img src="image.jpg" alt="图片">
</picture>
12. 验证和调试
12.1 HTML验证
- 使用W3C验证服务检查HTML有效性
- 确保标签正确嵌套
- 检查属性值是否正确
- 验证表单输入类型
12.2 浏览器兼容性
- 测试不同浏览器的渲染效果
- 使用特性检测而非浏览器检测
- 考虑渐进增强策略
这个全面的HTML知识整理涵盖了HTML的所有主要方面,从基础概念到高级特性,包括详细的标签说明、属性解释、表格和表单的完整用法,以及最佳实践建议。