<p>와 <div>의 차이점은 무엇입니까?


188

<p>와 <div>의 차이점은 무엇입니까?

그것들을 서로 바꿔서 사용할 수 있습니까? 응용 프로그램은 무엇입니까?


32
유효한 HTML / XHTML에서 과도하거나 엄격하면 <p>를 다른 <p> 안에 중첩 할 수 없으므로 <div>와 <p>는 서로 바뀌지 않습니다.
Byran Zaugg

3
바이런-당신은이 "의미론적인"답변으로 본질적인 문제에 부딪쳤다. 문제는 HTML이 인위적으로 <p>를 제한하여 다르게 동작한다는 것입니다. 그것들이 단지 블록 요소와 의미 적 의미라면 괜찮을 것입니다. 그러나 왜 단락에 그림을 삽입하지 못합니까?
dkretz

2
@ 117700 허용되는 답변 변경을 고려 했습니까?
Karl Richter

명심는 <div></div>열고 닫는 태그를 필요로 <p>하지 특정 상황에서 수행
마크 Schultheiss

답변:


-26

이전 코드는

<p class='item'><span class='name'>*Scrambled eggs on crusty Italian ciabatta and bruschetta tomato</span><span class='price'>$12.50</span></p>

그래서 나는 그것을

<div class='item'><span class='name'>*Scrambled eggs on crusty Italian ciabatta and bruschetta tomato</span><span class='price'>$12.50</span></div>

쉬운 수정이었습니다. 위 코드의 CSS는

.item {
    position: relative;
    border: 1px solid green;
    height: 30px;
}

.item .name {
    position: absolute;
    top: 0px;
    left: 0px;
}

.item .price {
    position: absolute;
    right: 0px;
    bottom: 0px;
}

따라서 div 태그에는 다른 요소가 포함될 수 있습니다. P는 그렇게하도록 강요해서는 안된다.


3
난 당신이 무슨 뜻인지 모르겠어요 “사이트 내”: 어느 사이트? “… 작동시키다”: '작동'이란 무엇입니까? 의도 한 렌더링은 무엇입니까?
Marcel Korpel

4
이것은 나에게 완전히 비논리적으로 들린다. p요소 다른 인라인 요소 ( 구문 요소에 대한 HTML 5 사양 대화 (7.3 참조) )를 포함 span할 수 있으며 그중 많은 요소 중 하나입니다. 또한,이는 OP의 질문에 대한 답변하지 않습니다 : 그것은 차이에 대해 아무것도 말해주지 않습니다 pdiv. 댓글 답장은 어떻게 작동합니까?
Marcel Korpel

@MarcelKorpel 왜 이것이 허용되는 대답입니까? 논쟁의 여지가없고 왜 불일치가 있는지 궁금합니다.
Anshul

3
@Anshul 분명히 OP에 효과가 있었지만 질문에 대답하지 못했습니다. 또한이 답변의 점수를보십시오 : 현재 -16. 모르는 경우 : OP는 답변을 수락 할 수있는 유일한 사람이며 커뮤니티의 모든 사람은 답변에 위 또는 아래로 투표 할 수 있습니다.
Marcel Korpel

늦은 증오 파티에 있지만 : <p>태그는 매우 자주 같은 다른 요소를 포함 <strong>또는 <em>a의 내용 등을 <p>텍스트의 단락을 : 이름이 의미하는 무엇을해야 태그를. 텍스트 단락에는 종종 추가 마크 업이 포함됩니다. 원격으로는 이례적인 것도없고 잘못된 것도 없습니다.
Dave Newton

297

그들은이 의미 론적 차이 - <div>소자는 반면, 데이터의 컨테이너를 묘사하도록 설계 <p>요소는 콘텐츠의 단락을 설명하기 위해 설계된다.

시맨틱은 모든 차이를 만듭니다. HTML은 마크 업 언어로, 마크 업 소비자에게 의미있는 방식으로 컨텐츠를 "마크 업"하도록 설계되었습니다. 대부분의 개발자는 문서의 의미가 기본 스타일이며 브라우저가 이러한 요소에 적용되는 렌더링이라고 생각하지만 그렇지 않습니다.

컨텐츠를 마크 업하도록 선택한 요소는 컨텐츠를 설명 해야합니다. 어떻게 보이는지에 따라 문서를 표시하지 마십시오. 문서를 기반으로 표시하십시오.

