display : inline과 display : inline-block의 차이점은 무엇입니까?


607

CSS의 값 inlineinline-block값의 차이점은 정확히 무엇입니까 display?

답변:


1351

시각적 인 답변

<span>안에 요소가 있다고 상상해보십시오 <div>. 당신이주는 경우에 <span>요소를 100 픽셀의 높이와 예를 들어 빨간색 테두리, 그것은과 같이 표시됩니다

디스플레이 : 인라인

디스플레이 : 인라인

디스플레이 : 인라인 블록

디스플레이 : 인라인 블록

디스플레이 : 블록

여기에 이미지 설명을 입력하십시오

코드 : http://jsfiddle.net/Mta2b/

요소 display:inline-block는 요소와 비슷 display:inline하지만 widthheight를 가질 수 있습니다 . 즉, 인라인 블록 요소를 텍스트 나 다른 요소 내로 이동시키면서 블록으로 사용할 수 있습니다.

지원되는 스타일의 차이점 요약 :

  • 인라인 : 단지 margin-left, margin-right, padding-left,padding-right
  • 인라인 블록 : margin, padding, height,width

6
훌륭한 직감. 따라서 유일한 차이점은 인라인 요소의 높이 속성을 설정할 수 없다는 것입니다.
user2316667

7
@ user2316667 및 너비
Oscar Calderon

2
@ user2316667 및 @OscarCalderon : 또한 인라인 요소는 세로 여백 및 패딩을 신경 쓰지 않으며 다음 요소는 같은 줄에 배치됩니다 (그 후 줄 바꿈 없음). 등으로 블록 요소 p, div전체 폭이 라인 (개행 강제)하지만 대한 너비 / 높이와 전체 수평 / 수직 패딩 / 마진을 얻는다. 인라인 블록 요소는 블록과 동작이 동일하지만 전체 줄 바꿈이 없습니다 (다른 요소는 옆에 배치 할 수 있음)
S.Serpooshan

1
padding-top 및 padding-right도 인라인 요소의 표시 효과에 영향을 미쳐 약간의 혼란을 초래합니다.
tomwang1013

2
아니요, 그 의미는 아닙니다. 모든 다른 디스플레이 유형에 대한 사용 사례가 있습니다.
splattne

126

display: inline;문장에서 사용할 표시 모드입니다. 예를 들어 단락이 있고 한 단어를 강조 표시하려면 다음을 수행하십시오.

<p>
    Pellentesque habitant morbi <em>tristique</em> senectus
    et netus et malesuada fames ac turpis egestas.
</p>

<em>요소는있다 display: inline;이 태그는 항상 문장에서 사용되기 때문에, 기본적으로. <p>요소는있다 display: block;가 문장이나 문장에서,이 문장의 블록의도이기 때문에, 기본적으로.

가있는 요소 는 a 또는 a 또는 vertical를 가질 display: inline; 수 없습니다 . 와 요소는 이 , 그리고 . 당신이를 추가하려면 받는 요소, 당신은이 요소를 설정해야합니다 . 이제 요소와 다른 모든 블록 스타일 (의 일부 ) 에 a 를 추가 할 수 있지만 문장 (의 일부 )에 배치됩니다 .heightwidthmargindisplay: block; widthheightmargin
height<em>display: inline-block;heightblockinline-blockinlineinline-block


11
좋은 답변입니다! tl; dr- 인라인 요소의 크기를 조정하려면 인라인 블록 을 표시 유형으로 사용할 수 있습니다 .
errorprone

7
작은 수정 : 인라인 요소 는 가로 여백 (오른쪽, 왼쪽)을 가질 있지만 세로 여백 (위, 아래) 가질 없습니다.
whyleee

1
display값 중 하나를 선택할 때 할 수 있거나 할 수없는 것에 대해 언급했기 때문에 좋은 대답 입니다.
ha9u63ar

14

