1. 程式人生 > >把行內(inline)元素放到塊(block)元素中

把行內(inline)元素放到塊(block)元素中

給所有的行內元素加上塊級的父元素,並在段落中刪除所有的塊級元素。

Do you likethis picture?<br />

<imgsrc="file.gif" alt="Goose" width="100"height="100" />

I think it'sreally <em>neat</em>.<br />

-->

<p>Doyou like this picture?</p>

<div>

<imgsrc="file.gif" alt="Goose" width="100"height="100" />

 </div>

<p>Ithink it's really <em>neat</em>.</p>

瀏覽器和其他程式處理XHTML需要依賴元素間的正確位置,比如li元素必須在ulol中,或者ulol元素中必須包含至少一個li子元素;blockquote可以包含段落元素,但段落元素不能包含blockquote

儘管瀏覽器可以顯示違反結構規則的文件,但解析結果可能會大相徑庭。而這類錯誤也會嚴重干擾編輯器或其他試圖處理HTML的非瀏覽器工具。比如,WordPress以意想不到的方式重寫標記,駛入修復blockquote跟段落的巢狀問題。

在找不到一起的段落或塊級元素時,瀏覽器和其他工具會猜測它們應該如何處理插入的額外內容來修復。但它們的猜測並不總是正確的,並且不能保持一致。這會導致跨瀏覽器的

CSSJavaScript出現問題。正確巢狀元素有助於瀏覽器和工具處理文件的一致性。

HTML頁面的主體部分包含以下幾類元素和文字:

段落:

ppre

塊級元素:

addressblockquotecenterdirdivdlfieldsetformh1h2h3h4h5h6hr

noscriptoltableul

行內元素:

aabbracronymbbdobrcitecodedfnemimginputlabelqsampselect

spanstrongsubsuptextareavar

雜項元素:

button

deliframeinsmapobjectscript

取決於上下文的元素:lidtddtrthtdtbodyinputselect

原始文字,也稱為PCDATA

block元素的特點

總是另起一行開始;

高度,行高以及頂、底邊距都可控制;

寬度預設是它所在容器的100%,除非設定一個寬度。

塊元素表現為一個從前後元素中分離出來的顯著部分。在視覺呈現上,這種分離通常會使硬換行的形式。在嚴格型XHTML中,頁面的主體部分只能包含塊級元素。

大多數塊元素可以巢狀,也就是說,一個塊元素能包含另外一個塊元素。但有兩個例外需要注意:ppre

p元素表現問段落。但跟隨其他元素不同,p不可以包含另外一個p元素或其他例如blockquote等塊元素。它只能包含純文字或其他行內元素,從某種意義上說,它是一個很低階的塊元素。

pre元素也是如此,它只能包含行內元素,而不是其他塊元素。

inline元素的特點:

和其它元素都在一行上;

高度,行高以及頂、底邊距不可改變;

寬度就是它所容納的文字或圖片的寬度,不可改變。

行內元素如spanstrongimga可以包含在塊內。在過渡型XHTML中,這種快可能是隱式的,但在嚴格型XHTML中它必須是顯示的塊級元素。行內元素通常可以包含其他行內元素,但不可以包含塊元素。行內元素可能會誇行,但只要當前行還有地方,它們就不能換行。

一些雜項元素例如objectins既可以當做行內元素也可以當做塊元素使用,但如果它們作為行內元素使用,則不能包含塊元素。

一些上下文相關的元素只能出現在相應的父元素內。例如li元素必須是ulol的子元素,而在其他任何地方是無效的。td元素必須是tr元素的子元素,而tr又必須是table或者tbody元素的子元素。這些元素不能再它們定義的父元素之外出現。