HTML 文档
<!DOCTYPE> 声明
Web 世界中存在许多不同的文档。只有了解文档的类型,浏览器才能正确地显示文档。
HTML 也有多个不同的版本,只有完全明白页面中使用的确切 HTML 版本,浏览器才能完全正确地显示出 HTML 页面。这就是 <!DOCTYPE> 的用处。
<!DOCTYPE> 不是 HTML 标签。它为浏览器提供一项信息(声明),即 HTML 是用什么版本编写的。
doctype
元素是唯一的,并且在它自己的类别中。
实例
带有 HTML5 DOCTYPE 的 HTML 文档:
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>
<body>
The content of the document......
</body>
</html>
HTML 版本
从 Web 诞生早期至今,已经发展出多个 HTML 版本:
版本 | 年份 |
---|---|
HTML | 1991 |
HTML+ | 1993 |
HTML 2.0 | 1995 |
HTML 3.2 | 1997 |
HTML 4.01 | 1999 |
XHTML 1.0 | 2000 |
HTML5 | 2012 |
XHTML5 | 2013 |
常用的声明
HTML5
<!DOCTYPE html>
HTML 4.01
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
XHTML 1.0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
html 元素
html
元素或根元素表示 HTML 的开始。
html
元素有一个 head
元素和一个 body
元素。
以下代码显示了正在使用的 html
元素。
<!DOCTYPE HTML> <html> ...content and elements omitted... </html>
head 元素
head
元素包含文档的元数据。
在HTML中,元数据具有关于文档中的内容和标记的信息。它还包括脚本和对外部资源的引用,例如 CSS 样式表。
head
中的 title
元素必选的元素; 其他元数据元素是可选的。
以下代码显示了正在使用的 head
元素。
每个 HTML 文档都应该包含一个head
元素,它必须包含一个title
元素,如代码所示。
<!DOCTYPE HTML> <html> <head> <title>Hello</title> </head> </html>
元数据元素
元数据元素本身不是内容,但它们提供有关后续内容的信息。
元数据元素被添加到头元素。
body 元素
body
元素封装了 HTML 文档的内容,而 head
元素封装元数据和文档信息。
body
元素总是位于 head
元素之后它是 html 元素的第二个孩子。
HTML4中的body
元素的属性:alink, background, bgcolor, link, margintop, marginbottom, marginleft, marginright, marginwidth, text, and vlink,
都已过时。
这些属性的效果可以用CSS实现。
下面的代码显示了正在使用的 body
元素。
<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
</head>
<body>
<p>This is a test</p>
<a href="http://www.w3cschool.cn">Visit www.w3cschool.cn</a>
</body>
</html>
一个 p
元素和一个 a
元素添加到 body
元素。
HTML 元数据
HTML元数据
title
title
元素设置文档的标题。
浏览器通常会在浏览器窗口或选项卡的顶部显示此元素的内容。
每个HTML文档应该只有一个标题元素。
标题文本应该对用户有意义。
以下代码显示了正在使用的标题元素。
<!DOCTYPE HTML>
<html>
<head>
<title>Example from www.w3cschool.cn</title>
</head>
<body>
<p>This is a test.</p>
<a href="https://www.w3cschool.cn">Visit www.w3cschool.cn</a>
</body>
</html>
尝试一下
HTML Base
base
元素为相对链接设置基本URL。
相对链接是省略URL的协议,主机和端口部分的链接并且针对一些其他URL(由基本元素或由基本元素指定的URL)进行评估用于加载当前文档的URL。
base
元素也指定如何在用户单击链接时打开链接,以及在表单提交后浏览器的行为。
base
元素有两个局部属性
- href
- target
HTML文档最多只能包含一个基本元素。
href属性
href
属性指定基本URL将解析文档中的相对URL。
以下代码显示了正在使用的 base
元素和 href
属性。
<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<base href="//www.w3cschool.cn/listings/"/>
</head>
<body>
<p>This is a test.</p>
<a href="https://www.w3cschool.cn">Visit www.w3cschool.cn</a>
<a href="/javascript.html">JavaScript</a>
</body>
</html>
尝试一下
上面的代码将基本URL设置为//www.w3cschool.cn/listings/
www.w3cschool.cn
是服务器的名称,和listings
是服务器上的目录。
稍后在文档中,它使用相对URL创建一个超链接javascript.html
当用户单击超链接时,浏览器将组合基本URL和相对的URL来创建组合网址 //www.w3cschool.cn/listings/javascript.html
如果不使用 base
元素,那么浏览器将假设它应该解析与当前文档的URL的任何相对链接。
例如,如果从中加载文档URL //www.w3cschool.cn/app/mypage.html
和它包含相对网址为 myotherpage.html
的超链接,那么浏览器将尝试加载第二页从完全限定的网址 //www.w3cschool.cn/app/myotherpage.html
target属性
target
属性指示浏览器如何打开网址。
您为此属性指定的值表示浏览上下文。
HTML元数据
meta
元素定义文档的元数据。
您可以以不同的方式使用此元素,并且HTML文档可以包含多个元素元素。
meta
元素有局部属性,包括 name,content,charset,http-equiv
。
charset
属性是HTML5中的新功能HTML4 scheme
属性现在已过时。
元素的每个实例只能用于这些目的之一。
名称/值元数据对
meta
元素的第一个用途是定义名称/值对中的元数据,您使用 name
和 content
属性。
以下代码使用meta
元素在名称/值对中定义元数据。
<!DOCTYPE HTML>
<html>
<head>
<meta name="author" content="www.w3cschool.cn"/>
<meta name="description" content="A simple example"/>
</head>
<body>
<a href="https://www.w3cschool.cn">Visit www.w3cschool.cn</a>
</body>
</html>
尝试一下
您可以使用 name
属性来指定元素引用的元数据类型,和content属性来提供一个值。
下表列出了可以与meta
元素一起使用的预定义元数据类型。
元数据名称 | 描述 |
---|---|
application name | 当前页面所属Web应用程序的名称 |
author | 当前页的作者的名称 |
description | 当前页面的描述 |
generator | 生成HTML的软件的名称 |
keywords | 一组用逗号分隔的字符串,用于描述内容 |
除了五个预定义的元数据名称之外,您还可以使用元数据扩展。请访问http://wiki.whatwg.org/wiki/MetaExtensions,查看这些扩展程序的列表。
robots
元数据类型被广泛使用。它允许HTML文档的作者指定文档应如何被搜索引擎处理。例如:
<meta name="robots" content="noindex">
大多数搜索引擎将识别的三个值是
- noindex - 不要索引此页面
- noarchive - 不要创建此页面的存档或缓存版本
- nofollow - 不要追踪(即抓取)此页面的链接
HTML字符集
要正确显示HTML页面,我们必须设置字符集(字符编码)。
meta
元素的另一个用途是声明字符编码。
下面的代码中显示了一个示例。
<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<meta name="author" content="www.w3cschool.cn"/>
<meta name="description" content="A simple example"/>
<meta charset="utf-8"/>
</head>
<body>
<p>This is a test.</p>
<a href="https://www.w3cschool.cn">Visit www.w3cschool.cn</a>
</body>
</html>
尝试一下
字符集设置为UTF-8编码。UTF-8是一种常见的字符编码。
字符编码
- ASCII是第一个字符编码标准。它定义127个字母数字字符。ASCII支持的数字(0-9),英文字母(A-Z)和一些特殊字符! $ + - ()@ <>。
- ANSI(Windows-1252)是原始的Windows字符集。它支持256种不同的字符代码。
- ISO-8859-1是HTML 4的默认字符集。它支持256种不同的字符代码。
- UTF-8(Unicode)涵盖了世界上几乎所有的字符和符号。HTML5的默认字符编码为UTF-8。
HTML http-equiv
元素的最终用途是覆盖HTTP(超文本传输协议)头之一的值。
HTTP通常用于在服务器和浏览器之间传输HTML数据。
来自服务器的每个HTTP响应都包含一系列描述内容的标题,您可以使用 meta
元素来模拟或替换其中的三个头。
以下代码使用meta
元素来模拟HTTP标头
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="refresh" content="5"/>
</head>
<body>
<p>This is a test</p>
<a href="https://www.w3cschool.cn">Visit www.w3cschool.cn</a>
</body>
</html>
尝试一下
您可以使用 http-equiv
属性指定要模拟的标题,和 content
属性以提供要使用的值。
在上面的代码中, refresh
头设置为5,它要求浏览器每五秒重新加载页面。
Jump
如果使用分号和URL跟随刷新间隔,浏览器将在间隔过去之后加载指定的URL。
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="refresh" content="3; http://www.www.w3cschool.cn"/>
</head>
<body>
<p>This is a test.</p>
<a href="https://www.w3cschool.cn">www.w3cschool.cn</a>
</body>
</html>
尝试一下
以下列出了 http-equiv
属性的三个允许值。
- 属性值:refresh
设置一个周期(以秒为单位),之后,将从服务器重新加载当前页面。您还可以指定要加载的其他URL。 例如:<meta http-equiv="refresh" content="5; https://www.www.w3cschool.cn"/>
- 属性值:default-style
设置应该用于此页面的首选样式表。 content属性的值必须与同一文档中的脚本或链接元素上的title属性匹配。 - 属性值:content-type
这是一种指定HTML页面的字符编码的替代方法。例如:<meta http-equiv="content-type" content="text/html charset=UTF-8"/>
HTML 样式
HTML样式
style
元素允许您在HTML文档中内联定义CSS样式。
style
元素具有局部属性: type,media,scoped
。
HTML5中添加了 scoped
属性。
例子
以下代码给出了所使用的样式元素的示例。
<!DOCTYPE HTML>
<html>
<head>
<style type="text/css">
a {
background-color: grey;
color: white;
padding: 0.5em;
}
</style>
</head>
<body>
<p>This is a test.</p>
<a href="http://www.w3cschool.cn">Visit www.w3cschool.cn</a>
</body>
</html>
上面的代码为 a
元素创建了一个新样式。它显示具有灰色背景,白色文本和一些填充的链接。
您可以在整个HTML文档中使用 style
元素,并且单个文档可以包含多个样式元素。
type
style
元素中的 type
属性可以告诉浏览器你要定义什么样的样式;但是,浏览器支持的唯一的样式机制是CSS,所以值的此属性将始终为text/css。
style Media
style
元素中的 media
属性允许您指定应将样式应用于文档的时间。
以下代码提供了如何使用此属性的示例。
<!DOCTYPE HTML>
<html>
<head>
<style media="screen" type="text/css">
a {
background-color: grey;
color: white;
padding: 0.5em;
}
</style>
<style media="print">
a{
color:Red;
font-weight:bold;
font-style:italic
}
</style>
</head>
<body>
<p>This is a test.</p>
<a href="http://www.w3cschool.cn">Visit www.w3cschool.cn</a>
</body>
</html>
上面的代码定义了两个具有不同媒体值的 style
元素。
当HTML在屏幕上显示时,浏览器将应用第一个样式,和打印页面时的第二种样式。
条件
您可以为样式创建非常具体的条件。
首先,您可以指定设备。可能的值列在下表中。
设备 | 描述 |
---|---|
all | 将此样式应用于任何设备(这是默认设置)。 |
aural | 将此样式应用于语音合成器。 |
braille | 将此样式应用于盲文设备。 |
handheld | 将此样式应用于手持设备。 |
projection | 将此样式应用于投影机。 |
在打印预览和打印页面时应用此样式。 | |
screen | 当内容显示在计算机屏幕上时应用此样式。 |
tty | 将此样式应用于固定宽度的设备,例如电传。 |
tv | 将此样式应用于电视。 |
特征
使用媒体功能可以使您更具体。
以下代码为 style
元素添加了特殊性。
<!DOCTYPE HTML>
<html>
<head>
<style media="screen AND (max-width:500px)" type="text/css">
a {
background-color: grey;
color: white;
padding: 0.5em;
}
</style>
<style media="screen AND (min-width:500px)" type="text/css">
a {
color:Red;
font-style:italic;
}
</style>
</head>
<body>
<p>This is a test.</p>
<a href="http://www.w3cschool.cn">Visit www.w3cschool.cn</a>
</body>
</html>
上面的代码使用 width
功能来区分两种样式。第一个将在浏览器窗口小于500像素时使用,和第二个窗口宽度大于500像素。
您可以使用 AND
将设备与功能组合。
除了 AND
之外,还可以使用 NOT
或逗号(,)表示OR。这允许您创建复杂和相当具体的条件,以应用样式。
可用功能及其修饰符列在下表中。
除非另有说明,否则可以使用 min-
或 max-
修改这些功能,以创建阈值而不是具体值。
width
指定浏览器窗口的宽度。
单位表示为像素的px。
例如:width:200pxheight
指定浏览器窗口的高度。
单位表示为像素的px。
例如:height:200pxdevice-width
指定整个设备的宽度,而不仅仅是浏览器窗口。
单位表示为像素的px。
例如:min-device-width:200pxdevice-height
指定整个设备的高度,而不仅仅是浏览器窗口。
单位表示为像素的px。
例如:min-device-height:200pxresolution
指定设备的像素密度。
单位是dpi(每英寸点数)或dpcm(每厘米点数)。
例如:max-resolution:600dpiorientation
指定设备的方向。
支持的值为纵向和横向。
此功能没有修饰符。
例如:orientation:portraitaspect-ratio
指定浏览器窗口设备的像素比率。
值表示为高度像素数上的宽度像素数。
例如:aspect-ratio:16/9device-aspect-ratio
指定浏览器窗口或整个设备的像素比率。
值表示为高度像素数上的宽度像素数。
例如:min-aspect-ratio:16/9color monochrome
指定彩色或单色设备每像素的位数。
例如:min-monochrome:2color-index
指定显示可以显示的颜色数。
max-color-index:256scan
指定电视的扫描模式。支持的值是渐进和交错。
此功能没有修饰符。
例如:scan:interlacegrid
指定设备的类型。网格设备使用固定网格显示内容;例如,基于字符的终端和单行寻呼机显示器。
支持的值为0和1,其中1是网格设备。此功能没有修饰符。
例如:grid:0
HTML 资源链接
HTML资源链接
link
元素在HTML文档和之间创建关系外部资源,CSS样式表或Javascript文件。
link
元素具有局部属性: href
,rel
,hreflang
,media
,type
,sizes
。
- href - 指定链路元素引用的资源的URL。
- hreflang - 指定链接资源的语言。
- media - 指定链接内容用于的设备。
- rel - 指定文档和链接资源之间的关系类型。
- sizes - 指定图标的大小。
- type - 指定链接资源的MIME类型,例如
text/css
或image/x-icon
.
sizes
属性已在HTML5中添加,属性 charset
, rev
和 target
在HTML5中已过时。
rel
属性值决定浏览器如何处理link元素。以下列表显示 rel
属性的常见值。
- alternate - 指向文档的替代版本的链接,例如翻译成另一种语言的链接。
- author - 链接到文档的作者。
- help - 与当前文档相关的帮助的链接。
- icon - 指定图标资源。
- license - 指向与当前文档相关联的许可证的链接。
- pingback - 指定pingback服务器,允许当其他网站链接到博客时自动通知博客。
- prefetch - 预加载资源。
- stylesheet - 加载外部CSS样式表。
例子
为了演示link
元素,创建了一个名为 styles.css
的样式表,其具有以下内容。
a { background-color: grey; color: red; padding: 0.5em; }
要应用这个样式表,我们可以使用link元素,如下面的代码所示。
<!DOCTYPE HTML> <html> <head> <link rel="stylesheet" type="text/css" href="styles.css" /> </head> <body> <p>This is a test.</p> <a href="http://www.w3cschool.cn">Visit www.w3cschool.cn</a> </body> </html>
您可以使用多个 link
元素来加载多个外部资源。外部样式表可以在多个文档中重用。
预加载资源
您可以要求浏览器预加载资源。
下面的代码显示了使用 link
元素来指定预加载。
<!DOCTYPE HTML> <html> <head> <link rel="prefetch" href="/page2.html" /> </head> <body> <p>This is a test.</p> <a href="http://www.w3cschool.cn">Visit www.w3cschool.cn</a> <a href="page2.html">Page 2</a> </body> </html>
上面的代码将 rel
属性设置为 prefetch
,并指定HTML页面 page2.html
被加载,期望用户将使用此页面。
HTML 图标
HTML图标
link
元素可以定义与您的页面相关联的图标。不同的浏览器以不同的方式处理图标,但通常图标显示在页面选项卡上,以及用户将页面添加到收藏夹列表时。
Favicon图标通常是 .ico
格式的32像素乘32像素的图像文件。浏览器普遍支持此格式。
例子
您可以通过向页面中添加链接元素来使用此图标。
<!DOCTYPE HTML> <html> <head> <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> </head> <body> <p>This is a test.</p> <a href="http://www.w3cschool.cn">Visit www.w3cschool.cn</a> </body> </html>
加载HTML页面时,浏览器将加载并显示图标。
如果图标位于网站的根目录,则不必使用link
元素。大多数浏览器会在加载网页时自动请求此文件,即使没有link
元素。
HTML 脚本
HTML脚本
script
元素可以包括您的页面中的脚本,在文档中内联定义或引用外部文件。
最常用的脚本类型是JavaScript。
对每个脚本使用一个script
元素。
script
元素具有局部属性: type,src,defer,async,charset
。
script
元素的开始和结束标记是必需的;即使引用外部JavaScript库时,也不允许使用自关闭标记。
在HTML5中, type
属性是可选的。在HTML5中添加了 async
和 defer
属性。
- type - 指定引用或定义的脚本的类型。对于JavaScript脚本,可以省略此属性。
- src - 指定外部脚本文件的URL。
- defer - 指定如何执行脚本。这些属性只能与
src
属性结合使用。 - async - 指定如何执行脚本。这些属性只能与
src
属性结合使用。 - charset - 指定外部脚本文件的字符编码。此属性只能与
src
属性结合使用。
内联脚本
HTML页面中的JavaScript语句包含内联脚本。
<!DOCTYPE HTML> <html> <head> <script> document.write("This is from the script"); </script> </head> <body> <p>This is a test.</p> <a href="http://www.w3cschool.cn">Visit www.w3cschool.cn</a> </body> </html>
默认情况下,脚本在页面中遇到时立即执行。您通常使用 head
元素中的 script
元素,但您可以在HTML文档中的任何位置使用它。
外部脚本
您可以将脚本分成单独的文件,并使用script
元素加载它们。
假设我们有一个名为 simple.js
的文件,其内容如下面代码所示。
document.write("This is from the external script");
该文件包含单个语句。然后,我们可以使用script
元素中的 src
属性来引用此文件。
如果使用 src
属性,则脚本元素必须为空。您不能使用相同的脚本元素来定义内联脚本和外部脚本。
以下代码显示如何使用外部脚本。
<!DOCTYPE HTML> <html> <head> <script src="simple.js"></script> </head> <body> <p>This is a test.</p> <a href="http://www.w3cschool.cn">Visit www.w3cschool.cn</a> </body> </html>
src
属性的值是要加载的脚本文件的URL。 simple.js
文件与HTML文件位于同一目录中。
需要脚本元素的结束标记,即使元素没有内容。如果在引用外部脚本时使用自动关闭标记,浏览器将忽略该元素,而不加载文件。
延迟脚本
你可以通过使用 async
和 defer
属性来控制脚本的执行。
defer
属性指示浏览器在页面加载和解析之前不执行脚本。
要了解defer属性的好处,让我们看看它解决的问题。
假设 simple2.js
脚本文件具有如下所列的单个语句。
document.getElementById("myID").innerText = "myValue";
当此脚本运行时,它将找到一个 id
属性值为 myID
的元素,并将该元素的内部文本更改为 myValue
。
以下HTML文档使用script
元素引用脚本文件。
<!DOCTYPE HTML> <html> <head> <script src="simple2.js"></script> </head> <body> <p id="myID">This is a test.</p> </body> </html>
浏览器遇到script
元素时的默认行为是停止处理HTML文档时,加载脚本文件并执行其内容。
这意味着浏览器在解析其余HTML之前加载并执行simple2.js中的语句,并发现了 p
元素。
脚本找不到所需的元素,因此不应用任何更改。
脚本完成后,浏览器继续解析HTML,并找到 p
元素。
要解决这个问题,请将script
元素放在文档的末尾。
<!DOCTYPE HTML> <html> <body> <p id="myID">This is a test.</p> <a href="http://www.w3cschool.cn">Visit www.w3cschool.cn</a> <script src="simple2.js"></script> </body> </html>
defer属性
在HTML5中,您可以通过使用 defer
属性来实现相同的效果。当浏览器遇到具有defer属性的脚本时,它会阻止加载和执行脚本,直到HTML文档中的所有元素都已解析为止。
<!DOCTYPE HTML> <html> <head> <script defer src="simple2.js"></script> </head> <body> <p id="myID">This is a test.</p> <a href="http://www.w3cschool.cn">www.w3cschool.cn</a> </body> </html>
您可以仅对外部脚本文件使用 defer
属性。它不工作的内联脚本。
异步脚本
遇到script
元素时的默认浏览器行为是在加载和执行脚本时停止处理页面。
每个script
元素按照它们定义的顺序同步执行,当脚本加载和运行时,不会发生其他事情。
您可以使用async
属性来提高性能。例如,可以异步地执行不与HTML文档中的元素交互的自包含脚本。
当您使用 async
属性时,浏览器会异步加载和执行脚本,同时继续解析HTML中的其他元素,包括其他脚本元素。
以下代码显示了应用于脚本元素的 async
属性。
<!DOCTYPE HTML> <html> <head> <script async src="simple2.js"></script> </head> <body> <p>This is a test.</p> <a href="http://www.w3cschool.cn">www.w3cschool.cn</a> </body> </html>
注意
具有async
属性的脚本可能不会按照它们的定义顺序执行。
这使得async
特性不适用于依赖于由其他脚本定义的函数或值的脚本。
noscript元素
noscript
元素允许您向其显示内容已禁用JavaScript或正在使用浏览器的用户不支持它。
noscript
元素显示内容和说明,除非他们启用JavaScript,否则他们不能使用您的网站或网页。
以下代码显示了设置为显示简单消息的noscript
元素。
<!DOCTYPE HTML> <html> <head> <script defer src="simple2.js"></script> <noscript> <h1>Javascript is required!</h1> <p>You cannot use this page without Javascript</p> </noscript> </head> <body> <p>This is a test.</p> <a href="http://www.w3cschool.cn">Visit www.w3cschool.cn</a> </body> </html>
页面的其余部分正常处理,内容元素仍然显示。
您可以向页面添加多个noscript
元素。
如果不支持JavaScript,您还可以将用户的浏览器重定向到其他网址,方法是将meta
元素放在noscript
元素中。
<!DOCTYPE HTML> <html> <head> <script defer src="simple2.js"></script> <noscript> <meta http-equiv="refresh" content="0; http://www.www.w3cschool.cn"/> </noscript> </head> <body> <p>This is a test.</p> <a href="http://www.w3cschool.cn">www.w3cschool.cn</a> </body> </html>
当不支持JavaScript或禁用JavaScript的浏览器时,这会将用户重定向到www.w3cschool.cn网站。
标签:脚本,入门教程,浏览器,最全,元素,HTML,文档,属性 From: https://blog.csdn.net/m0_69824302/article/details/144803635