3 행 레이아웃에서 :
- 상단 행은 내용에 따라 크기가 조정되어야합니다
- 맨 아래 줄의 픽셀 높이는 고정되어 있어야합니다
- 가운데 줄이 컨테이너를 채우도록 확장되어야합니다.
문제는 기본 컨텐츠가 확장됨에 따라 머리글과 바닥 글 행을 없애는 것입니다.
HTML :
<section>
<header>
header: sized to content
<br>(but is it really?)
</header>
<div>
main content: fills remaining space<br>
x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
<!-- uncomment to see it break - ->
x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
<!-- -->
</div>
<footer>
footer: fixed height in px
</footer>
</section>
CSS :
section {
display: flex;
flex-flow: column;
align-items: stretch;
height: 300px;
}
header {
flex: 0 1 auto;
background: tomato;
}
div {
flex: 1 1 auto;
background: gold;
overflow: auto;
}
footer {
flex: 0 1 60px;
background: lightgreen;
/* fixes the footer: min-height: 60px; */
}
깡깡이:
- http://jsfiddle.net/7yLFL/1/ (작은 내용으로 작동)
- http://jsfiddle.net/7yLFL/ (더 큰 내용으로 손상됨 )
나는 기존 브라우저를 무시하고 CSS에서 최신의 가장 큰 것을 사용할 수있는 운이 좋은 상황에 처해 있습니다. Flex 레이아웃을 사용하여 이전 테이블 기반 레이아웃을 제거 할 수 있다고 생각했습니다. 어떤 이유로 든, 내가 원하는 것을하고 있지 않습니다 ...
기록을 위해, "남은 높이 채우기"에 관한 SO에 관한 많은 관련 질문이 있지만, 플렉스와 관련된 문제를 해결하는 것은 없습니다. 참조 :
바이올린에서 예상대로 작동하는 것 같습니다.
—
Dayan
예, 나머지 <div>의 내용을 주석 해제하여 어떻게 중단되는지 확인해야합니다. 아마도 깨진 버전을 연결했을 것입니다. 죄송합니다.
—
Zilk
질문에 두 가지 버전을 모두 추가했습니다.
—
Zilk
무슨 말인지 알 겠어
—
Dayan