HTML文档头部都包含有哪些信息
hello,大家好,我是正在自学前端的小卡拉米白_杨
今天要来聊的是 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>
<meta name="description" content="页面描述内容">
<!-- 预加载 -->
<link rel="preload" href="main.css" as="style">
<link rel="preconnect" href="https://fonts.gstatic.com">
<!-- 样式 -->
<link rel="stylesheet" href="main.css">
<!-- Favicon -->
<link rel="icon" href="favicon.ico">
</head>
<body>
<!-- 页面内容 -->
</body>
</html>
接下来我们看看里边都包含了哪些以及作用
文档模式 <!DOCTYPE html>
这是文档的头部,也是文档的起始位置。<!DOCTYPE html> 用于确定文档的模式。
在以前的网络中,页面通常有两个版本,分别是
- 网景(Netscape):navigator 版本
- 微软(microsoft):internet explorer 版本
W3C标准成立后,为保护既有网站,浏览器不能启用这些标准,因此浏览器采用了两种模式。
文档开头的 !DOCTYPE html,就决定了浏览器使用哪种模式加载渲染页面
标准模式
!DOCTYPE html
这也是HTML 5所推荐的模式,浏览器会按照标准进行渲染绘制及加载
<!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>
怪异模式
省略 !DOCTYPE html 即为怪异模式,在该模式下会模仿,网景(Netscape):navigator 版本,微软(microsoft):internet explorer 版本 的行为,这可能会带来意想不到的后果
当今时代应该也不会用到怪异模式了
<!--怪异模式:没有声明<!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>
<html> 根元素
第二个则是<html> 根源元素,根元素包含了网页所有内容,它也是文档的根节点
<html lang="zh-CN">
</html>
根元素主要属性
- lang :用于声明文档的主要语言
- dir:指定文本的方向,
- ltr 指定文本从左向右
- rtl 指定文本从右向左
还有一些全局属性如: class, id,style, title 等,就不一一列举了
正确设置lang属性不仅对于SEO重要,也对用户体验至关重要,尤其是当你的网站面向多语言用户时
通过合理设置lang和dir等属性来提高网页的可访问性,使得内容更容易被理解
<head> 元素
<head> 一个容器,包含了在 HTML 页面中但不在 HTML 页面中显示的内容和元素,通常包括 css 样式,字符集声明,<link> 外部链接等。它也是文档头中比较重要的一部分,会影响到 SEO 搜索优化,首次渲染网页的效率
接下来逐一拆分容器内部的元素的具体作用:
元数据:<meta> 元素
元数据就是描述数据的数据,而 HTML 有一个“官方的”方式来为一个文档添加元数据——<meta>元素
<meta charset="UTF-8">
该标签必须声明。 用于指定文档的字符编码,UTF-8 是一个通用的字符集,包含人类语言大部分的字符,使用它意味着 页面可以显示任意的语言,UTF-8 的兼容性也是最好的
当然也可以声明其他的的字符编码如:
- UTF-16: Unicode 的定长编码(2 或 4 字节),效率低于 UTF-8
- UTF-32:Unicode 的定长编码(4 字节),空间占用大
<meta name="viewport" content="width=device-width, initial-scale=1.0">
用于配置视口的 <meta> 元素。
name="viewport":
一个特殊的标识符,核心作用是告诉浏览器这个<meta> 元素,专门用于控制移动端视口的渲染行为
这是移动端网页适配的基石,直接影响页面在手机、平板等设备上的显示效果。
name="viewport" 的底层原理
1. 浏览器行为控制
- 布局视口(Layout Viewport) :浏览器默认的渲染区域(约 980px)。
- 视觉视口(Visual Viewport) :用户当前看到的屏幕区域。
- 理想视口(Ideal Viewport) :通过
width=device-width让布局视口等于设备宽度。
2. 关键参数解析
content 参数 | 作用 |
|---|---|
width=device-width | 让布局视口宽度等于设备宽度(如 iPhone 13 为 390px) |
initial-scale=1.0 | 初始缩放比例为 1:1(不缩放) |
user-scalable=no | 禁止用户手动缩放(慎用,可能影响无障碍访问) |
<title> 标题
<title> 标签主要用于设置网站标题,当我们将鼠标移到浏览器导航栏并悬停将会显示声明的标题。
标题字数建议不超过15个,关键词前置。标题对 SEO 搜索优化也有影响
<meta name="description" content="页面描述内容">
这个 <meta> 标签,主要作用是为网页提供一个简明的文本摘要,帮助搜索引擎和用户快速理解页面核心内容。
字符长度建议在 150 左右
<link>元素,性能优化的关键
<link> 元素用于引入外部样式和脚本配置等,也是网页优化性能的一个主要地方。
<link rel="stylesheet" href="main.css">
<link> 元素中的 rel 属性和 href 属性是必填项,
rel的核心作用 指导浏览器处理资源:告诉浏览器如何加载资源(如 CSS、字体、脚本等)及优先级。 例子:
<link rel="stylesheet" href="style.css"> <!-- 加载样式表 -->
<link rel="preload" href="font.woff2" as="font"> <!-- 预加载字体 -->
rel常用值及用途:(来自AI)
| 值 | 用途 | 示例 |
|---|---|---|
stylesheet | 加载 CSS 文件 | <link rel="stylesheet" href="style.css"> |
icon | 设置网站图标(Favicon) | <link rel="icon" href="favicon.ico" type="image/x-icon"> |
preload | 预加载关键资源(需配合 as 属性) | <link rel="preload" href="font.woff2" as="font" crossorigin> |
preconnect | 提前建立与第三方资源的连接(DNS + TCP + TLS 握手) | <link rel="preconnect" href="https://fonts.gstatic.com"> |
dns-prefetch | 仅预解析 DNS(性能优化) | <link rel="dns-prefetch" href="//cdn.example.com"> |
href的核心作用:
用于指定资源引用路径的关键属性,其核心作用是为浏览器提供导航或加载资源的地址.
路径分为相对路径和绝对路径
可以给 <link> 元素的rel属性设置相应的值升提升页面的加载效率。
例子:
<!-- 预连接第三方资源 -->
<link rel="preconnect" href="https://fonts.gstatic.com">
<!-- 预加载关键 CSS -->
<link rel="preload" href="critical.css" as="style">
<link rel="stylesheet" href="critical.css">
<!-- 异步加载非关键 CSS -->
<link rel="stylesheet" href="non-critical.css" media="print" onload="this.media='all'">
以下是对AI提问的关于文档头的高频面试题:
1:HTML 文档头必须包含哪些标签?为什么?
1.核心三件套
<meta charset="UTF-8"> <!-- 字符编码,避免乱码 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- 移动端适配 -->
<title>页面标题</title> <!-- SEO 核心标签 --></p>
2.必要性解释:
charset必须放在<head>最前面,确保浏览器优先解析编码格式。viewport是移动端适配的基石,不设置会导致页面缩放异常。title是 SEO 和用户体验的关键指标,影响搜索排名和浏览器标签显示。
2.如何优化移动端页面的显示效果?
1.基础配置:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
2:进阶优化
<!-- 禁止用户缩放(慎用,需评估无障碍需求) -->
<meta name="viewport" content="user-scalable=no, maximum-scale=1.0">
<!-- 适配 iOS Safari 状态栏颜色 -->
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
3:<meta name="description"> 的作用是什么?SEO 中是否重要?
-
核心作用:
- 提供页面摘要,可能显示在搜索引擎结果页(SERP)中。
- 不直接影响排名,但影响点击率(CTR)。
4:如何通过 <head> 提升页面性能?
1.预加载关键资源:
<link rel="preload" href="critical.css" as="style">
<link rel="preload" href="main.js" as="script">
2.DNS 预解析:
<link rel="dns-prefetch" href="//cdn.example.com">
<link rel="preconnect" href="https://fonts.gstatic.com"> <!-- 更彻底的预连接 -->
3.脚本加载策略:
<script src="analytics.js" async></script> <!-- 异步加载,不阻塞渲染 -->
<script src="app.js" defer></script> <!-- 延迟执行,DOM 解析后执行 -->
5:如何处理 IE 浏览器兼容性问题?
强制渲染模式:
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <!-- 启用最高模式 -->
6:<head> 中 async 和 defer 的区别是什么?(这段前面内说到)
对比回答:
| 属性 | 执行时机 | 是否阻塞 HTML 解析 | 适用场景 |
|---|---|---|---|
async | 下载完成后立即执行 | 可能阻塞 | 独立脚本(如统计代码) |
defer | HTML 解析完成后按顺序执行 | 不阻塞 | 依赖 DOM 的脚本(如插件初始化) |
代码示例:
<script src="analytics.js" async></script> <!-- 优先下载,执行时机不确定 -->
<script src="app.js" defer></script> <!-- 按顺序在 DOMContentLoaded 前执行 -->
8:为什么 <title> 标签对 SEO 至关重要?
-
核心作用:
- 搜索引擎结果页(SERP)中的首要展示内容。
- 影响关键词排名和用户点击率。
-
优化技巧:
- 长度控制在 50-60 字符。
- 格式:
主要关键词 - 品牌名(如前端开发教程 | 技术学堂)。
-
错误示例:
- 堆砌关键词:
前端, 开发, 教程, 学习, 入门。 - 重复标题:全站使用相同标题。
- 堆砌关键词:
文章到此结束,感谢大家观看,有不对的地方还请大家多多指教,轻点喷