【HTML】'ul'元素永遠不能是'p' 'span'元素的子元素

 為什麼我們永遠不能將ul元素作為p元素的子元素?

我用以下程式碼建立了一個網頁

<p> some text
<ul>
<li>...</li>
<li>...</li>
.
.
.
</ul>
</p>

這裡,ul元素是p元素的子元素。但是,在所有主要瀏覽器(Chrome、Firefox和Internet Explorer-所有最新版本)中,它的解釋如下
<p> some text</p>
<ul>
<li>...</li>
<li>...</li>
.
.
.
</ul>
<p></p>

我通過右鍵單擊ul元素(在chrome中)並選擇Inspect元素選項來檢查它。我在Chrome中看到過,但其他兩個瀏覽器的行為也一樣(CSS選擇器“p-ul”工作得不好)。
為什麼會這樣?是否存在瀏覽器發生此類更改的一般情況?

解決辦法

請檢查HTML specification,它清楚地說明禁止將列表放入段落元素中,並給出一些可執行操作的示例:
列表元素(尤其是ol和ul元素)不能是p元素的子元素。因此,當一個句子包含一個專案符號列表時,人們可能會想知道應該如何標記它。
例如,這個奇妙的句子中有與
比光速旅行更快的巫師,以及
心靈感應,並在下面進一步討論。
解決方案是認識到,用HTML術語來說,段落不是
邏輯概念,但結構概念。在上面這個奇妙的例子中,
本規範實際上定義了五個段落:
列表前一個,每個專案符號一個,列表後一個。
因此,上述示例的標記可以是:

  <p>For instance, this fantastic sentence has bullets relating to</p> 
   <ul>
       <li>wizards,  
       <li>faster-than-light travel, and  
       <li>telepathy, 
   </ul>
   <p>and is further discussed below.</p>

作者希望
方便的樣式,這樣的“邏輯”段落由多個
“結構化”段落可以使用DIV元素而不是P元素
元素。
因此,例如,上述示例可以成為以下示例:
   <div>For instance, this fantastic sentence has bullets relating to
   <ul>
     <li>wizards,  
     <li>faster-than-light travel, and  
     <li>telepathy,
   </ul> 
   and is further discussed below.</div> 

這個例子仍然有
五個結構段落,但現在作者只需使用
而不必分別考慮示例的每個部分。


留言

熱門文章