# HTML ### 1.1 浏览器 | **浏览器** | **内核名称** | **核心技术架构** | **开发者/维护方** | | :-----------------: | :---------------: | :------------------------------------: | :----------------: | | **Google Chrome** | Blink(Chromium) | 基于 WebKit 分支,多进程架构 | Google(开源项目) | | **Microsoft Edge** | Blink(Chromium) | 同 Chrome,基于 Chromium 代码库 | Microsoft | | **Mozilla Firefox** | Gecko | 独立渲染引擎,支持 Rust 和 WebAssembly | Mozilla 基金会 | | **Apple Safari** | WebKit / Nitro | 基于 WebKit,JIT 编译优化 | Apple | | **Opera** | Blink(Chromium) | 同 Chrome,基于 Chromium 代码库 | Opera Software ASA | | **360/UC 浏览器** | Trident + Blink | 双核模式(兼容 IE + Chromium) | 奇虎 360/UCWeb | 性能对比 | **指标** | **Blink** | **Gecko** | **WebKit** | | :-----------------: | :---------------: | :-----------------: | :--------------: | | **页面加载速度** | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | | **JavaScript 性能** | ⭐⭐⭐⭐⭐ (V8) | ⭐⭐⭐⭐ (SpiderMonkey) | ⭐⭐⭐ (Nitro) | | **CSS 支持** | ⭐⭐⭐⭐⭐(最新标准) | ⭐⭐⭐⭐⭐(严格模式) | ⭐⭐⭐⭐(部分滞后) | | **内存占用** | ⭐⭐(较高) | ⭐⭐⭐(中等) | ⭐⭐⭐⭐(较低) | | **标准兼容性** | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐(先锋) | ⭐⭐⭐(保守) | ### 1.2 HTML简介 HTML全称HyperText Markup Language,超文本标记语言,超文本是一种组织信息的方式,它通过**超级链接**方法将文本中的文字、图表与其他信息媒体相关联。标签名不区分大小写,建议小写。参考资料: https://www.w3school.com.cn/ ```html 标题 HTML内容 ```  ### 1.3基本属性 #### 1.3.1文档声明 ```html ``` #### 1.3.2字符编码 ```html ``` #### 1.3.3语言设置 ```html ``` - zh-CN:中文-简体 - zh-TW:中文-繁体 - zh:中文 - en-US:英语-美国 - en-GB:英语-英国 ### 1.4常用标签 #### 1.4.1排版标签 ##### 1.4.1.1 标题 标签之间换行,不能互相嵌套 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 ```html 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 ``` ##### 1.4.1.2 div标签 div间默认换行,可以嵌套其他标签 ```html ``` ##### 1.4.1.3 段落 不允许嵌套 ```html 段落 ``` PS: - 块级元素:div、h1、P等:独占一行 - 行级元素:span、input等不独占一行。行级元素内不允许写块元素 #### 1.4.2 文本标签 em标签 strong标签 span标签> | 标签名 | 语义 | 单双 | | ------ | ---------------------------- | ---- | | em | 着重阅读的内容 | 双 | | strong | 十分重要,比em强烈 | 双 | | span | 没有寓意,包裹短语的通用容器 | 双 | #### 1.4.3 图片标签 单标签 ```html ``` **核心属性**: | 属性名 | 作用与枚举值 | 示例 | | :------------------: | :----------------------------------------------------------: | :----------------------------------------------: | | **`src`** | **必填**,指定图片资源路径: - 相对路径(`images/logo.png`) - 绝对 URL(`https://example.com/image.jpg`) - Base64 数据(`data:image/png;base64,...`) | `` | | **`alt`** | **必填**,替代文本: - 描述性文字(`alt="公司 Logo"`) - 装饰性图片设为空(`alt=""`) | `` | | **`width`/`height`** | 显式设置图片尺寸(单位:像素): - 避免布局偏移(CLS) - 与 CSS 尺寸配合使用 | `` | | **`loading`** | 加载行为: - `lazy`(延迟加载,视口外图片) - `eager`(立即加载,默认) | `` | | **`srcset`** | 响应式图片源(分辨率/宽度适配): `image-1x.jpg 1x, image-2x.jpg 2x` `image-480w.jpg 480w, image-800w.jpg 800w` | 见下方响应式设计示例 | | **`sizes`** | 媒体查询与显示宽度: `(max-width: 600px) 480px, 800px` | 见下方响应式设计示例 | ```html ``` **常见错误与解决方案** | 问题场景 | 解决方案 | | :---------------: | :---------------------------------------------------------: | | 图片不显示(404) | 检查 `src` 路径,确保服务器权限正确。 | | 布局偏移(CLS) | 显式设置 `width` 和 `height`,或使用 CSS `aspect-ratio`。 | | 移动端图片过大 | 使用 `srcset` 按屏幕宽度加载合适尺寸,或通过 CDN 动态裁剪。 | | 透明背景锯齿 | 使用 PNG 或 WebP 格式,避免 JPEG。 | #### 1.4.4 超链接 百度一下 ```html 百度一下 ``` 常用属性: - href:跳转链接 - 指定网址:https://www.baidu.com - 相对路径的其他资源:./index.html - 连接到页面中其他元素:如`#selector` - 脚本:`href="javascropt:alert('hello')"` - 其他协议:比如 https://、ftp://、mailto:、file: 等,可以唤起其他应用 - target:跳转的目标 - _blank:新标签页 - _self:当前页面 #### 1.4.5列表 - 有序列表(ordered): 列1 列2 ```html 列1 列2 ``` 属性: | `type` | `1`(数字,默认)、`A`(大写字母)、`a`(小写字母)、`I`(大写罗马数字)、`i`(小写罗马数字)。 | 推荐用 CSS 替代: `list-style-type: decimal/upper-alpha/lower-roman;` | | ---------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | `start` | 整数(如 `start="3"`,从 3 开始计数)。 | 仅对数字类型有效。 | | `reversed` | 布尔属性(倒序显示序号)。 | 示例:``(兼容性较差,慎用)。 | - 无序列表(unordered) 选项1 选项2 ```html 选项1 选项2 ``` - 自定义(definition) 1.选项 1.1.选项 2.选项 2.1.选项 ```html 1.选项 1.1.选项 2.选项 2.1.选项 ``` 注意事项: - 列表可以进行嵌套,例: 水果 苹果 香蕉 蔬菜 胡萝卜 西红柿 ```html 水果 苹果 香蕉 蔬菜 胡萝卜 西红柿 ``` #### 1.4.6表格 员工信息表 姓名 职位 部门 张三 前端工程师 技术部 李四 产品经理(兼UI设计) 总计:2 人 ```html 员工信息表 姓名 职位 部门 张三 前端工程师 技术部 李四 产品经理(兼UI设计) 总计:2 人 ``` ** `` 标签** | 说明 | 属性 | 示例 | | :----------: | :----------------------------------------------------------: | :---------------------------------------------------------: | | 定义表格容器 | `border`:数值(如 `1`),控制表格边框宽度(已过时,推荐用 CSS)。`width`:数值或百分比(如 `100%`),定义表格宽度。 | `...``` | | **注意事项** | 避免使用 `border` 和 `cellspacing`,优先用 CSS 控制样式。 | | ------ ** `` 标签** | 说明 | 属性 | 示例 | | :----------: | :----------------------------------------------------------: | :----------------------: | | 定义表格行 | 无特殊属性 | `内容` | | **注意事项** | 必须嵌套在 ``、``、`` 或 `` 内。 | | ------ **`` 标签** | 说明 | 属性 | 示例 | | :------------: | :----------------------------------------------------------: | :----------------------------------------------------------: | | 定义表头单元格 | `scope`:`col`(关联列)、`row`(关联行)、`colgroup`(列组)、`rowgroup`(行组)。`colspan`:合并列数。`rowspan`:合并行数。 | `姓名``合并表头``跨行表头` | | **注意事项** | 必须用 `scope` 属性提升可访问性(屏幕阅读器友好)。 | | ------ **`` 标签** | 说明 | 属性 | 示例 | | :----------------: | :------------------------------: | :----------------------------------------------------------: | | 定义表格数据单元格 | `colspan``rowspan` | `合并单元格``跨行单元格` | | **注意事项** | 避免滥用合并,保持表格结构清晰。 | | ------ **``, ``, `` 标签** | 标签名 | 说明 | 示例 | 注意事项 | | :-----------: | :------------------: | :-------------------------------------: | :----------------------------------------------------------: | | **``** | 定义表头区域 | `标题` | 必须位于 `` 内,且顺序为 `` → `` → ``。 | | **``** | 定义表格主体内容 | `数据` | 可包含多个 `` 分段管理数据。 | | **``** | 定义表格底部汇总信息 | `总计` | 必须位于 `` 之后。 | ------ ** `` 标签** | 说明 | 属性 | 示例 | 注意事项 | | :----------: | :--------: | :----------------------------------: | :-------------------------------: | | 定义表格标题 | 无特殊属性 | `2023 年销售数据` | 必须紧跟在 `` 开始标签后。 | ------ **`` 和 `` 标签** | 标签名 | 说明 | 属性 | 示例 | | :--------------: | :---------------------------------------: | :----------------: | :-------------------------------------------------------: | | **``** | 定义表格列组 | `span`(合并列数) | `` | | **``** | 定义单列样式 | `span`(合并列数) | `` | | **注意事项** | 用于批量控制列宽或样式,需配合 CSS 使用。 | | | #### 1.4.7.form表单 ```html 提交 ``` | 属性名 | 枚举值/用法示例 | 说明 | 注意事项 | | :-----------: | :----------------------------------------------------------: | :--------------------: | :-------------------------------------------------------: | | **`method`** | `GET`(数据附加到 URL) `POST`(数据在请求体中) | 表单提交的 HTTP 方法。 | `GET` 适合非敏感数据`POST` 适合文件上传或敏感信息。 | | **`enctype`** | `application/x-www-form-urlencoded`(默认编码) `multipart/form-data`(文件上传) `text/plain`(纯文本) | 表单数据的编码方式。 | 文件上传必须设为 `multipart/form-data`。 | | **`action`** | `/submit`(提交到服务器接口) `javascript:void(0)`(JS 处理) 空值(当前页面) | 表单提交的目标地址。 | 使用 `javascript:` 需绑定 `onsubmit` 事件处理。 | #### 1.4.8.input标签 **type属性:** | `type` 值 | 用途与特性 | 示例 | | :--------: | :--------------------------------------------: | :----------------------------------------------------: | | `text` | 单行文本输入(默认) | `` | | `password` | 密码输入(隐藏内容) | `` | | `email` | 邮箱输入(触发格式验证) | `` | | `number` | 数字输入(支持 `min`/`max`/`step`) | `` | | `file` | 文件上传(需 `enctype="multipart/form-data"`) | `` | | `checkbox` | 多选框 | `` | | `radio` | 单选框(相同 `name` 分组) | `` | | `submit` | 提交按钮 | `` | | `hidden` | 隐藏字段(存储无需用户输入的数据) | `` | **其他关键属性** | 属性名 | 作用 | 示例 | | :-----------: | :-----------------------------------: | :---------------------------------------------: | | `required` | 必填字段(触发浏览器验证) | `` | | `placeholder` | 输入提示文本 | `` | | `pattern` | 正则表达式验证(需配合 `title` 提示) | `` | | `readonly` | 只读字段(值可提交) | `` | | `disabled` | 禁用字段(值不提交) | `` | **其他表单控件:** **`` 多行文本输入** ```html ``` **`` 下拉选择** ```html 请选择城市 上海 北京 ``` **`` 和 `` 分组控件** ```html 用户信息 ``` #### 1.4.9 iframe ``(内联框架)用于在当前 HTML 页面中嵌入另一个独立的 HTML 文档。常见用途包括: - 嵌入第三方内容(如地图、视频、广告)。 - 展示沙盒化内容(如代码编辑器预览)。 - 实现页面局部刷新(传统用法,现代开发中已较少使用)。 **核心属性** | 属性名 | 说明 | 常用值/示例 | | :--------------------: | :------------------------------------------------: | :----------------------------------------------------------: | | **`src`** | 指定嵌入内容的 URL(必填)。 | `src="https://example.com"` `src="local-page.html"` | | **`width` & `height`** | 定义框架的宽高(单位:像素或百分比)。 | `width="800" height="600"` `width="100%"` | | **`frameborder`** | 是否显示边框(已过时,推荐用 CSS 替代)。 | `0`(无边框)或 `1`(有边框)。 | | **`allow`** | 控制嵌入内容的功能权限(安全关键属性)。 | `allow="fullscreen"`(允许全屏) `allow="camera; microphone"`(设备权限) | | **`sandbox`** | 启用沙盒模式,限制嵌入页面的行为(安全关键属性)。 | `sandbox="allow-scripts"`(仅允许脚本) `sandbox="allow-forms"`(允许表单提交) | | **`loading`** | 控制框架加载时机(优化性能)。 | `loading="lazy"`(延迟加载) `loading="eager"`(立即加载) | | **`name`** | 为框架命名,用于超链接的 `target` 属性。 | `打开链接` | ------ ** 安全注意事项** - **防止点击劫持(Clickjacking)** - 方法一:通过响应头禁止被嵌入。 ```http Content-Security-Policy: frame-ancestors 'none' ``` - 方法二:在嵌入的页面中添加以下代码: ```html ``` - **2. 沙盒模式(Sandbox)** - 严格模式:禁止所有功能。 ```html ``` - 允许部分功能:按需开放权限。 ```html ``` - **3. 跨域限制(CORS)** - 嵌入跨域内容时,需确保目标页面设置了允许嵌入的 CORS 头: ```http Access-Control-Allow-Origin: * ``` **示例代码** **嵌入 YouTube 视频** ```html ``` **嵌入 Google 地图** ```html ``` **沙盒化代码预览** ```html ``` **5. 替代方案** - **现代替代**:优先使用 Web Components 或前端框架(如 React、Vue)的组件化方案。 - **动态加载**:通过 JavaScript 的 `fetch()` 或 `XMLHttpRequest` 加载内容并插入到 DOM 中。 #### 1.4.10 meta标签 html基本信息 ```html ``` `width=device-width` 部分将页面的宽度设置为跟随设备的屏幕宽度(视设备而定)。 当浏览器首次加载页面时,`initial-scale=1.0` 部分设置初始缩放级别。 meta标签还可以使用html的全局属性 ### 1.5.HTML5新增标签 #### **1.5.1语义化标签** | 标签 | 说明 | 属性示例 | 注意事项 | | :-------------: | :--------------------------------------------------: | :----------------------------------------------------: | :---------------------------------------------------: | | **``** | 定义页面或区块的页眉(如导航栏、Logo)。 | 无特殊属性 | 一个页面可包含多个 ``,通常位于顶部。 | | **`