Flexbox 고정 바닥글 문제?
문제
저는 끈적한 바닥글을 만들기 위해 Flexbox를 가지고 놀았는데 어떤 이유로 내 div 중 하나가 바닥글과 겹치고 있습니까?창을 더 큰 모니터로 드래그하면 바닥글이 완벽해집니다.내가 도대체 뭘 잘못하고있는 겁니까?
또한 저는 다음과 같은 다른 방법 대신 이 방법을 사용하는 것을 선호합니다. table
방법.
내 HTML 레이아웃은 다음과 같습니다.
<body>
<div class="mainContent">...</div>
<div class="footer">...</div>
</body>
내 안에 mainContent
div 헤더를 포함하여 내 웹사이트의 전체 상단 부분이 있습니다.나는 그것을 전체 콘텐츠로 사용한 다음 바닥글을 갖기만 하면 됩니다.
내가 가지고 있는 CSS는 다음과 같습니다.
body
{
height: 100%;
display: -webkit-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-box-orient: vertical;
-webkit-flex-direction: column;
-ms-flex-direction: column;
flex-direction: column;
min-height: 100vh;
}
.mainContent
{
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
-webkit-flex: 1;
}
.footer
{
height: 75px;
background: #222;
color:#EEE;
}
나는 이것을 시도했습니다 : http://philipwalton.github.io/solved-by-flexbox/demos/sticky-footer/
하지만 현재 겪고 있는 것과 동일한 문제가 발생합니다.
업데이트
의견에서 요청한 대로 기본 콘텐츠 div를 다음으로 설정했습니다. overflow: auto;
그런데 내 내용이 바닥글에 가려졌습니다.이 문제를 어떻게 해결하나요?
해결책
CSS에 몇 가지 규칙을 추가하여 검색 결과를 얻을 수 있습니다. 현재 공간이 줄어들면 주요 내용이 더 많은 공간을 차지 해야하는 것이 기본적으로 있습니다.따라서 바닥 글은 실제로 겹치지 않고 오히려 크기가 감소합니다.
여기에 몇 달 전에 수행 한 것입니다 ... CSS의 많은 규칙은 유산이므로 조심하십시오. 그러나 나는 그것이 당신이하고자하는 것을 목표로하는 것에 가깝다고 믿습니다 : http://plnkr.co/edit/o2bawvg3xv4yjwawwmyr?p=preview
그러나 실제로 Flex CSS 규칙을 만드는 데 사용하는 것이 좋습니다. "Nofollow"> http://the-echoplex.net/flexyboxes/
다른 팁
CSS3 FlexBox 또는 Grid를 사용 하여이 문제를 해결하기 위해 CSS3 FlexBox 또는 Grid를 사용하여 이러한 빠르고 견고한 솔루션을 발견하면 많은 시간을 보냈습니다.이게 도움이 되길 바란다.
<body>
<header></header>
<main></main>
<footer></footer>
</body>
.
IE 및 Chrome 모두에 대해 작동해야합니다 :
body {
display: flex;
flex-direction: column;
height: 100vh;
}
main {
flex: 1 0 auto;
}
footer, header {
flex-shrink: 0;
}
.
그리드 레이아웃을
로 시도 할 수도 있습니다.html {
height: 100%;
}
body {
min-height: 100%;
display: grid;
grid-template-rows: 1fr 1fr auto;
}
footer {
grid-row: 3/4;
}
.
내 웹 사이트를 참조하십시오 : http://matthiassommer.it/웹 / 자바 스크립트 / 스티커 - 풋내기 -CSS3-FlexBox 그리드 /
답변이 이미 승인되었다는 것을 알고 있지만 여기에는 필요한 코드(및 설명할 일부 자바스크립트)만 사용하는 매우 간단한 예가 있습니다.
https://codepen.io/alexmccabe/pen/RgMBjJ
현재 상황은 다음과 같습니다.
먼저 body
그리고 html
브라우저 높이의 100%까지.
html,
body { height: 100%; }
그런 다음 래퍼 요소를 설정하여 min-height
100%로 설정하고 플렉스를 표시합니다.열은 요소가 서로 옆에 배치되지 않도록 합니다.
.site-wrapper {
display: flex;
flex-direction: column;
min-height: 100%;
}
이제 바닥글은 margin-top
~의 auto
.브라우저 창 하단에 위치합니다.
.site-footer {
margin-top: auto;
}
메모:이전 브라우저 스타일을 포함했는지 확인하고 Safari 8을 주의하세요.때로는 까다로운 일이 될 수 있습니다.