Flexbox 내부의 Flex 항목의 수직 공간을 채우려 고합니다.
.container {
height: 200px;
width: 500px;
display: flex;
flex-direction: row;
}
.flex-1 {
width: 100px;
background-color: blue;
}
.flex-2 {
position: relative;
flex: 1;
background-color: red;
}
.flex-2-child {
height: 100%;
width: 100%;
background-color: green;
}
<div class="container">
<div class="flex-1"></div>
<div class="flex-2">
<div class="flex-2-child"></div>
</div>
</div>
그리고 여기 JSFiddle이 있습니다
flex-2-child
다음 두 경우를 제외하고 필요한 높이를 채우지 않습니다.
flex-2
높이가 100 %입니다 (플렉스 항목에 기본적으로 100 %가 + Chrome에서 버그가 있기 때문에 이상합니다)flex-2-child
불편한 위치 절대 값을 가짐
현재 Chrome 또는 Firefox에서는 작동하지 않습니다.
답변
사용하다 align-items: stretch
David Storey의 답변과 유사하게 내 해결 방법은 다음과 같습니다.
.flex-2 {
display: flex;
align-items: stretch;
}
또는 원하는 항목 에만 align-items
사용할 수 있습니다 .align-self
.flex-2-child
답변
나는 당신이 이미 position: absolute;
불편 하다고 말 했지만 작동합니다. 크기 조정 문제 해결에 대한 자세한 내용은 아래를 참조하십시오.
Chrome에서 열린 웹킷 접두사 만 추가했지만 데모는 이 jsFiddle 을 참조하십시오 .
기본적으로 두 가지 문제가 있으며 별도로 처리해야합니다.
- flex-item의 자식이 높이 100 %를 채우도록하기
position: relative;
자녀의 부모에 설정하십시오 .position: absolute;
아이에게 설정하십시오 .- 그런 다음 필요에 따라 너비 / 높이를 설정할 수 있습니다 (샘플에서 100 %).
- Chrome에서 크기 조정 스크롤 “쿼크”수정
- 넣어
overflow-y: auto;
스크롤 DIV에. - 스크롤 가능한 div에는 명시적인 높이가 지정되어 있어야합니다. 내 샘플의 높이는 이미 100 %이지만 아직 적용되지 않은 경우 지정할 수 있습니다
height: 0;
- 넣어
스크롤 문제에 대한 자세한 내용 은이 답변 을 참조하십시오 .
답변
올바르게 이해하면 빨간색 영역이 녹색으로 완전히 덮 이도록 flex-2-child가 부모의 높이와 너비를 채우도록 하시겠습니까?
그렇다면 flexbox를 사용하도록 flex-2를 설정하면됩니다.
.flex-2 {
display: flex;
}
그런 다음 flex-2-child에게 유연성을 갖도록 지시하십시오.
.flex-2-child {
flex: 1;
}
http://jsfiddle.net/2ZDuE/10/ 참조
그 이유는 flex-2-child는 flexbox 항목이 아니지만 그 상위 항목이기 때문입니다.
답변
Chrome의 동작이 CSS 사양과보다 일관성이 있다고 가정합니다 (직관적이지는 않지만). 인 flexbox 사양에 따르면, 기본 stretch
값 align-self
속성 변경 사항 만 사용되는 값 (요소의 “크로스 크기 속성”의를 height
이 경우). 그리고 CSS2.1 spec을 이해함 에 따라 백분율 높이는 사용 된 값이 아닌 부모의 지정된 값 에서 계산됩니다 height
. 부모의 지정된 값은 height
플렉스 속성의 영향을받지 않으며 여전히 auto
.
명시 적으로 설정을 height: 100%
만드는 것은 그것을 공식적으로 가능한 단지 설정처럼, 아이의 비율 높이를 계산하기 height: 100%
에 html
가능의 비율을 높이 계산 할 수 body
CSS2.1에 있습니다.
답변
나는 스스로 해결책을 찾았다. 아래 CSS가 있다고 가정 해보십시오.
.parent {
align-items: center;
display: flex;
justify-content: center;
}
.child {
height: 100%; <- didn't work
}
이 경우 높이를 100 %로 설정하면 작동하지 않으므로 다음과 같이 margin-bottom
규칙을 설정하십시오 auto
.
.child {
margin-bottom: auto;
}
자녀가 부모의 가장 위에 정렬되며 align-self
원하는 경우 규칙 을 사용할 수도 있습니다 .
.child {
align-self: flex-start;
}
답변
아이디어는 것 display:flex;
과는 flex-direction: row;
충전되어 container
함께 DIV를 .flex-1
하고 .flex-2
있지만, 그 의미하지 않는 .flex-2
기본을 가지고 height:100%;
그것이 전체 높이로 확장되고 하위 요소 (가지고 있더라도 .flex-2-child
으로) height:100%;
당신이 부모를 설정해야합니다 height:100%;
또는 사용 display:flex;
와 flex-direction: row;
상의 .flex-2
DIV 너무.
내가 아는 display:flex
것으로 모든 하위 요소 높이를 100 %로 확장하지는 않습니다.
작은 데모로 높이가 제거되어 http://jsfiddle.net/2ZDuE/3/ 에서 .flex-2-child
사용 display:flex;
되었습니다 .flex-2
.
답변
html
<div class="container">
<div class="flex-1"></div>
<div class="flex-2">
<div class="flex-2-child"></div>
</div>
</div>
CSS
.container {
height: 200px;
width: 500px;
display: -moz-box;
display: -webkit-flexbox;
display: -ms-flexbox;
display: -webkit-flex;
display: -moz-flex;
display: flex;
-webkit-flex-direction: row;
-moz-flex-direction: row;
-ms-flex-direction: row;
flex-direction: row;
}
.flex-1 {
flex:1 0 100px;
background-color: blue;
}
.flex-2 {
-moz-box-flex: 1;
-webkit-flex: 1;
-moz-flex: 1;
-ms-flex: 1;
flex: 1 0 100%;
background-color: red;
}
.flex-2-child {
flex: 1 0 100%;
height:100%;
background-color: green;
}