HTML文档头部都包含有哪些信息

254 阅读7分钟

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重要,也对用户体验至关重要,尤其是当你的网站面向多语言用户时 通过合理设置langdir等属性来提高网页的可访问性,使得内容更容易被理解

<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 中是否重要?

  1. 核心作用

    • 提供页面摘要,可能显示在搜索引擎结果页(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下载完成后立即执行可能阻塞独立脚本(如统计代码)
deferHTML 解析完成后按顺序执行不阻塞依赖 DOM 的脚本(如插件初始化)

代码示例:

<script src="analytics.js" async></script> <!-- 优先下载,执行时机不确定 -->
<script src="app.js" defer></script>       <!-- 按顺序在 DOMContentLoaded 前执行 -->

8:为什么 <title> 标签对 SEO 至关重要?

  • 核心作用

    • 搜索引擎结果页(SERP)中的首要展示内容。
    • 影响关键词排名和用户点击率。
  • 优化技巧

    • 长度控制在 50-60 字符。
    • 格式:主要关键词 - 品牌名(如 前端开发教程 | 技术学堂)。
  • 错误示例

    • 堆砌关键词:前端, 开发, 教程, 学习, 入门
    • 重复标题:全站使用相同标题。

文章到此结束,感谢大家观看,有不对的地方还请大家多多指教,轻点喷