일반 컨테이너가 필요한 경우 순전히 레이아웃 목적그런 다음을 사용하십시오 <div>. 콘텐츠 단락을 설명하는 요소가 필요한 경우을 사용하십시오 <p>.

참고 : 그것은 중요 둘 것을 이해 <div>하고 <p>있는 블록 수준 요소 대부분의 브라우저가 비슷한 방식으로 그들을 치료하는 것을 의미는.


내 경험에 따르면 일부 컨텐츠를 다른 컨텐츠와 다르게 레이아웃하려면이 두 가지가 의미 적으로 구별되므로 독립적으로 표시해야합니다. 어쨌든 합니다 . OTOH 의미 적으로 구별 되지 않으면 함께 배치되어야합니다. 두 경우 모두 레이아웃 목적으로 요소를 추가 할 필요가 없습니다. 첫 번째 경우에는 이미 시작해야하고 두 번째 경우에는 레이아웃이 없기 때문입니다. 그러나 다시 한 번 순수 주의자이며 내 사이트는 항상 1995 년의 역화처럼 보입니다.
Jörg W Mittag

5
<p>"컨텐츠 단락" 에 사용하려고 할 때 컨텐츠는 문자와 단어의 형태 여야합니까? <p>이미지와 같은 다른 유형의 컨텐츠를 설명 하는 데 사용 하시겠습니까 ?
drs

1
@drs : <p>에 허용되는 컨텐츠는 "Phrasing content"입니다.이 컨텐츠는 일반 문자 데이터와 혼합 된 구문 요소로 구성됩니다. Btw, 이미지는 문구 요소에 속하므로 <p> 안에서 사용할 수 있습니다. 참고 문헌 : w3.org/TR/html-markup/p.html w3.org/TR/html-markup/common-models.html#common.elem.phrasing . HTH
파올로

2
div로 할 수있는 동안 p를 중첩 할 수 없다는 것을 잊어 버렸습니다. "html에 레이아웃 정보를 포함하지 않음"에 대한 태도는 html 파일의 모양을 방해하지 않으면 서 HTML 파일을 작성할 수 없습니다. div의 순서와 중첩 선택은 항상 영향을 미칩니다. 페이지를 찢고 재구성하는 자바 스크립트를 작성하지 않는 한. 따라서 "일반 컨테이너 사업부를보고 순수하게 레이아웃 목적은 "올바른 표현입니다.
masterxilo

div대신에 대신 사용하려면 어떻게해야 p합니까?
Melab

66

모든 좋은 대답이지만 아직 언급하지 않은 한 가지 차이점이 있습니다. 이것이 브라우저가 기본적으로 렌더링하는 방식입니다. 주요 웹 브라우저는 <p>단락 위와 아래에 여백이 있는 태그를 렌더링합니다 . <div>태그는 전혀 어떤 여백없이 렌더링됩니다.


10
렌더링을 제어하려면 CSS를 사용해야합니다. 브라우저의 현재 기본값에 의존하지 마십시오.
기계 달팽이

15
이 질문은 DIV와 P 태그의 차이점이 무엇인지 물었습니다. CSS 재설정을 사용하지 않는 사람에게는 특히 중요합니다. 특히 브라우저를 하나만 사용하는 사람에게는 분명하지 않을 수 있습니다.
ceejayoz

3
설명해 주셔서 감사합니다. P 태그를 사용하면 텍스트가 맨 위와 맨 아래에 여백으로 나타나기 때문에이 정확한 차이점을 찾고 있었기 때문에 그 공간이 어디에서 왔는지 궁금했습니다. 공간을 제거해야했습니다.
WhatsInAName

@ceejayoz 마진? 우리는 그것을 어떻게 볼 수 있습니까?
JAVA

58

<p> 단락을 나타내며 의미 적 의미가 있습니다.

<div> 단순히 다른 컨텐츠를위한 블록 컨테이너입니다.

안으로 들어갈 수있는 것은 <p>들어갈 수 <div>있지만 그 반대는 사실이 아닙니다. <div>태그는 블록 레벨 요소를 자식으로 가질 수 있습니다.<p>요소는 할 수 없습니다.

Tae HTML DTD를 보라 .

<!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">
<!ENTITY % block
     "P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT |
      BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS">

<!ENTITY % flow "%block; | %inline;">

