<!doctype>

网页的第一个标签通常是<!doctype>表示文档类型,告诉浏览器如何解析网页。

一般来说,只要像下面这样,简单声明doctypehtml即可。浏览器就会按照 HTML 5 的规则处理网页。

  1. <!doctype html>

有时,该标签采用完全大写的形式,以便区别于正常的 HTML 标签。因为<!doctype>本质上不是标签,更像一个处理指令。

  1. <!DOCTYPE html>

<head>

<head>标签是一个容器标签,用于放置网页的元信息。它的内容不会出现在网页上,而是为网页渲染提供额外信息。

  1. <!doctype html>
  2. <html>
  3. <head>
  4. <title>网页标题</title>
  5. </head>
  6. </html>

<head><html>的第一个子元素。如果网页不包含<head>,浏览器会自动创建一个。

<head>的子元素一般有下面七个,后文会一一介绍。

  • <meta>:设置网页的元数据。
  • <link>:连接外部样式表。
  • <title>:设置网页标题。
  • <style>:放置内嵌的样式表。
  • <script>:引入脚本。
  • <noscript>:浏览器不支持脚本时,所要显示的内容。
  • <base>:设置网页内部相对 URL 的计算基准。

<font style="color:#F5222D;"><meta></font>

<meta>标签用于设置或说明网页的元数据,必须放在<head>里面。一个<font style="background-color:#FADB14;"><meta></font>标签就是一项元数据,网页可以有多个<font style="background-color:#FADB14;"><meta></font><font style="background-color:#FADB14;"><meta></font>标签约定放在<font style="background-color:#FADB14;"><head></font>内容的最前面。

不管什么样的网页,一般都可以放置以下两个<meta>标签。

  1. <head>
  2. <meta charset="utf-8">
  3. <meta name="viewport" content="width=device-width, initial-scale=1">
  4. <title>Page Title</title>
  5. </head>

上面例子中,第一个<meta>标签表示网页采用 UTF-8 格式编码,第二个<meta>标签表示网页在手机端可以自动缩放。

<meta>标签有五个属性,下面依次介绍。

(1)**charset 属性**

<meta>标签的charset属性,用来指定网页的编码方式。该属性非常重要,如果设置得不正确,浏览器可能无法正确解码,就会显示乱码。

  1. <meta charset="utf-8">

上面代码声明,网页为 UTF-8 编码。虽然开发者可以使用其他的编码方式,但正确的做法几乎总是应该采用 UTF-8。

注意,这里声明的编码方式,应该与网页实际的编码方式一致,即声明了utf-8,网页就应该使用 UTF-8 编码保存。如果这里声明了utf-8,实际却是使用另一种编码(比如 GB2312),并不会导致浏览器的自动转码,网页可能会显示为乱码。

(2)name 属性,content 属性

<meta>标签的name属性表示元数据的名字,content属性表示元数据的值。它们合在一起使用,就可以为网页指定一项元数据。

  1. <head>
  2. <meta name="description" content="HTML 语言入门">
  3. <meta name="keywords" content="HTML,教程">
  4. <meta name="author" content="张三">
  5. </head>

上面代码包含了三个元数据:description是网页内容的描述,keywords是网页内容的关键字,author是网页作者。

元数据有很多种,大部分涉及浏览器内部工作机制,或者特定的使用场景,这里就不一一介绍了。下面是一些例子。

  1. <meta name="viewport" content="width=device-width, initial-scale=1">
  2. <meta name="application-name" content="Application Name">
  3. <meta name="generator" content="program">
  4. <meta name="subject" content="your document's subject">
  5. <meta name="referrer" content="no-referrer">

(3)http-equiv 属性,content 属性

<meta>标签的http-equiv属性用来覆盖 HTTP 回应的头信息字段,content属性是对应的字段内容。这两个属性与 HTTP 协议相关,属于高级用法,这里就不详细介绍了。

  1. <meta http-equiv="Content-Security-Policy" content="default-src 'self'">

上面代码可以覆盖 HTTP 回应的Content-Security-Policy字段。

  1. <meta http-equiv="expires" content="Wed, 20 Jun 2019 22:33:00 GMT">
于模拟http请求头,可设置过期时间、缓存、刷新

下面是另一些例子。

  1. <meta http-equiv="Content-Type" content="Type=text/html; charset=utf-8">
  2. <meta http-equiv="refresh" content="30">
  3. <meta http-equiv="refresh" content="30;URL='http://website.com'">

空格和换行

空格

HTML 语言有自己的空格处理规则。标签内容的头部和尾部的空格,一律忽略不计。

换行

浏览器还会将文本里面的换行符(\n)和回车符(\r),替换成空格。

  1. <p>hello
  2. world
  3. </p>

上面代码中,helloworld之间有多个换行,浏览器会将它们替换成空格,然后再将多个空格合并成一个。网页渲染的结果是,helloworld之间有一个空格。

这意味着,HTML 源码里面的换行,不会产生换行效果。