백분율 높이 HTML 5 / CSS


176

<div>CSS에서 특정 백분율 높이 로 설정하려고 하지만 내부 내용과 동일한 크기로 유지됩니다. <!DOCTYTPE html>그러나 HTML 5를 제거하면 <div>원하는대로 전체 페이지를 차지하면서 작동 합니다. 페이지의 유효성을 검사하려면 어떻게해야합니까?

에 CSS <div>가 있으며 ID는 page다음 과 같습니다.

#page {
    padding: 10px;
    background-color: white;
    height: 90% !important;
}

3
다음 height은 백분율 값 을 사용하여 CSS 속성에 대한 간단하고 명확한 설명입니다 . stackoverflow.com/a/31728799/3597276
Michael Benjamin

DOCTYPE 문제를 해결합니다 : stackoverflow.com/a/32215263/3597276
Michael Benjamin

답변:


371

CSS에서 div를 특정 백분율 높이로 설정하려고합니다.

무엇의 비율?

백분율 높이를 설정하려면 부모 요소 (*)의 높이가 명시 적이어야합니다. 이것은 높이를 그대로두면 auto블록이 내용의 높이를 취하지 만 내용 자체에 부모의 백분율로 표현 된 높이가 있으면 조금 자신을 만들었다는 점 에서 상당히 자명 합니다. Catch 22. 브라우저가 콘텐츠 높이를 포기하고 사용합니다.

따라서 div의 부모에는 명시 적 height속성 이 있어야합니다 . 원하는 경우 높이가 백분율이 될 수도 있지만 문제를 다음 단계로 이동시킵니다.

뷰포트의 높이의 비율을 포함하여 사업부의 모든 조상 사업부의 높이를 확인하려면 <html>하고 <body>,이 있어야 height: 100%하므로 DIV 아래로 명시 비율 높이의 체인이있다.

(* : 또는 div가 배치 된 경우 가장 가까운 조상 인 '포함 블록'도 배치됩니다.)

또는 모든 최신 브라우저와 IE> = 9는 뷰포트 높이 ( vh) 및 뷰포트 너비 ( vw) 와 관련된 새로운 CSS 단위를 지원합니다 .

div {
    height:100vh; 
}

여기를 참조하십시오 더 많은 정보 .


세로 화면 방향으로는 작동하지 않지만 stackoverflow.com/questions/23198237/…
Dchris

1
올바른 해결책이라고 생각하는 아래의 Brian Campbell의 답변을 참조하십시오. 이 답변은 해결 방법으로 보이며 실제 문제를 해결하지 못합니다.
MG 개발자

69

<html><body>요소 의 높이도 설정해야합니다 . 그렇지 않으면 내용에 맞게 충분히 커질 것입니다. 예를 들면 다음과 같습니다.

<!DOCTYPE html>
<title>Example of 100% width and height</title>
<style>
html, body { height: 100%; margin: 0; }
div { height: 100%; width: 100%; background: red; }
</style>
<div></div>


6
¬_¬ 문서의 높이를 100 %로 설정해야한다는 것을 알기까지 20 분이 걸렸습니다. 나는 이것을 너무 늦게 읽었지만 여전히 훌륭합니다. 한숨
omninonsense

그것은이 읽지 않고 가장 첫 번째 대답을보고, 그것의 가능한 다른 어떤 방법이 있는지 여부를 생각 방황하지 생각 무엇을 할 수 있는지 궁금 여기 오는 사람들의 많은에 대한 해결책을 제공 이것은 응답으로까지 투표를해야한다
codefreaK

나는 이것이 정답이라는 데 동의합니다. body 및 html 인 부모 요소를 설정해야하기 때문에 높이가 작동하지 않습니다. 이 답변은 허용되는 답변이어야합니다.
MG 개발자

이것은 정답이 아닙니다. 내용이 화면 높이에 맞는 것보다 크면 나머지 내용이 더 이상 표시되지 않으므로 높이가 브라우저 창의 100 %로 설정되지 않았지만 다시 100 %로 설정되었습니다. 내용의. 논리적이지 않을 수도 있지만 Firefox와 Chrome의 두 가지 기본 브라우저에서 발생하는 것입니다. 따라서 정답은 유일하게 정답입니다.
nepdev

15

bobince의 답변으로 "높이 : XX %;" 작동하거나 작동하지 않습니다.

설정된 비율 (높이 : 자체 너비의 %)로 요소를 만들려면을 사용하여 높이를 효과적으로 설정하는 것이 가장 좋습니다 padding-bottom. 정사각형의 예 :

<div class="square-container">
  <div class="square-content">
    <!-- put your content in here -->
  </div>
</div>

.square-container {  /* any display: block; element */
  position: relative;
  height: 0;
  padding-bottom: 100%; /* of parent width */
}
.square-content {
  position: absolute;
  left: 0;
  top: 0;
  height: 100%;
  width: 100%;
}

정사각형 컨테이너는 패딩으로 만들어지며 컨테이너를 채우기 위해 내용이 확장됩니다. 이 주제에 대한 2009 년의 긴 기사 : http://alistapart.com/article/creating-intrinsic-ratios-for-video


이것은 잘 작동합니다. 또한 100 개 이상의 요소를 보유한 페이지의 크기를 조정하는 동안 브라우저에서 빠르게 느껴집니다. 감사!
딘 그란데

5

사용할 수 있습니다 100vw / 100vh. CSS3은 뷰포트 기준 단위를 제공합니다. 100vw는 뷰포트 너비의 100 %를 의미합니다. 100vh; 높이의 100 %

    <div style="display:flex; justify-content: space-between;background-color: lightyellow; width:100%; height:85vh">
        <div style="width:70%; height: 100%; border: 2px dashed red"></div>
        <div style="width:30%; height: 100%; border: 2px dashed red"></div>
    </div>

4

안녕하세요! 백분율 (%)을 사용하려면 %의 상위 요소를 정의해야합니다. body {height : 100 %} 를 사용 하면 부모의 키가 백분율이 없으므로 작동하지 않습니다. 이 경우 신체 높이높이 려면 html {height : 100 %}로 추가해야합니다 .

다른 경우 부모 정의 비율을 제거하기 위해 사용할 수 있습니다.

몸 {높이 : 100vh}

vh뷰포트 높이를 나타냅니다

도움이 될 것 같아


2

때로는 전체 내용이 화면의 높이보다 작은 경우와 같이 div의 높이를 조건부로 설정하려고 할 수 있습니다. 모든 부모 요소를 100 %로 설정하면 화면 크기보다 길면 내용이 잘립니다.

따라서이 문제를 해결하는 방법은 최소 높이를 설정하는 것입니다.

부모 요소가 자동으로 높이를 계속 조정 한 다음 기본 div에서 머리글 및 바닥 글 div의 픽셀 크기를 100vh (뷰포트 단위)에서 뺍니다. CSS에서는 다음과 같습니다.

최소 높이 : calc (100vh-246px);

100vh는 화면의 전체 길이에서 주변 div를 뺀 것입니다. 높이가 아닌 최소 높이를 설정하면 화면보다 긴 내용이 잘리지 않고 계속 흐릅니다.

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