澳门新葡萄京官网首页span 可以套 span 吗?a 可以套 span 吗?

以上代码不论 DOCTYPE 是 DTD XHTML 1.0 Transitional 还是 DTD XHTML 1.0
Strict,都是能够通过验证的,说明 span 可以套 span,a 也可以套
span,他们默认都是内联元素。

南宮瑞揚2011-02-19 21:46发表于:(x)html&CSS@前端|*Tags:html***

块级元素和内嵌元素的区别:

· 块级元素
一般用来搭建网站架构、布局、承载内容……像这些大体力活都属于块级元素的,它包括以下这些标签:

div、ul、li、dl、dt、dd、h1~h6、p、address……

 

· 内嵌元素
一般用在网站内容之中的某些细节或部位,用以“强调、区分样式、上标、下标、锚点”等等,下面这些标签都属于内嵌元素:

a、span、strong、sub、sup、img……

 

· 块元素 和 内嵌元素 是可以互相转换的,转换的代码如下:

display: block; /* 转成块元素 */

display: inline; /* 转成内嵌元素 */

· 块元素 和 内嵌元素 对于 CSS
的调用规则是不一样的(这篇文章讨论的是标签嵌套,所以对这个知识点不展开说明)。

 

简单认识了块元素和内嵌元素以后,下面就可以罗列 XHTML 标签的嵌套规则了:

1.
块元素可以包含内联元素或某些块元素,但内联元素却不能包含块元素,它只能包含其它的内联元素:

<div><h1></h1><p></p></div> —— 对
<a href=”#”><span></span></a> —— 对
<span><div></div></span> —— 错

  1. 块级元素不能放在<p>里面:

<p><ol><li></li></ol></p> —— 错

<p><div></div></p> —— 错

3.
有几个特殊的块级元素只能包含内嵌元素,不能再包含块级元素,这几个特殊的标签是:

h1、h2、h3、h4、h5、h6、p、dt。

  1. li 内可以包含 div 标签 ——
    这一条其实不必单独列出来的,但是网上许多人对此有些疑惑,就在这里略加说明:

li 和 div 标签都是装载内容的容器,地位平等,没有级别之分(例如:h1、h2
这样森严的等级制度^_^),要知道,li 标签连它的父级 ul 或者是 ol
都可以容纳的,为什么有人会觉得 li 偏偏容纳不下一个 div 呢?别把 li
看得那么小气嘛,别看 li 长得挺瘦小,其实 li 的胸襟很大滴……

  1. 块级元素与块级元素并列、内嵌元素与内嵌元素并列:

<div><h2></h2><p></p></div> —— 对
<div><a
href=”#”></a><span></span></div> —— 对

<div><h2></h2><span></span></div> ——

 

 

<a>标签不能包含其他<a>标签

<pre>标签不能包含<img>,<object>,<big>,<samll>,<sub>和<sup>标签

<button>标签不能包含<input>,<select>,<textarea>,<label>,<button>,<form>,<fieldset>,<iframe>和<isindex>标签

<label>标签不能包含其他<label>标签

<form>标签不能包含其他<form>标签

 

 

澳门新葡萄京官网首页 1

转载请注明:南宫瑞扬

  XHTML
的标签有许多:div、ul、li、dl、dt、dd、h1~h6、p、a、addressa、span、
strong……我们在运用这些标签搭建页面结构的时候,是可以将它们无限嵌套的,但是,嵌套也需要有一定规则,不能任由网站设计师的个人习惯胡乱嵌套——XHTML
必竟不是 XML。

<p><span><span>span</span></span></p>
<p><a
href=”;

JunChen Wu / 标准

下面是一份在 HTML 4 Strict 和 XHTML 1.0 Strict
下必须遵守的标签嵌套规则,比如你不能在 <a> 里面再嵌入一个 <a> 这样的约定。

