HTML은 다음과 같습니다.
<div id="outer">
<div id="inner"></div>
Test
</div>
그리고 여기 CSS가 있습니다 :
#inner {
float: left;
height: 100%;
}
Chrome 개발자 도구로 검사하면 내부 div의 높이가 0px입니다.
상위 div 높이의 100 %가되도록하려면 어떻게해야합니까?
HTML은 다음과 같습니다.
<div id="outer">
<div id="inner"></div>
Test
</div>
그리고 여기 CSS가 있습니다 :
#inner {
float: left;
height: 100%;
}
Chrome 개발자 도구로 검사하면 내부 div의 높이가 0px입니다.
상위 div 높이의 100 %가되도록하려면 어떻게해야합니까?
답변:
들면 #outer
높이가 그 내용에 기초하고있는 것으로 #inner
기재 그런의 높이를 절대 위치 두 요소를 만든다.
자세한 내용은 대한 사양에서 찾을 수 있습니다 CSS를 높이 속성 하지만, 본질적으로 #inner
무시합니다 #outer
경우 높이 #outer
의 높이가 auto
, 하지 않는 한 #outer
절대 위치한다. 그 자체가 절대 위치에 있지 않으면#inner
높이는 0이됩니다 . #inner
<style>
#outer {
position:absolute;
height:auto; width:200px;
border: 1px solid red;
}
#inner {
position:absolute;
height:100%;
width:20px;
border: 1px solid black;
}
</style>
<div id='outer'>
<div id='inner'>
</div>
text
</div>
그러나 ... #inner
절대적으로 배치 하면 float
설정이 무시되므로 #inner
명시 적으로 너비를 선택하고 #outer
원하는 텍스트 줄 바꿈을 가짜로 채우기 위해 패딩을 추가 해야합니다. 예를 들어 아래에서 패딩은 #outer
너비 #inner
+3입니다. 편리하게 (전체 요점이 #inner
100 % 에 도달 하기 #inner
때문에) 아래 에 텍스트를 줄 바꿈 할 필요가 없으므로 #inner
플로팅 된 것처럼 보입니다 .
<style>
#outer2{
padding-left: 23px;
position:absolute;
height:auto;
width:200px;
border: 1px solid red;
}
#inner2{
left:0;
position:absolute;
height:100%;
width:20px;
border: 1px solid black;
}
</style>
<div id='outer2'>
<div id='inner2'>
</div>
text
</div>
목표에 대한 잘못된 가정이 너무 많기 때문에 이전 답변을 삭제했습니다.
HTML/CSS
:)
부모의 경우 :
display: flex;
접두사를 추가해야합니다. http://css-tricks.com/using-flexbox/
편집 : 단점은 평소와 같이 IE 뿐이며 IE9는 flex를 지원하지 않습니다. http://caniuse.com/flexbox
편집 2 : @toddsby가 지적했듯이 정렬 항목은 부모를위한 것이며 기본값은 stretch 입니다. child에 다른 값을 원하면 자체 정렬 속성이 있습니다.
편집 3 : jsFiddle : https://jsfiddle.net/bv71tms5/2/
align-items: stretch;
기본값이므로 필요하지 않습니다. 또한 자식이 아닌 부모에 정의되어야합니다.
실제로 부모 요소가있는 한 자녀의 키를 100 %로 설정할 수 있습니다. 즉, 부모가 절대적으로 배치되기를 원하지 않는 경우. 더 설명하겠습니다 :
<style>
#outer2 {
padding-left: 23px;
position: relative;
height:auto;
width:200px;
border: 1px solid red;
}
#inner2 {
left:0;
position:absolute;
height:100%;
width:20px;
border: 1px solid black;
}
</style>
<div id='outer2'>
<div id='inner2'>
</div>
</div>
position:absolute
(사이트의 스타일을 방해 할 수 있음) 보다 덜 제한적입니다.
IE8 이전의 Internet Explorer 버전을 지원할 필요가없는 display: table-cell
한이를 사용 하여 다음을 수행 할 수 있습니다 .
HTML :
<div class="outer">
<div class="inner">
<p>Menu or Whatever</p>
</div>
<div class="inner">
<p>Page contents...</p>
</div>
</div>
CSS :
.inner {
display: table-cell;
}
이렇게하면 .inner
클래스 가있는 각 요소가 부모 요소의 전체 높이를 차지하게됩니다.
display: table-cell;
요소가 컨테이너의 높이를 더 이상 채우지 않습니까? 나는 당신의 질문이기 때문에 뭔가를 놓치고 있어야합니다 ...?
래퍼를 만들고 플로팅 한 다음 div의 절대 위치를 지정하고 높이를 100 % 부여해야합니다.
HTML
<div class="container">
<div class="left">"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." </div>
<div class="right-wrapper">
<div class="right">"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." </div>
</div>
<div class="clear"> </div>
</div>
CSS :
.container {
width: 100%;
position:relative;
}
.left {
width: 50%;
background-color: rgba(0, 0, 255, 0.6);
float: left;
}
.right-wrapper {
width: 48%;
float: left;
}
.right {
height: 100%;
position: absolute;
}
설명 : .right div는 절대 위치에 있습니다. 즉, 너비 또는 높이 속성이 CSS에서 명시 적으로 선언 된 경우에만 너비 또는 높이와 상단 및 왼쪽 위치가 첫 번째 상위 div를 기준으로 절대 또는 상대 위치를 기준으로 계산됩니다. 명시 적으로 선언되지 않은 경우 해당 속성은 부모 컨테이너 (.right-wrapper)를 기준으로 계산됩니다.
따라서 DIV의 100 % 높이는 컨테이너 최종 높이를 기준으로 계산되며 오른쪽 위치의 최종 위치는 상위 컨테이너를 기준으로 계산됩니다.
.right
.left
.left
약간의 jQuery를 사용할 준비가 되었다면 대답은 간단합니다!
$(function() {
$('.parent').find('.child').css('height', $('.parent').innerHeight());
});
이것은 일반적으로 단일 요소를 부모의 높이가 100 % 인면에 플로팅하는 데 효과적이며 일반적으로 감싸는 다른 플로팅 요소는 한쪽에 유지됩니다.
이것이 jQuery 팬들에게 도움이되기를 바랍니다.
flexbox를 사용하여 동일한 높이를 가진 여러 하위 요소가 필요한 경우와 비슷한 경우가 있습니다.
https://css-tricks.com/using-flexbox/
display: flex;
부모 및 flex: 1;
자식 요소에 대해 설정 하면 모두 같은 높이를 갖습니다.