Loading AI tools
来自维基百科,自由的百科全书
HTML中,一个HTML元素是HTML文件的一个基本组成单元。HTML文件采用采用树形结构安排HTML元素。更进一步的说,一个HTML元素是一个满足一项或多项DTD要求的元素。HTML元素可以拥有属性和内容,可以是标题、段落、链接、列表、嵌入媒体或者其他的任何符合DTD要求的格式。
在HTML语法中,大多数元素编写一个开始标记和结束标记,与其之间的内容。HTML标记是由元素名称,包围于两侧之小于号与大于号之括号所组成。其结束标记拥有一斜线位在小于号之括号后,有别于其起始标记。例如:一个段落是由p
元素所代表,其被写成
<p>在HTML語法中,大多數元素編寫......</p>
然而,并非所有的此类元素需要结束标记,甚至是开始标记必须存在。某些元素,即所谓的void空元素,并无结束标记。典型的例子即br
元素,其表示一个显著之换行,像是一首诗或一个住址。一个空元素的行为是预先定义的,并且它不能包含任何内容或其他元素。例如:在电影海底总动员中的牙医师的地址将被写成
<p>P. Sherman<br>42 Wallaby Way<br>Sydney</p>
HTML元素可以是容器或者为空。 容器元素 结构如下:
<标记>
)表示一个元素的开始,标记本身还可以包含属性;
</tag>
。并非所有的元素都要求结束标记,有些元素的结束表示是可有可无的(如p),有些是一定不可以有的(如input)。空元素指仅包含一个标记,该标记既是开始标记同时也是结束标记。空元素可以有任意数量的属性<标记名 />
。在XHTML规范中,标记中的斜线符号是必须的[1]。要求使用一个单独标签开启与关闭元素。若要指定其为一个空元素,符号"/"包含于标记之结尾(不能与位于结束标记中的开始的符号"/"混淆)。例如:
<p>P. Sherman<br/>42 Wallaby Way<br/>Sydney</p>
英语中有时HTML元素也被称为“tags”,严格的说tag是指元素的开始或者结束标记。
HTML属性用来指示元素的附加的性质。放在开始标记中。例如:abbr
元素,其表示缩写,预计一个title
属性包含其开始标记。将被写成
<abbr title="abbreviation">abbr.</abbr>
<p … >
class
foo
This is a paragraph.
</p>
<p class="foo">This is a paragraph.</p>
在HTML中,元素(和属性)名字可以是大写或者小写,但在XHTML中,必须是小写。[2]大写是旧的用法,并且是HTML规范中说明的方法,但是小写更为通用。
HTML元素是在自1995年以来发布的一系列免费开放标准中定义的,最初由IETF以及随后由W3C制订。
1990年代的浏览器大战期间,网页浏览器的软件商开始不断的添加自定义的元素,有些被后来的标准吸收。并非所有的软件商都支持这些非标准的元素,一般对于非标准的元素,或者是忽略,或者是导致显示不正确。
1998年,XML(一种简化的SGML)引入一种方法,允许任何人开发自己的元素并融合到XHTML文件中,使用支持XML的浏览器(用户代理)可以浏览任意元素。[3]
而后采用XML兼容的办法,重新制订了HTML 4.01标准,XHTML 1.0(扩展的HTML)。二者的元素相同,绝大多数情况下,XHTML 1.0文件的元素在HTML 4.0文件中是合法的。本文除非另外指出,应用的都是基于SGML的HTML,对于XHTML多数情况下仍然适用(二者区别见HTML)。
自从HTML第一版以来,已经有数个元素因为过期,不再新的标准中推荐使用或者干脆删除。
目前由于并存三种HTML 4.01/XHTML 1.0 DTD标准,而使得HTML的验证变得复杂起来,这三种标准分别是:
HTML第一个标准(HTML 2.0)包含四个过期的元素。其中一个在HTML 3.2中被列为无效。所有的四个在HTML 4.01 Transitional中都被列为无效,HTML4.01 Transitional标准此外还将另外十个元素定义为无效。以上这些元素再加两个在HTML 4.01 Strict中同样被定义为无效。由于frame元素在显示方面的诸多问题以及其功能已经可以由其他元素替代,在未来的标准中不再保留,虽然目前在Transitional和Frameset DTD中仍然有效。
(严格的说,目前的XHTML标准XHTML 1.1(2001)根本不支持frame。基本上与XHTML 1.0 Strict相同,但是又包含了Ruby markup模块。)[4]
一个经常导致错误理解的原因是不严格的使用deprecated(过期)一词来泛指过期的和无效的,以及今后一段时间过期的不同的状态。
根据分离原则,HTML的功能在于给一个文件的内容增加语义和结构的信息。增加文件的展示和行为的功能,例如增加CSS stylesheets和图形来增加文件的展示功能;通过链接到外部文件和脚本增加与用户交互的行为。User agent也可以根据作者所提供的stylesheet在不同的介质(显示器,打印机)上展示不同效果。同时保持语义上的一致。
<html>...</html>
<head>...</head>
<body>...</body>
<base/>
href
及其它链接提供一个基本的url路径。必须出现在任何引用外部资源的元素之前。在每个HTML文件中,只允许出现一个base
元素。base
元素没有内容。其另外一个可选属性target的值可以为:_blank、_parent、_self、_top、framename,规定页面中所有的超链接和表单在何处打开;该属性会被每个具体链接中的target 属性覆盖。
<basefont/> (deprecated)
font
元素搭配使用。已经过期,推荐使用CSS.<isindex/> (deprecated)
isindex
既可以出现在文件头,也可以出现在文件体内,但是只能出现一次。需要服务器端的搜索引擎的支持。<link/>
<link rel="stylesheet" type="text/css" href="url" title="description_of_style">
[6]<link rel="next" href="url">
head
元素可能包含任何数量之link
元素。该link
元素拥有HTML属性,但无内容。<meta/>
HTML属性之其他未提供的信息。因其共通性,meta
元素指定关系的key-value pairs。一般情况之下,meta元素传达关于文件之隐藏信息。若干meta标签可被使用,上述之全部应被嵌套在head元素中。每个 meta元素之特定目的是由其属性来定义。
meta
元素可指定应经由实际内容之前的网页服务器寄送之HTTP标头,例如:
<meta http-equiv="foo" content="bar">
foo
that has a value bar
.meta
元素指定HTML网页的name
及关系的content
HTML 属性描述方面。为了防止可能发生歧义,一个可选取之第三方属性:scheme
可被支持于指定一个定义该key及其值的含意之语义框架:例如:
<meta name="foo" content="bar" scheme="DC">
meta
元素识别其自身为包含foo
元素,包含bar
值,从DC或都柏林核心资源描述框架.<object>...</object>
head
元素中,但也可能用来截取外部资料,并将之与目前的文件关系。<script>...</script>
<style>...</style>
<style type="text/css"> ... </style>
@import
指令:
<style> @import url; </style>
[8]<title>...</title>
在可视化浏览器中,可显示元素可呈现为区块或内行。虽然所有元素是文件序列之一部分,但是区块元素 出现在其父元素中:
反言之,内行元素被视为文件文字流之部分;其无法拥有边距、宽度或高度设置,并且跨行。
区块元素(或称区块层级元素)拥有矩形结构。在默认情况下,这些元素将占据父元素的整个宽度,因而不允许任何其他元素占据已被其所占的同一水平空间。
区块元素的矩形结构经常称之为盒模型,并由几个部分所组成。每个元素包含以下内容:
上述部分仅指CSS渲染的具体实施,并与HTML元素本身无关。
<p>...</p>
<h1>...</h1>
<h2>...</h2>
<h3>...</h3>
<h4>...</h4>
<h5>...</h5>
<h6>...</h6>
<dl>...</dl>
DL
在HTML Tags中已经存在,并且在HTML 2.0中标准化;目前仍在使用。<dt>...</dt>
<dd>...</dd>
<ol>...</ol>
type
元素可用于指定排序类型,但CSS样式表提供了更多控制:{list-style-type: foo}
。其默认为阿拉伯数字编号。若要使用type
属性,请使用<ol type="foo">
,以下列项目之一取代foo
:
A
表示A, B, C...a
表示a, b, c...I
表示I, II, III...i
表示i, ii, iii...1
表示1, 2, 3...OL
在HTML Internet Draft 1.2中已经存在,并且在HTML 2.0中标准化;目前仍在使用。<ul>...</ul>
{list-style-type: foo}
。其默认项目符号为一个空心圆。UL
在HTML Tags中已经存在,并且在HTML 2.0中标准化;目前仍在使用。<li>...</li>
<dir>...</dir> (deprecated)
<ul>
替代,故不建议使用。DIR
在HTML Tags中已经存在,并于HTML 2.0中标准化;在HTML 4.0 Transitional中不建议使用;在HTML 4.0 Strict中已失效。<address>...</address>
<blockquote>...</blockquote>
cite
属性可能提供来源,且必须是完全合格之统一资源标志符。BLOCKQUOTE
在HTML Internet Draft 1.2中已经存在,并且在HTML 2.0中标准化;目前仍在使用。如需更多信息,请参见blockquote元素。<center>...</center> (deprecated)
<div>
或其他元素之方式替代,故不建议使用。<del>...</del>
<div>...</div>
<hr/>
<ins>...</ins>
<noscript>...</noscript>
<pre>...</pre>
pre
中,空白会被视为是作者故意为之而被呈现出来。(在CSS的属性:{white-space: pre; font-family: mono-space;}
,其他的元素也可以相同的方式呈现。)该元素可包含任何inline元素,但下列除外:影像(IMG
)、对象(OBJECT
)、大型字(BIG
)、小型字(SMALL
)、上标(SUP
)及下标(SUB
)。PRE
在HTML Internet Draft 1.2中已经存在,并且在HTML 2.0中标准化;目前仍在使用。<script>...</script>
SCRIPT
本身并非区块或内行元素;其本身不应全部显示,但其可包含说明以动态生成区块或内内联容两者。内联元素无法直接放置在body
元素中;其必须完全嵌套于区块及元素中。[12]
<a>...</a>
href
属性(hypertext reference [1](页面存档备份,存于互联网档案馆)),锚可以成为到文档中另一个部分的链接,也可以通过使用一个外部URL来指向另一个资源(如网页)。name
或id
属性,使这个元素成为目标。URL可以通过碎片标识符链接到这个目标。现在,任何元素都可以通过使用id
属性来变成一个锚,[2](页面存档备份,存于互联网档案馆)因此<a name="foo">
不再必要。A
在HTML Tags中已经存在,并且在HTML 2.0中标准化;目前仍在使用。<abbr>…</abbr>
<acronym>...</acronym> (deprecated)
abbr
元素类似。(拼音文字中Acronym是指大写的首字母组合成的词,比如Hyper-Text Markup Language的Acronym是HTML; Abbreviation的概念更广泛些,可以是将一个较长的词后面部分去掉,用剩下的部分表示词的意思。中文中没有类似的区别):
<acronym title="Hyper-Text Markup Language">HTML</acronym>
<dfn>…</dfn>
<em>…</em>
<strong>…</strong>
这些与元素主要用于方便显示计算机软件编码和与用户交互(<code>);显示源代码变量(<var>);用户输入(<kbd>);以及终端输出(<samp>)。
<code>…</code>
Code snippet.
<samp>…</samp>
<kbd>…</kbd>
<var>…</var>
视觉效果的元素仅仅对可视浏览器起作用,因此不推荐使用,如果可能应该使用层叠样式表。部分元素在HTML 4 / XHTML 1.0中被宣布过期或者无效的,其它的在当前的XHTML 2.0草案XHTML 2.0(页面存档备份,存于互联网档案馆)中被定义为无效的。当前的HTML 5草案HTML 5中,b, i和small还是有效的.
<b>…</b>
{font-weight: bold}
。)<strong>...</strong>
在可视的浏览器中有相同的效果,但是有更强的语义。<img/>
src
属性指定图像的URL。alt
属性提供图像的替代文字。IMG由马克·安德森所提出并实现在NCSA Mosaic网页浏览器[14]。<blink>...</blink> (deprecated)
<marquee>...</marquee> (deprecated)
<!-- A Comment -->
在HTML中的 注解(以及相近的XML, SGML, SHTML. )语法与SGML相同。
不同于其它HTML标签,注解不支持嵌套结构。
标签: <!--注解一<!--注解二-->注解三-->
看起来会是这样 注解一<!--注解二
后面拖着一段没有被标签包起来的文字: 注解三-->
注解可以出现在文件的任何地方,甚至可以在文件类型宣告之前。
(在<!DOCTYPE HTML>
之前。)
HTML的解释器会忽略注解,只要它们不在HTML标签内。
这里标签内的意思并非指被一对开始标签及结束标签包住的区域内,
而是指在开始标签内,或结束标签、空元素标签内。
然而并非所有浏览器、HTML编辑器都与HTML语法完全兼容,在某些特殊情况会造成意料之外的结果。 约有5%的浏览器、HTML编辑器在处理注解标签上有缺陷。(其中大部分是IE6 ) 尽管只有少数版本有此问题。
一些有关注解的兼容性问题:
style
或script
元素中的内容,有时会以注解的型式存在。<style> ... {comment tags} ...</style>
标签内的注解显示在屏幕上。一些HTML编辑器也有相同的问题。