programing

머리글과 바닥 글 div 사이의 모든 공간을 채우기 위해 div를 만드는 방법

copyandpastes 2021. 1. 15. 20:18
반응형

머리글과 바닥 글 div 사이의 모든 공간을 채우기 위해 div를 만드는 방법


나는 레이아웃 목적으로 테이블을 사용하는 것에서 div를 사용하는 것으로 이동하고 있습니다 (예, 좋은 토론입니다). 3 개의 div, 머리글, 내용 및 바닥 글이 있습니다. 머리글과 바닥 글은 각각 50px입니다. 바닥 글 div가 페이지 하단에 있고 콘텐츠 div가 그 사이의 공간을 채우도록하려면 어떻게해야합니까? 화면 해상도가 변경 될 수 있기 때문에 콘텐츠 div 높이를 하드 코딩하고 싶지 않습니다.


Flexbox 솔루션

플렉스 레이아웃을 사용하면 자연스러운 높이 머리글과 바닥 글을 허용하면서이를 달성 할 수 있습니다. 머리글과 바닥 글은 각각 뷰포트의 상단과 하단에 고정되고 (기본 모바일 앱과 매우 유사) 기본 콘텐츠 영역이 나머지 공간을 채우고 세로 오버플로는 해당 영역 내에서 스크롤 할 수 있습니다.

JS Fiddle보기

HTML

<body>
  <header>
    ...
  </header>
  <main>
    ...
  </main>
  <footer>
    ...
  </footer>
</body>  

CSS

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

body {
  display: flex;
  flex-direction: column;
}

header,
footer {
  flex: none;
}

main {
  overflow-y: scroll;
  -webkit-overflow-scrolling: touch;
  flex: auto;
}

요약하면 (그리고 이것은 Traingamer에서 제공 한 CSS Sticky Footer 링크 에서 온 것입니다 ), 이것이 제가 사용한 것입니다.

html, body 
{ 
    height: 100%; 
} 

#divHeader
{
    height: 100px;
}

#divContent
{
    min-height: 100%; 
    height: auto !important; /*Cause footer to stick to bottom in IE 6*/
    height: 100%; 
    margin: 0 auto -100px; /*Allow for footer height*/
    vertical-align:bottom;
}

#divFooter, #divPush
{
    height: 100px; /*Push must be same height as Footer */
}

<div id="divContent">
    <div id="divHeader">
        Header
    </div>

    Content Text

    <div id="divPush"></div>
</div>
<div id="divFooter">
    Footer
</div>

Mitchel Sellers 답변을 확장하려면 콘텐츠 div 높이 : 100 %를 제공하고 자동 마진을 제공하세요.

전체 설명과 예제는 Ryan Fait의 CSS Sticky Footer를 참조하십시오 .

헤더의 크기 (높이)를 알고 있으므로 콘텐츠 div 안에 넣거나 여백을 사용합니다.

콘텐츠가 창보다 크면 (더 큰) 절대 위치는 문제를 제공합니다.


CSS 그리드를 사용하는 방법 :

index.html

<html>
  <head>
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <link href="main.css" rel="stylesheet">
  </head>
  <body>
    <main>
      <header>Header</header>
      <section>Content</section>
      <footer>Footer</footer>
    </main>
  </body>
</html>

main.css

body {
    margin: 0;
}
main {
    height: 100%;
    display: grid;
    grid-template-rows: 100px auto 100px;
}
section {
    height: 100%;
}

콘텐츠 div의 높이를 최대화하려는 경우 CSS에서

높이 : 100 %;


#footer {
 clear: both;
}

참조 URL : https://stackoverflow.com/questions/206652/how-to-create-div-to-fill-all-space-between-header-and-footer-div

반응형