HTML(超文本标记语言)是网页使用的语言,定义了网页的结构和内容。浏览器访问网站,其实就是从服务器下载 HTML 代码,然后渲染出网页。
网页是什么?
写网页时自己部署服务器环境,推荐使用Phpstudy,Phpstudy部署的服务器为W+A+M+P,
W-windows,A-apache,M-mysql,P-php。
网页,是指网站中的任何一页面,通常是HTML(标准通用标记语言下的一个应用)格式(文件扩展名为html、或htm、或asp、或aspx、或php、或jsp等。浏览器的网页开发,涉及三种技术:HTML、CSS 和 JavaScript。HTML 语言定义网页的结构和内容,CSS 样式表定义网页的样式,JavaScript 语言定义网页与用户的互动行为。HTML 语言是网页开发的基础,CSS 和 JavaScript 都是基于 HTML 才能生效,即使没有这两者,HTML 本身也能使用,可以完成基本的内容展示。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<title>网页标题</title>
</head>
<body>
<p>Hello World</p>
</body>
</html>
浏览器右键的“查看源码”,可以展示当前网页的 HTML 源码,或者按ctrl+shift+i打开开发者工具,也可查看。运行结果:
Html中的网页标签
标签用来告诉浏览器,如何处理这段代码。标签的内容就是浏览器所要渲染的、展示在网页上的内容。标签放在一对尖括号里面(比如<title>
),大多数标签都是成对出现的,分成开始标签和结束标签,结束标签在标签名之前加斜杠(比如</title>
)。
<!Doctype>
网页的第一个标签通常是<!doctype>
,表示文档类型,告诉浏览器如何解析网页。一般来说,只要像下面这样,简单声明doctype
为html
即可。浏览器就会按照 HTML 5 的规则处理网页。 <!doctype html>有时,该标签采用完全大写的形式,以便区别于正常的 HTML 标签。因为<!doctype>
本质上不是标签,更像一个处理指令。
<html>
<html>
标签是网页的顶层容器,即标签树结构的顶层节点,也称为根元素(root element),其他元素都是它的子元素。一个网页只能有一个<html>
标签。
<html lang="zh-CN">
该标签的lang
属性,表示网页内容默认的语言。上面代码表示,网页是中文内容。如果是英文内容,zh-CN
要改成en
。
<head>
<head>
标签是一个容器标签,用于放置网页的元信息。它的内容不会出现在网页上,而是为网页渲染提供额外信息。
<!doctype html>
<html>
<head>
<title>网页标题</title>
</head>
</html>
<head>
是<html>
的第一个子元素。如果网页不包含<head>
,浏览器会自动创建一个。
<head>
的子元素一般有下面七个,
-
<meta>
:设置网页的元数据。 -
<link>
:连接外部样式表。 -
<title>
:设置网页标题。 -
<style>
:放置内嵌的样式表。 -
<script>
:引入脚本。 -
<noscript>
:浏览器不支持脚本时,所要显示的内容。 -
<base>
:设置网页内部相对 URL 的计算基准。
<meta>
<meta>
标签用于设置或说明网页的元数据,必须放在<head>
里面。一个<meta>
标签就是一项元数据,网页可以有多个<meta>
。<meta>
标签约定放在<head>
内容的最前面。
不管什么样的网页,一般都可以放置以下两个<meta>
标签。
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Page Title</title>
</head>
上面例子中,第一个<meta>
标签表示网页采用 UTF-8 格式编码,第二个<meta>
标签表示网页在手机端可以自动缩放,即自适应。
<meta>
标签的属性,
(1)charset 属性
<meta>
标签的charset
属性,用来指定网页的编码方式。该属性非常重要,如果设置得不正确,浏览器可能无法正确解码,就会显示乱码。
<meta charset="utf-8">
上面代码声明,网页为 UTF-8 编码。虽然开发者可以使用其他的编码方式,但正确的做法几乎总是应该采用 UTF-8。 UTF-8为可变长的Unicode编码。网页中英文字符与汉字共同存在。一个英文字符占1个字节,而一个汉字占三个字节,而Unicode编码为定长,使英文字母也占三个字节,导致资源浪费。 这里声明的编码方式,应该与网页实际的编码方式一致,即声明了utf-8
,网页就应该使用 UTF-8 编码保存。如果这里声明了utf-8
,实际却是使用另一种编码(比如 GB2312),并不会导致浏览器的自动转码,网页可能会显示为乱码。
(2)name 属性,content 属性
<meta>
标签的name
属性表示元数据的名字,content
属性表示元数据的值。它们合在一起使用,就可以为网页指定一项元数据。
<head>
<meta name="description" content="HTML 语言入门">
<meta name="keywords" content="HTML,教程">
<meta name="author" content="张三">
</head>
上面代码包含了三个元数据:description
是网页内容的描述,keywords
是网页内容的关键字,author
是网页作者。
(3)http-equiv 属性,content 属性
<meta>
标签的http-equiv
属性用来覆盖 HTTP 回应的头信息字段,content
属性是对应的字段内容。
<meta http-equiv="Content-Security-Policy" content="default-src 'self'">
上面代码可以覆盖 HTTP 回应的Content-Security-Policy
字段。
<meta http-equiv="Content-Type" content="Type=text/html; charset=utf-8">
<meta http-equiv="refresh" content="30">
<meta http-equiv="refresh" content="30;URL='http://website.com'">
<title>
<title>
标签用于指定网页的标题,会显示在浏览器窗口的标题栏。
<head>
<title>网页标题</title>
</head>
搜索引擎根据这个标签,显示每个网页的标题。它对于网页在搜索引擎的排序,有很大的影响,应该精心安排,反映网页的主题。<title>
标签的内部,不能再放置其他标签,只能放置无格式的纯文本。
<body>
<body>
标签是一个容器标签,用于放置网页的主体内容。浏览器显示的页面内容,都放置在它的内部。它是<html>
的第二个子元素,紧跟在<head>
后面。
<html>
<head>
<title>网页标题</title>
</head>
<body>
<p>hello world</p>
</body>
</html>
空格和换行
HTML 语言有自己的空格处理规则。标签内容的头部和尾部的空格,一律忽略不计。
<p> hello world </p>
代码中,hello
前面的空格和world
后面的空格,浏览器一律忽略不计。
标签内容里面的多个连续空格(包含制表符\t
),会被浏览器合并成一个。
<p>hello world</p>
代码中,hello
与world
之间有多个连续空格,浏览器会将它们合并成一个。网页渲染的结果是,hello
与world
之间只有一个空格。
浏览器还会将文本里面的换行符(\n
)和回车符(\r
),替换成空格。
<p>hello
world
</p>
代码中,hello
与world
之间有多个换行,浏览器会将它们替换成空格,然后再将多个空格合并成一个。网页渲染的结果是,hello
与world
之间有一个空格。
Html 中的链接标签
链接(hyperlink)是互联网的核心。它允许用户在页面上,从一个网址跳转到另一个网址,从而把所有资源联系在一起。URL 是链接指向的地址。链接不仅可以指向另一个网页,也可以指向文本、图像、文件等资源。可以这样说,所有互联网上的资源,都可以通过链接访问。
<a>
链接通过<a>
标签表示,用户点击后,浏览器会跳转到指定的网址。下面就是一个链接:
<a href="https://wikipedia.org/">维基百科</a>
上面代码就定义了一个超级链接。浏览器显示“维基百科”,文字下面默认会有下划线,表示这是一个链接。用户点击后,浏览器跳转到href
属性指定的网址。
<a>
标签内部不仅可以放置文字,也可以放置其他元素,比如段落、图像、多媒体等等。
<a href="https://www.example.com/">
<img src="https://www.example.com/foo.jpg">
</a>
上面代码中,<a>
标签内部就是一个图像。用户点击图像,就会跳转到指定网址。
<a>标签的属性
(1)href
href
属性给出链接指向的网址。它的值应该是一个 URL 或者锚点。
<a href="#demo">示例</a>
上面代码中,href
属性的值是#
加上锚点名称。点击后,浏览器会滚动,停在当前页面里面demo
锚点所在的位置。
(2)hreflang
hreflang
属性给出链接指向的网址所使用的语言,纯粹是提示性的,没有实际功能。
<a
href="https://www.example.com"
hreflang="en"
>示例网址</a>
上面代码表明,href
属性指向的网址的语言是英语。
(3)title
title
属性给出链接的说明信息。鼠标悬停在链接上方时,浏览器会将这个属性的值,以提示块的形式显示出来。
<a
href="https://www.example.com/"
title="hello"
>示例</a>。
上面代码中,用户鼠标停留在链接上面,会出现文字提示hello
。
(4)target
target
属性指定如何展示打开的链接。它可以是在指定的窗口打开,也可以在<iframe>
里面打开。
<p><a href="http://foo.com" target="test">foo</a></p>
<p><a href="http://bar.com" target="test">bar</a></p>
上面代码中,两个链接都在名叫test
的窗口打开。首先点击链接foo
,浏览器发现没有叫做test
的窗口,就新建一个窗口,起名为test
,在该窗口打开foo.com
。然后,用户又点击链接bar
,由于已经存在test
窗口,浏览器就在该窗口打开bar.com
,取代里面已经打开的foo.com
。
target
属性的值也可以是以下四个关键字之一。
-
_self
:当前窗口打开,这是默认值。 -
_blank
:新窗口打开。 -
_parent
:上层窗口打开,这通常用于从父窗口打开的子窗口,或者<iframe>
里面的链接。如果当前窗口没有上层窗口,这个值等同于_self
。 -
_top
:顶层窗口打开。如果当前窗口就是顶层窗口,这个值等同于_self
。
<a
href="https://www.example.com"
target="_blank"
>示例链接</a>
上面代码点击后,浏览器会新建一个窗口,在该窗口打开链接,并且新窗口没有名字。
注意,使用target
属性的时候,最好跟rel="noreferrer"
一起使用,这样可以避免安全风险。
(5)rel
rel
属性说明链接与当前页面的关系。
<a href="help.html" rel="help">帮助</a>
上面代码的rel
属性,说明链接是当前页面的帮助文档。
下面是一些常见的rel
属性的值。
-
alternate
:当前文档的另一种形式,比如翻译。 -
author
:作者链接。 -
bookmark
:用作书签的永久地址。 -
external
:当前文档的外部参考文档。 -
help
:帮助链接。 -
license
:许可证链接。 -
next
:系列文档的下一篇。 -
nofollow
:告诉搜索引擎忽略该链接,主要用于用户提交的内容,防止有人企图通过添加链接,提高该链接的搜索排名。 -
noreferrer
:告诉浏览器打开链接时,不要将当前网址作为 HTTP 头信息的Referer
字段发送出去,这样可以隐藏点击的来源。 -
noopener
:告诉浏览器打开链接时,不让链接窗口通过 JavaScript 的window.opener
属性引用原始窗口,这样就提高了安全性。 -
prev
:系列文档的上一篇。 -
search
:文档的搜索链接。 -
tag
:文档的标签链接。
(6)referrerpolicy
referrerpolicy
属性用于精确设定点击链接时,浏览器发送 HTTP 头信息的Referer
字段的行为。
该属性可以取下面八个值:no-referrer
、no-referrer-when-downgrade
、origin
、origin-when-cross-origin
、unsafe-url
、same-origin
、strict-origin
、strict-origin-when-cross-origin
。
其中,no-referrer
表示不发送Referer
字段,same-origin
表示同源时才发送Referer
字段,origin
表示只发送源信息(协议+域名+端口)。其他几项的解释,请查阅 HTTP 文档。
(7)ping
ping
属性指定一个网址,用户点击的时候,会向该网址发出一个 POST 请求,通常用于跟踪用户的行为。
(8)type
type
属性给出链接 URL 的 MIME 类型,比如到底是网页,还是图像或文件。它也是纯粹提示性的属性,没有实际功能。
<a
href="smile.jpg"
type="image/jpeg"
>示例图片</a>
上面代码中,type
属性提示这是一张图片。
(9)download
download
属性表明当前链接用于下载,而不是跳转到另一个 URL。
<a href="demo.txt" download>下载</a>
上面代码点击后,会出现下载对话框。download
属性只在链接与网址同源时,才会生效。也就是说,链接应该与网址属于同一个网站。如果download
属性设置了值,那么这个值就是下载的文件名。
<a
href="foo.exe"
download="bar.exe"
>点击下载</a>
上面代码中,下载文件的原始文件名是foo.exe
。点击后,下载对话框提示的文件名是bar.exe
。
注意,如果链接点击后,服务器的 HTTP 回应的头信息设置了Content-Disposition
字段,并且该字段的值与download
属性不一致,那么该字段优先,下载时将显示其设置的文件名。
download
属性还有一个用途,就是有些地址不是真实网址,而是数据网址,比如data:
开头的网址。这时,download
属性可以为虚拟网址指定下载的文件名。
<a href="data:,Hello%2C%20World!">点击</a>
上面链接点击后,会打开一个虚拟网页,上面显示Hello World!
。
<a
href="data:,Hello%2C%20World!"
download="hello.txt"
>点击</a>
上面链接点击后,下载的hello.txt
文件内容就是“Hello, World!”。
Html中的文本标签
<div>
<div>
是一个通用标签,表示一个区块)。它没有意义,如果网页需要一个块级元素容器,又没有其他合适的标签,就可以使用这个标签。
<p>
<p>
标签是一个块级元素,代表文章的一个段落(。不仅是文本,任何想以段落显示的内容,比如图片和表单项,都可以放进<p>
元素。
<p>hello world</p>
这就是一个简单的段落。
<span>
<span>
是一个通用目的的行内标签(即不会产生换行),不带有任何语义。如果需要对某些行内内容指定样式,就可以把它们放置在<span>
。
<p>这是一句<span>重要</span>的句子。</p>
可以把句子中需要强调的部分放在<span>
。
<br>
,<wbr>
<br>
让网页产生一个换行效果。该标签是单独使用的,没有闭合标签。
hello<br>world
浏览器渲染上面代码时,会分成两行,hello
和world
各占一行。
<br>
对于诗歌和地址的换行非常有用。
<p>
床前明月光,<br>
疑是地上霜。<br>
举头望明月,<br>
低头思故乡。
</p>
上面的代码如果不用<br>标签
,会显示成一行。