说明:

  • 为了方便读者阅读,本文中的标签使用了大写(根据 XHTML
    的规则,元素名必须小写,比如 <html> 而不应是 <HTML>
  • 小写的单词表明一组或一系列 HTML 标签
  • 每一项条目(标签)后都跟随一组标签列表,如果没有这个列表,那么表明该条目(标签)内部不允许包含任何标签。这意味着该条目内部只能包含纯文本内容(#PCDATA,见下文)。如果注明
    (empty),这意味着该条目内部不允许包含任何形式的内容。对于
    flow,inline,block,OBJECT 和
    BODY,其内部允许包含的内容在文中会单独给出。
  • #PCDATA 的意思是“parsed
    character data”,即纯文本内容(不包括任何 HTML
    标签,但是转义内容可以存在,比如 &auml;和 &#228;
  • CDATA 的意思是“character
    data”,这意味着不包括转义内容的纯文本内容,详细内容可以参考CDATA
    Confusion
  • excluding … 意即不得直接或者间接的包含所列的元素

澳门新葡萄京官网首页 2

注1. 以上内容基于 [HTML 4.01 Specification] 的 Strict
DTD。JunChen 翻译自 Allowed
nesting of elements in HTML 4 Strict (and XHTML 1.0
Strict)

注2. 对于 XHTML
1.0,基本上一致,不同点如下:

  • 对于 <script> 和 <style> 的内容,在 HTML 4 里是 CDATA 而在
    XHTML 里是 #PCDATA
  • 在 XHTML 中,<table> 标签后可以紧跟一个 <tr>,而在 HTML 4.01
    里,不允许这样,不过 <tbody> 标签又是可以省略的。意思就是说,如果代码中的 <table> 后紧跟 <tr>,对于
    HTML 4.01,会隐性的生成一个 <tbody> 标签,而在 XHTML
    里面就没有。这会影响到样式表使用 tbody 作为选择器。

Warm Regards,
J.

<div><h2></h2><p></p></div> —— 对
<div><a
href=”#”></a><span></span></div> —— 对

顺便说一句,在 Strict 中 a、span 等不能直接放在 body 下面,应该先在 body
下放 p、div 等块级元素。

评论(17)

yyq123 – 2007年01月11日 16:05

好东西,长久以来的疑惑终于有标准了!

沈蚊 – 2007年01月11日 17:59

这个图实在太帅了!

JunChen – 2007年01月11日 18:09

匆忙翻译,还未来得及详细思考。其实很多都可以通过validator.w3.org来试验出来。本图仅作为开发过程中的参考而已。:)

david – 2007年01月11日 21:31

酷!有时还真没在意,所以经常都乱套。

JunChen – 2007年01月11日 22:25

这份文档不仅仅告诉我们 A 能包含什么,也告诉我们 A
不能包含什么(直接或间接)。比如 body 下不能直接跟 img。

mesher – 2007年01月17日 16:08

我在经典里给你回帖了,希望和你交流关于网页标准方面的知识,联系mail:mesher100@gmail.com
也是gtalk的帐号。

TommyFan – 2007年02月27日 13:29

> JunChen 说:

> 这份文档不仅仅告诉我们 A 能包含什么,也告诉我们 A
不能包含什么(直接或间接)。比如 body 下不能直接跟 img。

图上写着body可以直接跟block元素.应该可以直接跟img吧~!

JunChen – 2007年02月27日 14:25

@TommyFan: 注意有层级限制,不能直接跟。

Jsti – 2007年02月28日 13:52

>图上写着body可以直接跟block元素.应该可以直接跟img吧~!
img不是Block Element啊~~

水晶烟灰缸 – 2007年03月13日 23:54

非常感谢。
我就是遇到 p里面包括div 标签 提示 div不能放在p里面。

删除密码 – 2007年04月06日 16:51

总算有了一定的标准,收藏了

加减乘除888 – 2008年07月12日 11:48

请教JunChen,上面列表里的flow是什么意思?

JunChen – 2008年07月12日 12:37

@加减乘除888 文档流,包括inline和block

omiga – 2008年07月31日
13:49

这个表是抛开了web标准的?

flydong.com – 2008年10月14日 21:32

非常感谢, 终于让找到了

宇义 – 2008年12月17日 08:59

应该是有错误,LABEL excluding enclosed LABEL??

bohetang – 2009年10月23日
14:52

能不能翻译过来,再具体点啊。水平不行啊。

 

 

附:

浏览器的呈现效果:

html标签的嵌套

  提到 XHTML 标签的嵌套规则,我们先得知道有这么二类 XHTML
标签,一类叫做 块级元素(block),一类叫做
内嵌元素(inline,也有许多人叫它:内联、行内、线级等)。

<div style=”border: 1px solid red;”>div1</div>
<div style=”border: 1px solid red;”>div1</div>

  · 块元素 和 内嵌元素 是可以互相转换的,转换的代码如下:

  3.
有几个特殊的块级元素只能包含内嵌元素,不能再包含块级元素,这几个特殊的标签是:

<p><ol><li></li></ol></p> —— 错

  · 内嵌元素
一般用在网站内容之中的某些细节或部位,用以“强调、区分样式、上标、下标、锚点”等等,下面这些标签都属于内嵌元素:

<div><h2></h2><span></span></div> ——

  简单认识了块元素和内嵌元素以后,下面就可以罗列 XHTML
标签的嵌套规则
了:

<p><div></div></p> —— 错

  4. li 内可以包含 div 标签
—— 这一条其实不必单独列出来的,但是网上许多人对此有些疑惑,就在这里略加说明:

  先总结到这里,以后如有新的发现,随时更新。

  再把下面二行代码也放进 body 标签里:

  页面呈现的这二个 div
占据了二行空间,除非让它们浮动(float)或是进行其他设置,否则谁都不挨着谁,它们都很霸道的占领属于自己的那一行空间——但凡看到某个标签有此现象,你就可以叫它:块级元素(block)

块级元素和内嵌元素的区别:

display: inline; /* 转成内嵌元素 */

  · 块级元素
一般用来搭建网站架构、布局、承载内容……像这些大体力活都属于块级元素的,它包括以下这些标签:

h1、h2、h3、h4、h5、h6、p、dt。

div1

<div><h1></h1><p></p></div> —— 对
<a href=”#”><span></span></a> —— 对
<span><div></div></span> —— 错

  li 和 div
标签都是装载内容的容器,地位平等,没有级别之分(例如:h1、h2
这样森严的等级制度^_^),要知道,li 标签连它的父级 ul 或者是 ol
都可以容纳的,为什么有人会觉得 li 偏偏容纳不下一个 div 呢?别把 li
看得那么小气嘛,别看 li 长得挺瘦小,其实 li 的胸襟很大滴……

  块级元素 和 内嵌元素 的划分标准很简单,请把下面二行代码放进 body
标签里:

div1

display: block; /* 转成块元素 */

div、ul、li、dl、dt、dd、h1~h6、p、address……

span1 span1

  这一次,两个 span
并列在一行,它们之间睦邻友好、亲切和谐……像这样的标签行为,我们可以称它们为:内嵌元素(inline);

  在 XHTML 的语言里,我们都知道:ul 标签包含着 li、dl 标签包含着 dt 和
dd——这些固定标签的嵌套规则十分明确。但是,还有许多标签是独立的,它们没有被捆绑在一起,比如
h1、div、p……那么这些标签的嵌套规则到底是怎样的?今天就来说说这个话题。

a、span、strong、sub、sup、img……

  2. 块级元素不能放在<p>里面

  1.
块元素可以包含内联元素或某些块元素,但内联元素却不能包含块元素,它只能包含其它的内联元素

  · 块元素 和 内嵌元素 对于 CSS
调用规则是不一样的(这篇文章讨论的是标签嵌套,所以对这个知识点不展开说明)。

  浏览器的呈现效果:

<span style=”border: 1px solid red;”>span1</span>
<span style=”border: 1px solid red;”>span2</span>

  5. 块级元素与块级元素并列、内嵌元素与内嵌元素并列:

发表评论

电子邮件地址不会被公开。 必填项已用*标注