CSS 컨테이너 div가 높이를 얻지 못함


116

내 컨테이너 div가 자식 높이의 최대 높이를 얻길 원합니다. 아이 div의 키가 얼마인지 모른 채 . 나는 JSFiddle 에서 시도하고 있었다 . 컨테이너 div가 빨간색입니다. 표시되지 않습니다. 왜?

답변:


282

다음 속성을 추가합니다.

.c{
    ...
    overflow: hidden;
}

이렇게하면 컨테이너가 플로팅 요소에 관계없이 그 안에있는 모든 요소의 높이를 준수하게됩니다.
http://jsfiddle.net/gtdfY/3/

최신 정보

최근에 저는이 트릭이 필요하지만 오버플로를 표시 할 수있는 프로젝트를 진행하고 있었으므로 대신 가상 요소를 사용하여 플로트를 지우고 모든 요소에서 오버플로를 허용하면서 효과적으로 동일한 효과를 얻을 수 있습니다.

.c:after{
    clear: both;
    content: "";
    display: block;
}

http://jsfiddle.net/gtdfY/368/


8
기본적으로이 속성을 추가하면 외부 상자가 부동 컨테이너의 규칙을 무시하고 컨테이너의 높이가 계산되지 않는 규칙을 무시하고 전체 배경 도면에 적용합니다.
Nightfirecat 2011 년

4
와, "뭐? 그게 안될거야." 그러나 나는 감히 감당할 것이다. 나는 그것이 제대로 작동하지 않을 것이라고 완전히 생각했습니다. 감사합니다
fie

1
정말 해키하지 않나요? 나에게 그것은 오버플로의 목적을 무너 뜨린다. 이것이 정확하고 가장 찬성 된 대답 인지 이해하지 못합니다 .
Andrew Weir 2013 년

3
@AndrewWeir 나는 지금까지 컨테이너를 확장하는이 방법이 왜 플로트 크기를 올바르게 고려하는지 완전히 확신하지 못했습니다. 에 따르면 여러 소스 , 볼 수 오버 플로우를 허용에서의 렌더링 모드를 변경하는 요소를 유발한다는 것 하지 그렇게, 그렇게함으로써,이 힘 요소는 오버 플로우를 허용 할 수 있습니다.
Nightfirecat

2
오버플로를 사용하는 첫 번째 방법이 저에게 효과적입니다. 두 번째 방법은 또한 작동하며 앞으로 오버플로가 발생할 경우 덜 위험 해 보입니다. 나는 두 번 찬성 할 수 있기를 바랍니다.
Tyler Collier

28

당신은 아이들이 컨테이너 앞에 "떠 다니는"것을 의미합니다. 정확한 높이를 얻으려면 플로트를 "클리어"해야합니다.

div style = "clear : both"는 플로팅을 지우고 컨테이너에 올바른 높이를 제공합니다. 플로트에 대한 자세한 내용은 http://css.maxdesign.com.au/floatutorial/clear.htm 을 참조 하십시오 .

예.

<div class="c">
    <div class="l">

    </div>
    <div class="m">
        World
    </div>
    <div style="clear: both" />
</div>

이것은 명확합니다 : 둘 다; 문제는 떠 다니는 자식이기 때문에 컨테이너의 높이에 대한 적절한 해결책 인 것 같습니다. 따라서이 접근 방식은 오버플로보다 더 나은 것 같습니다. hidden; 위에 하나.
Ronnie Depp

이 간단한 솔루션을 공유해 주신 @Yoeri에게 감사드립니다. 최고야! 나는 디자인 측면이 아닌 PHP 개발 관점에만 집중 한 후 웹 레이아웃을 마지막으로 디자인 한 지 거의 6 년이 되었기 때문에 새로운 디자인을위한 동일한 솔루션을 찾고 있습니다.
Ronnie Depp 2013 년


4

이 지우기 div를 마지막 전에 삽입하십시오. </div>

<div style="clear: both; line-height: 0;">&nbsp;</div>


3

가장 좋고 가장 방탄 솔루션을 추가하는 것입니다 ::before::after컨테이너에 pseudoelements. 예를 들어 다음과 같은 목록이 있다면

<ul class="clearfix">
    <li></li>
    <li></li>
    <li></li>
</ul>

그리고 목록의 모든 요소에는 float:left속성 이 있으므로 CSS에 추가해야합니다.

.clearfix::after, .clearfix::before {
     content: '';
     clear: both;
     display: table;
}

또는 display:inline-block;속성을 시도한 다음 clearfix를 추가 할 필요가 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.