Sejauh yang saya tahu, ini benar:
<div>
<p>some words</p>
</div>
Tapi ini salah:
<p>
<div>some words</div>
</p>
Yang pertama bisa melewati validator W3C (XHTML 1.0), tetapi yang kedua tidak bisa. Saya tahu tidak ada yang akan menulis kode seperti yang kedua. Aku hanya ingin tahu kenapa.
Dan bagaimana dengan hubungan penahanan tag lain?
<p>
adalah elemen level blok, dan (seharusnya) digunakan untuk menampilkan teks, itu tidak akan mengizinkan elemen level blok lain di dalamnya, tetapi hanya yang inline seperti<span>
dan<strong>
.p
elemen level blok tidak ada hubungannya dengan itu.div
juga satu dan memungkinkan blok lainnya.Jawaban:
Tempat yang berwenang untuk mencari hubungan penahanan yang diizinkan adalah spesifikasi HTML. Lihat, misalnya, http://www.w3.org/TR/html4/sgml/dtd.html . Ini menentukan elemen mana yang merupakan elemen blok dan mana yang sebaris. Untuk daftar tersebut, cari bagian yang ditandai "model konten HTML".
Untuk elemen P, ia menetapkan berikut ini, yang menunjukkan bahwa elemen P hanya diperbolehkan mengandung elemen sebaris.
Ini konsisten dengan http://www.w3.org/TR/html401/struct/text.html#h-9.3.1 , yang mengatakan bahwa elemen P "tidak dapat mengandung elemen level blok (termasuk P sendiri)."
sumber
%inline
bit di atas. Lihat juga jawaban Oriol.Singkatnya, tidak mungkin untuk menempatkan
<div>
elemen di dalam a<p>
di DOM karena<div>
tag pembuka akan secara otomatis menutup<p>
elemen.sumber
div
elemen di dalam ap
di DOM , misalnyamyP.appendChild(myDiv)
. Tapi pengurai HTML tidak akan melakukannya.Menurut HTML5, model konten dari
div
elemen adalah konten aliranItu termasuk
p
elemen, yang hanya dapat digunakan di mana konten mengalir diharapkan.Karena itu,
div
elemen dapat mengandungp
elemen.Namun, model konten dari
p
elemen adalah konten kalimatItu tidak termasuk
div
elemen, yang hanya dapat digunakan di mana konten mengalir diharapkan.Karenanya,
p
elemen tidak dapat mengandungdiv
elemen.Sejak tag akhir dari
p
elemen dapat dihilangkan ketikap
elemen segera diikuti olehdiv
elemen (antara lain), berikut inidiuraikan sebagai
dan yang terakhir
</p>
adalah kesalahan.sumber
div as inline in CSS
tidak ada gunanya, karena struktur parsing baru adalah<p>Text</p> <div>some words</div> <p></p>
apakah pemahaman saya benar?Setelah X HTML, konvensi telah diubah, dan sekarang ini merupakan campuran dari konvensi XML dan HTML, jadi itu sebabnya pendekatan kedua salah dan validator W3C menerima hal-hal yang benar yang sesuai dengan standar dan konvensi.
sumber
Karena
div
tag memiliki prioritas lebih tinggi daripadap
tag. Thep
tag merupakan tag paragraf sedangkandiv
tag merupakan tag dokumen.Anda dapat menulis banyak paragraf dalam tag dokumen, tetapi Anda tidak bisa menulis dokumen dalam paragraf. Sama seperti file DOC.
sumber
<doc>
: D