O ile wiem, to prawda:
<div>
<p>some words</p>
</div>
Ale to jest złe:
<p>
<div>some words</div>
</p>
Pierwsza z nich może przejść przez walidator W3C (XHTML 1.0), ale druga nie. Wiem, że nikt nie napisze takiego kodu jak ten drugi. Chcę tylko wiedzieć, dlaczego.
A co z relacjami zawierania innych tagów?
<p>
jest to element blokowy i jest (powinien być) używany do wyświetlania tekstu, nie zezwala na umieszczanie w nim innych elementów blokowych, ale tylko elementy wbudowane, takie jak<span>
i<strong>
.p
jest element blokowy, który nie ma z tym nic wspólnego.div
jest również jednym i pozwala na inne bloki.Odpowiedzi:
Autorytatywnym miejscem do wyszukiwania dozwolonych relacji zawierania jest specyfikacja HTML. Zobacz na przykład http://www.w3.org/TR/html4/sgml/dtd.html . Określa, które elementy są elementami blokowymi, a które wstawiane. W przypadku tych list wyszukaj sekcję oznaczoną „Modele treści HTML”.
W przypadku elementu P określa to, co następuje, co oznacza, że elementy P mogą zawierać tylko elementy wbudowane.
Jest to zgodne z http://www.w3.org/TR/html401/struct/text.html#h-9.3.1 , który mówi, że element P „nie może zawierać elementów blokowych (w tym samego P)”.
źródło
%inline
fragment powyżej. Zobacz także odpowiedź Oriol.Krótko mówiąc, niemożliwe jest umieszczenie
<div>
elementu wewnątrz a<p>
w DOM, ponieważ otwierający<div>
tag automatycznie zamknie<p>
element.źródło
div
elementu Wewnątrzp
w DOM , npmyP.appendChild(myDiv)
. Ale parser HTML tego nie zrobi.Zgodnie z HTML5, model zawartości z
div
elementów jest zawartość przepływuŻe zawiera
p
elementy, które mogą być wykorzystane wyłącznie w których zawartość przepływu oczekuje.Dlatego
div
elementy mogą zawieraćp
elementy.Jednak model zawartości z
p
elementów jest zawartość frazowaniaKtóry nie zawiera
div
elementów, które mogą być wykorzystane wyłącznie w których zawartość przepływu oczekuje.Dlatego
p
elementy nie mogą zawieraćdiv
elementów.Ponieważ znacznik końca z
p
elementów może być pominięty, gdyp
element jest bezpośrednio za pomocądiv
elementu (między innymi), Następującyjest analizowany jako
a ostatnia
</p>
to błąd.źródło
div as inline in CSS
jest to bezużyteczne, ponieważ nowa przeanalizowana struktura jest<p>Text</p> <div>some words</div> <p></p>
prawidłowa?Po X HTML konwencja została zmieniona i teraz jest to mieszanka konwencji XML i HTML, dlatego drugie podejście jest błędne i walidator W3C akceptuje rzeczy poprawne, zgodne ze standardami i konwencjami.
źródło
Ponieważ
div
tag ma wyższy priorytet niżp
tag.p
Tag reprezentuje znacznik akapitu natomiastdiv
tag reprezentuje znacznik dokumentu.Możesz napisać wiele akapitów w znaczniku dokumentu, ale nie możesz napisać dokumentu w akapicie. To samo, co plik DOC.
źródło
<doc>
: D