Tanto quanto eu sei, isso está certo:
<div>
<p>some words</p>
</div>
Mas isso está errado:
<p>
<div>some words</div>
</p>
O primeiro pode passar no validador W3C (XHTML 1.0), mas o segundo não. Eu sei que ninguém escreverá código como o segundo. Eu só quero saber o porquê.
E o relacionamento de contenção de outras tags?
<p>
é um elemento no nível do bloco e é (supostamente) usado para exibir texto, ele não permitirá outros elementos no nível do bloco, mas apenas elementos inline como<span>
e<strong>
.p
é um elemento no nível do bloco não tem nada a ver com isso.div
também é um e permite outros blocos.Respostas:
Um local autorizado para procurar relações de contenção permitidas é a especificação HTML. Veja, por exemplo, http://www.w3.org/TR/html4/sgml/dtd.html . Ele especifica quais elementos são elementos de bloco e quais estão em linha. Para essas listas, procure a seção marcada "modelos de conteúdo HTML".
Para o elemento P, ele especifica o seguinte, que indica que os elementos P só podem conter elementos embutidos.
Isso é consistente com http://www.w3.org/TR/html401/struct/text.html#h-9.3.1 , que diz que o elemento P "não pode conter elementos em nível de bloco (incluindo o próprio P)".
fonte
%inline
bit acima. Veja também a resposta de Oriol.Em resumo, é impossível colocar um
<div>
elemento dentro de um<p>
no DOM porque a<div>
tag de abertura fechará o<p>
elemento automaticamente .fonte
div
elemento dentro de ump
no DOM , por exemplomyP.appendChild(myDiv)
. Mas um analisador de HTML não fará isso.De acordo com o HTML5, o modelo de conteúdo dos
div
elementos é o conteúdo do fluxoIsso inclui
p
elementos, que podem ser usados apenas onde o conteúdo do fluxo é esperado.Portanto,
div
elementos podem conterp
elementos.No entanto, o modelo de conteúdo dos
p
elementos é o conteúdo de frasesIsso não inclui
div
elementos, que podem ser usados apenas onde o conteúdo do fluxo é esperado.Portanto, os
p
elementos não podem conterdiv
elementos.Como a tag final dos
p
elementos pode ser omitida quando op
elemento é imediatamente seguido por umdiv
elemento (entre outros), o seguinteé analisado como
e o último
</p>
é um erro.fonte
div as inline in CSS
seu uso, como nova estrutura analisada,<p>Text</p> <div>some words</div> <p></p>
meu entendimento está correto?Após o X HTML, as convenções foram alteradas e agora são uma mistura de convenções de XML e HTML; é por isso que a segunda abordagem está errada e o validador W3C aceita as coisas corretas, de acordo com os padrões e convenções.
fonte
Porque a
div
tag tem precedência mais alta que ap
tag. Ap
marca representa uma marca de parágrafo, enquanto adiv
marca representa uma marca de documento.Você pode escrever muitos parágrafos em uma tag de documento, mas não pode escrever um documento em um parágrafo. O mesmo que um arquivo DOC.
fonte
<doc>
: D