把行內(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元素必須在ul或ol中,或者ul或ol元素中必須包含至少一個li子元素;blockquote可以包含段落元素,但段落元素不能包含blockquote。
儘管瀏覽器可以顯示違反結構規則的文件,但解析結果可能會大相徑庭。而這類錯誤也會嚴重干擾編輯器或其他試圖處理HTML的非瀏覽器工具。比如,WordPress以意想不到的方式重寫標記,駛入修復blockquote跟段落的巢狀問題。
在找不到一起的段落或塊級元素時,瀏覽器和其他工具會猜測它們應該如何處理插入的額外內容來修復。但它們的猜測並不總是正確的,並且不能保持一致。這會導致跨瀏覽器的
HTML頁面的主體部分包含以下幾類元素和文字:
段落:
p和pre
塊級元素:
address、blockquote、center、dir、div、dl、fieldset、form、h1、h2、h3、h4、h5、h6、hr、
noscript、ol、table、ul
行內元素:
a、abbr、acronym、b、bdo、br、cite、code、dfn、em、img、input、label、q、samp、select、
span、strong、sub、sup、textarea、var
雜項元素:
button
取決於上下文的元素:li、dt、dd、tr、th、td、tbody、input、select
原始文字,也稱為PCDATA
block元素的特點:
總是另起一行開始;
高度,行高以及頂、底邊距都可控制;
寬度預設是它所在容器的100%,除非設定一個寬度。
塊元素表現為一個從前後元素中分離出來的顯著部分。在視覺呈現上,這種分離通常會使硬換行的形式。在嚴格型XHTML中,頁面的主體部分只能包含塊級元素。
大多數塊元素可以巢狀,也就是說,一個塊元素能包含另外一個塊元素。但有兩個例外需要注意:p和pre。
p元素表現問段落。但跟隨其他元素不同,p不可以包含另外一個p元素或其他例如blockquote等塊元素。它只能包含純文字或其他行內元素,從某種意義上說,它是一個很低階的塊元素。
pre元素也是如此,它只能包含行內元素,而不是其他塊元素。
inline元素的特點:
和其它元素都在一行上;
高度,行高以及頂、底邊距不可改變;
寬度就是它所容納的文字或圖片的寬度,不可改變。
行內元素如span,strong,img和a可以包含在塊內。在過渡型XHTML中,這種快可能是隱式的,但在嚴格型XHTML中它必須是顯示的塊級元素。行內元素通常可以包含其他行內元素,但不可以包含塊元素。行內元素可能會誇行,但只要當前行還有地方,它們就不能換行。
一些雜項元素例如object和ins既可以當做行內元素也可以當做塊元素使用,但如果它們作為行內元素使用,則不能包含塊元素。
一些上下文相關的元素只能出現在相應的父元素內。例如li元素必須是ul或ol的子元素,而在其他任何地方是無效的。td元素必須是tr元素的子元素,而tr又必須是table或者tbody元素的子元素。這些元素不能再它們定義的父元素之外出現。