Ol / ul <p> içinde mi yoksa dışında mı olmalı?


292

Hangisi bu ikisi arasında standart uyumludur?

<p>Text text text ...
    <ol>
        <li>First element</li>
    </ol>
</p>
<p>
    Other text text ...
</p>

VEYA

<p>
    Text text text ...
</p>
<ol>
    <li>First element</li>
</ol>
<p>
    Other text text ...
</p>

40
@oded: bağlam önemli mi?
dinamik

Yanıtlar:


422

Kısa cevap, olelemanların içinde yasal olarak izin verilmemesidir p.

Nedenini görmek için spesifikasyona gidelim ! HTML spesifikasyonu ile rahat edebiliyorsanız, sorularınızın ve meraklarınızın çoğuna cevap verecektir. olA'nın içinde yaşayabilir mi bilmek istiyorsunuz p. Yani…

4.5.1 pEleman :

Kategoriler: Akış içeriği , Ele gelen içerik .
İçerik modeli: İfade içeriği .


4.5.5 olEleman :

Kategoriler: Akış içeriği .
İçerik modeli : Sıfır veya daha fazla li ve komut dosyası destekleyici öğe.

İlk bölüm söylüyor pelemanları sadece içerebilir phrasing içeriği (gibi “satır içi” öğeler olan spanve strong).

İkinci bölüm, ols'nin akış içeriği olduğunu ( pve gibi "blok" öğeler) söylüyor div. Böylece olamaz bir iç kullanılmalıdır p.


ols ve diğerleri flow contentaşağıdaki gibi bazı elementlerde kullanılabilir div:

4.5.13 divEleman :

Kategoriler: Akış içeriği , Ele gelen içerik .
İçerik modeli: Akış içeriği .


9
@link: Evet, w3.org biraz teknik. Yine de, ne zaman ve ne zaman anladıysanız neyin doğru olduğu konusunda şüphe yoktur.
nyson

5
@Sid spec açıklayan ve bazı terimleri kesinlikle yararlı olduğunu düşünüyorum. Biraz daha ileri giderse harika bir cevap olurdu. Ayrıca soruyu açıkça cevaplayabilir :). Bunun için bir düzenleme ekledim.
studgeek

1
okumak korkunç mu? sanmıyorum, gidin 4.4.1 The p element, yazar bile hakkında konuşmak ya fantastic sentencesda böyle bir şey
Jaime Hablutzel

1
@dinamik Daha kolay okunabilir belgeler için her zaman MDN'nin HTML referansına giderim .
Bonk

1
@AaronLS Tür! Bir tarayıcı size HTML'yi geri verdiğinde (örneğin, geliştirici araçlarında veya kaynağından .innerHTML), öğe ağacından yeniden oluşturulur. Bu nedenle Chrome, HTML'yi orijinal HTML'den geçerli bir ağaç oluşturmaktan sonra o ağaçtan yeni HTML oluşturmak kadar ayarlamamaktadır.
s4y

40

İkinci. Birincisi geçersiz.

  • Paragraf bir liste içeremez.
  • Bu paragraf tamamen tek bir liste öğesinde bulunmadıkça, liste paragraf içeremez.

Bir tarayıcı bu şekilde çalışacaktır:

<p>tetxtextextete 
<!-- Start of paragraph -->
<ol>
<!-- Start of ordered list. Paragraphs cannot contain lists. Insert </p> -->
<li>first element</li></ol>
<!-- A list item element. End of list -->
</p>
<!-- End of paragraph, but not inside paragraph, discard this tag to recover from the error -->
<p>other textetxet</p>
<!-- Another paragraph -->


7

aslında sadece satır içi öğelerin içine koymalısınız p, bu durumda sizin durumunuz oldaha iyi


2
Bu, @David Dorward'ın hoşunuza gitmeyen yanıtı ile aynı cevaptır.
ceejayoz

5
<p>tetxetextex</p>
<ol><li>first element</li></ol>
<p>other textetxeettx</p>

Çünkü her ikisi de <p>ve <ol>blok olarak işlenen elemanlardır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.