<p> 태그에 <div> 태그를 포함 할 수없는 이유는 무엇입니까? 이것은 잘못되었습니다. <p> <div>some words</div> </p> 첫 번째

내가 아는 한 이것은 옳습니다.

<div>
  <p>some words</p>
</div>

그러나 이것은 잘못되었습니다.

<p>
  <div>some words</div>
</p>

첫 번째 는 W3C 유효성 검사기 (XHTML 1.0)를 통과 할 수 있지만 두 번째는 통과 할 수 없습니다. 아무도 두 번째 코드와 같은 코드를 작성하지 않습니다. 이유를 알고 싶어요

그리고 다른 태그의 격리 관계는 어떻습니까?



답변

허용 된 격리 관계를 찾을 수있는 권위있는 장소는 HTML 사양입니다. 예를 들어 http://www.w3.org/TR/html4/sgml/dtd.html을 참조하십시오 . 어떤 요소가 블록 요소이고 어떤 요소가 인라인인지 지정합니다. 해당 목록을 보려면 “HTML 컨텐츠 모델”로 표시된 섹션을 검색하십시오.

P 요소의 경우 P 요소에 인라인 요소 만 포함 할 수 있음을 나타내는 다음을 지정합니다.

<!ELEMENT P - O (%inline;)*            -- paragraph -->

이것은 http://www.w3.org/TR/html401/struct/text.html#h-9.3.1 과 일치 합니다. P 요소는 “블록 자체 요소 (P 자체 포함)”를 포함 할 수 없습니다.


답변

즉, 여는 태그가 자동으로 요소를 닫으 므로 DOM에서 <div>요소 를 배치 할 수 없습니다 .<p><div><p>


답변

HTML5에 따르면, 콘텐츠 모델div요소는 유동 콘텐츠

문서 및 응용 프로그램 본문에 사용되는 대부분의 요소는 흐름 내용으로 분류됩니다.

여기에는 흐름 내용 이 예상 되는 경우 에만 사용할 수p 있는 요소 가 포함됩니다.

따라서 div요소에는 요소가 포함될 수 있습니다 p.


그러나 요소 의 컨텐츠 모델컨텐츠 컨텐츠p

문구 내용은 문서의 텍스트 및 단락 내 수준에서 해당 텍스트를 표시하는 요소입니다. 의 실행 내용 같이 분석 형태의 단락을 .

여기에는 흐름 내용 이 예상 되는 경우 에만 사용할 수div 있는 요소 가 포함되지 않습니다 .

따라서 p요소는 요소를 포함 할 수 없습니다 div.

요소 바로 뒤에 요소가 있을 때 요소 의 끝 태그p생략 할 수 있으므로 다음과 같습니다.pdiv

<p>
  <div>some words</div>
</p>

로 파싱

<p></p>
<div>some words</div>
</p>

마지막 </p>은 오류입니다.


답변

X HTML 이후에 규칙이 변경되었으며 이제는 XML과 HTML의 규칙이 혼합되어 있으므로 두 번째 접근 방식이 잘못되고 W3C 유효성 검사기가 표준 및 규칙에 따라 올바른 것을 수락합니다.


답변

때문에 div태그는보다 우선 순위가 p태그를. p반면 태그 단락 태그를 나타내는 div태그는 문서의 태그를 나타낸다.

문서 태그에 여러 단락을 쓸 수 있지만 단락에 문서를 쓸 수는 없습니다. DOC 파일과 동일합니다.