답변에 언급되지 않은 한 가지 사항은 인라인 요소가 줄 사이에서 끊어 질 수 있지만 인라인 블록은 할 수 없으며 분명히 차단되지 않는다는 것입니다! 따라서 인라인 요소는 텍스트와 블록의 문장 스타일을 지정하는 데 유용 할 수 있지만 채울 수 없으므로 대신 줄 높이 를 사용할 수 있습니다 .

<div style="width: 350px">
  Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
  <div style="display: inline; background: #F00; color: #FFF">
    Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
  </div>
  Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
<hr/>
<div style="width: 350px">
  Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
  <div style="display: inline-block; background: #F00; color: #FFF">
    Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
  </div>
  Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>

여기에 이미지 설명을 입력하십시오


6

위의 모든 답변은 원래 질문에 대한 중요한 정보를 제공합니다. 그러나 잘못된 것처럼 보이는 일반화가 있습니다.

그것은 가능하다 세트 폭 (내가 생각할 수있는) 적어도 하나 개의 인라인 요소에 높이 - <img>요소입니다.

여기 와이 중복 상태 에서 답변을 수락 했지만 이것이 불가능하지만 유효한 일반 규칙처럼 보이지는 않습니다.

예:

img {
  width: 200px;
  height: 200px;
  border: 1px solid red;
}
<img src="#" />

img있다 display: inline, 그러나 그것 width과는 height성공적으로 설정되었다.


2
실제로 img-tag에는 기본 디스플레이 값으로 디스플레이 인라인이 있습니다. 따라서 너비와 높이를 설정할 수 있습니다.
Alex

img는 인라인 요소입니다-> developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements ... 그래서 기본적으로 당신은 내가 말하는 것과 거의 똑같은 말을하고 있고 downvoting하고 있습니까 ??
alexandros84

7
아뇨 img-tags는 기본적으로 내용이 교체되어 인라인 블록 요소처럼 동작한다는 것을 의미하는 "대체 된 요소"입니다. 그리고 네 실제 기본 속성 (브라우저 계산 속성은 인라인입니다). 그러나 그 유일한 이유는 CSS2까지 인라인 블록이 도입되지 않았기 때문에 내용으로 대체되기 때문에 "인라인 블록 요소처럼 동작하는 인라인 요소"가 있기 때문입니다. 즉, 요소에 높이 / 너비를 설정하지 않고 내용에서 Wierd, yes로 설정합니다. 알아. drafts.csswg.org/css2/conform.html#replaced-element
Alex 5

그것은 당신이 말하는 것에 실제로 흥미 롭습니다. 연구와 재 편집에 시간을내어 공감대와 공감대를 되찾아주세요 ..! 하루가 끝날 무렵 나는이 토론이 전체 토론의 완전성에 기여하고 있다고 솔직하게 느낍니다.
alexandros84

1

splattne의 대답은 아마도 대부분의 것을 다루었으므로 동일한 것을 반복하지는 않지만 CSS 속성 inlineinline-block다르게 동작 direction합니다.

다음 스 니펫 내 one two에서 LTR 레이아웃에서와 같이 (순서대로) 렌더링됩니다. 여기의 브라우저가 영어 부분을 LTR 텍스트로 자동 감지하여 왼쪽에서 오른쪽으로 렌더링했다고 생각합니다.

body {
  text-align: right;
  direction: rtl;
}

h2 {
  display: block; /* just being explicit */
}

span {
  display: inline;
}
<h2>
  هذا عنوان طويل
  <span>one</span>
  <span>two</span>
</h2>

내가 가서 설정된 경우, displayinline-block, 브라우저는 존중 나타납니다 direction그 때문에, 재산을 순서대로 오른쪽에서 왼쪽으로 요소를 렌더링 two one렌더링됩니다.

body {
  text-align: right;
  direction: rtl;
}

h2 {
  display: block; /* just being explicit */
}

span {
  display: inline-block;
}
<h2>
  هذا عنوان طويل
  <span>one</span>
  <span>two</span>
</h2>

이것에 대한 다른 단점이 있는지 모르겠지만 Chrome에서 경험적으로 만 발견했습니다.

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