height : 100 % 또는 min-height : html 및 body 요소의 경우 100 %?


82

레이아웃을 설계하는 동안 나는 설정 html, body요소 ' height100%무엇을 사용해야하므로,이 오류가 발생하지만, 일부의 경우를?

html, body {
   height: 100%;
}

또는

html, body {
   min-height: 100%;
}

글쎄, 이것은 각 방법에 자체 결함이 있으므로 의견 기반이 아닙니다. 그래서 권장되는 방법은 무엇이며 그 이유는 무엇입니까?

답변:


192

당신은에 배경 이미지를 적용하려고하지하는 경우 htmlbody둘, 전체 브라우저 창을 채울 것이다. 대신 사용 :

html {
   height: 100%;
}

body {
   min-height: 100%;
}

내 추론은 다음과 같습니다 (여기서는 이러한 방식으로 배경을 적용하는 방법을 전체적으로 설명합니다).

덧붙여서, heightmin-heightto htmlbody각각 을 지정해야하는 이유 는 두 요소 모두 고유 높이가 없기 때문입니다. 둘 다 height: auto기본값입니다. 높이가 100 % 인 뷰포트이므로 height: 100%뷰포트에서 가져온 다음 body콘텐츠 스크롤을 허용하기 위해 최소로 적용됩니다 .

height: 100%두 가지를 모두 사용하는 첫 번째 방법 body은 콘텐츠가 뷰포트 높이 이상으로 커지기 시작하면 콘텐츠와 함께 확장되는 것을 방지 합니다. 기술적으로 이것은 콘텐츠가 스크롤되는 것을 막지 는 않지만 body, 일반적으로 바람직하지 않은 폴드 아래에 틈 이 생기는 원인이 됩니다.

두 번째 방법은, 사용 min-height: 100%모두에 발생하지 않습니다 body의 전체 높이로 확장하기 html때문에 min-height비율이 작동하지 않습니다와 함께 body하지 않는 한 html명시 적있다 height.

완전성을 위해 CSS2.1의 섹션 10 에는 모든 세부 정보가 포함되어 있지만 매우 복잡한 읽기이므로 여기에서 설명한 내용 이외의 내용에 관심이 없다면 건너 뛸 수 있습니다.


4
이것은 내가이 가장 :) 좋아하는 것입니다 height: 100% is taken from the viewport, then applied to body as a minimum to allow for scrolling of content... 감사 // 쉬워요 솔루션
씨 외국인

그래도 스크롤 막대가 마술처럼 어떻게 나타나는지 궁금합니다. html요소가 overflow:visible나는 스크롤 막대가 문서의 전체 정상적인 흐름을 표시 할 수 있도록 브라우저 동작으로 인해 나타납니다 가정하므로, 기본적으로.
Fabrício Matté 2013

@ Fabrício Matté : overflow: auto스크롤바의 출처 인 뷰포트에서로 변환됩니다 . 11 절에서 다룹니다. w3.org/TR/CSS21/visufx.html
BoltClock

10
@BoltClock 여기 에 몸의 100 % 아이를 얻는 방법을 아십니까? 비록 작동
씨 외국인

1
box-sizing : border-box는 여백에 영향을주지 않습니다. 패딩, 네,하지만 그것은 개인적인 취향에 달려 있습니다.
BoltClock

17

뷰포트 높이 ( vh) 단위를 사용할 수 있습니다 .

body {
    min-height: 100vh;
}

부모 높이가 아니라 화면에 상대적이므로 html 높이가 필요하지 않습니다 : 100 %.


이것이 제공하는 추가 이점은 무엇입니까?
xji

추가 이점은 없으며 문제를 해결하는 또 다른 방법입니다.
Damjan Pavlica

모바일이 이것을 어떻게 이해하는지주의하십시오
GWorking

모든 브라우저가이 단위를 지원하는 것은 아닙니다 ... 먼저 브라우저 호환성을 확인하십시오 : caniuse.com/#feat=viewport-units
dBlaze
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.