<!ELEMENT DIV - - (%flow;)*            -- generic language/style container -->
<!ELEMENT P - O (%inline;)*            -- paragraph -->

3
따라서 <p>에 <h1>을 가질 수 없습니까?
Koray Tugay

8

두 요소 사이의 유일한 차이점은 의미론입니다. 기본적으로 두 요소 모두 CSS 규칙을 표시합니다. block (따라서 블록 수준)이 적용됩니다. 더 이상은 없습니다 (일부 경우 약간의 추가 마진 제외). 그러나, 전술 한 바와 같이, 이들은 시맨틱 측면에서 크게 상이하다.

그만큼 <p>그 이름이 어느 정도 알 수 있듯이 요소는, 단락입니다. 그러므로,<p> 단락 텍스트 블록을 만들 때 사용해야합니다.

<div>이 의미 론적으로 의미가 그리고 당신은 블록 - 필요할 수 있습니다 일반적으로 아무것도 사용할 수 있기 때문에 가장 일반적으로 사람들은 레이아웃 내에서 사용 - 요소는, 그러나, 의미 론적 의미하기 때문에 일반적인 블록 레벨 요소로 사용할 수있는 거의있다 에 대한 레벨 요소.

자세한 내용을 보려면 링크


3
마지막 문장이 필요 없습니다. 이 사이트에 관한 거의 모든 질문은 아마도 구글에 대한 것일 수 있지만, 요점은 아닙니다. 요점은 앞으로 동일한 질문을 가진 개발자를위한 리소스를 만드는 것입니다.
nickf February

나중에, 그는 몇 가지 관련 정보와 토론을 시작할 수 있었고, 어떤 방법 으로든 그것을 편집 할 것입니다
Ashish Agarwal

1
p와 div가 모두 블록 요소이기 때문에 h1 요소가 div 내에 중첩되면 스타일이 상속되지만 ap에 중첩되면 그렇지 않습니다. 감사합니다
Return-1

@ Return-1 귀하의 경우에 정확히 무슨 일이 일어나는지 모르겠지만 h1은 내용을 표현하지 않으므로 단락 내부에서 허용 되지 않는 헤더 입니다. 인쇄 된 텍스트를 고려하십시오. 여기에는 머리글과 단락이 포함되지만 머리글은 단락의 일부가 아닙니다.
Oskar Berggren

7

DIV 는 다른 DIV 요소를 포함하여 다른 블록이나 인라인 요소를 포함 할 수있는 일반 블록 수준 컨테이너이며 P 는 단락 (텍스트)을 래핑하는 것입니다.


7

W3.org에서 디자인 한 표준을 보는 것이 좋습니다. 주소는 다음과 같습니다. http://www.w3.org/

"DIV"태그는 "P"태그를 래핑 할 수 있지만 "P"태그는 "DIV"태그를 래핑 할 수 없습니다. 지금까지이 차이를 알고 있습니다. 다른 차이점이 더있을 수 있습니다.


5

DIV그룹화 요소로 생각하십시오 . 정렬을 설정할 수 있도록 DIV 요소에 요소를 넣습니다.

반면 "p"단순히 새로운 단락을 만드는 것입니다.


3

<p>는 단락을 나타내고 <div>는 '나눗셈'을 나타냅니다. 주된 차이점은 div가 의미 적으로 '의미가 없다'고 가정합니다. 여기서 <p>는 텍스트 자체와 관련된 것을 나타냅니다.

예를 들어 중첩 된 <p>를 원하지는 않을 것입니다. 왜냐하면 사람들은 페이지 의미를 위해 중첩 된 <div>를 사용하는 반면 따옴표 의미를 제외하고는 의미 론적 의미가별로 없기 때문입니다.

Wikipedia 에 따르면

HTML에서 span 및 div 요소는 문서의 일부를 다른 HTML 요소로 의미 론적으로 설명 할 수없는 경우에 사용됩니다.


2

p태그는 일반적으로 텍스트에 사용되는 단락입니다. div태그는 분할을위한 것이며, 일반적으로 텍스트 섹션을 만들기 위해 사용했다.


2

<p> 텍스트에는 일반적으로 단락에 의미 적으로 사용됩니다.

<div>웹 페이지의 블록 또는 영역에 사용됩니다. 예를 들어 헤더 영역을 만드는 데 사용할 수 있습니다.

그들은 수 아마도 교대로 사용할 수 있지만, 당신은해야하지.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.