2011-04-01 22 views
47
<div id="parent" style="overflow:hidden; position:relative;"> 
    <div id="child" style="position:absolute;"> 
    </div> 
</div> 

부모 요소보다 크지 만 오버플로를 제거하지 않고 자식 요소를 표시해야합니다. 이것이 가능한가? 부모 요소의 길이가 position:relative; 입니다. 부모 요소 테두리에서 벗어나면 자식 요소가 제거됩니다.절대 위치 및 오버플로 : 숨김

항상 가능한 가장 작은 크기로 추가합니다 폭을 자동으로

* {margin: 0; padding: 0;} 

#parent {width: auto; overflow: hidden;} 

#child {position: absolute; width: auto;} 

...

+1

이 [링크] (번 봐 http://jsfiddle.net/ Town/uLeWp/2 /), 이것이 당신이 원하는 것입니까? 기본적으로 당신이 이미하고있는 것입니다. – Town

+0

예제 코드가 잘못되었습니다. 자식 요소가 부모 경계에없는 즉시 제거됩니다. "'현재 코드에서는 발생하지 않습니다. http://jsfiddle.net/thirtydot/wPPH5/ 더 좋은 예제를 추가하십시오. – thirtydot

+0

은 부모에게 높이를 지정하여 아이를 맞추기에 충분하지 않게하지 않는 한 가능하지 않습니다. 'overflow : hidden'은 여러분의 요구 사항과 대비됩니다. 그것은 둘 중 하나 또는 다른 것이지 둘 다 아닙니다. – Bazzz

답변

30

대신 당신은 여분의 아이 div을 소개하고 그에게 overflow: hidden를 이동할 수 있습니다 .. 상위 div에 모두 overflow: hiddenposition: relative으로 원하는 것을 완전히 불가능하다.

참조 : http://jsfiddle.net/thirtydot/TFTnU/

HTML :

<div id="parent"> 
    <div id="hideOverflow"> 
     <div style="width:1000px;background:#ccc">sdfsd</div> 
    </div> 
    <div id="child">overflow "visible"</div> 
</div> 

CSS : clearfix 숨겨져 :

#parent { 
    position:relative; 
    background:red; 
    width:100px; 
    height:100px 
} 
#child { 
    position:absolute; 
    background:#f0f; 
    width:300px; 
    bottom: 0; 
    left: 0 
} 
#hideOverflow { 
    overflow: hidden 
} 
+2

position : relative 속성을 제거하면 하위가 오버플로 할 수 있습니다. – Grsmto

+0

이것은 여전히 ​​나를 잡습니다. 그러한 명백한 해결책도 있습니다. –

0

CSS를 사용 (요소 추가 CSS를 정의한 난 그냥 넣어 스타일은 명료 속성); 리셋을하면 자연의 흐름을 유지하는 데 도움이됩니다.

그러나 자녀가 부모보다 더 커지면 불가능합니다. 그러나이 CSS를 사용하면 가능한 최대의 것을 얻을 수 있다고 생각합니다.

1

내가 일반적으로 오버 플로우 사용합니다. 이 경우에는 포기하고 추가 div를 추가합니다.

<div id="parent" style="position:relative;"> 
    <!-- floating divs here --> 
    <div id="child" style="position:absolute;"></div> 
    <div style="clear:both"></div> 
</div> 
3

아래 코드는 매력처럼 작동합니다.

<div id="grandparent" style="position:relative;"> 
    <div id="parent" style="overflow:hidden;"> 
     <div id="child" style="position:absolute;"> 
     </div> 
    </div> 
</div> 
0

thirtydot의 솔루션은 실제로 좋은 아이디어입니다.

여기 명확한 예제 : http://jsfiddle.net/y9dtL68d/

HTML

<div id="grandparent"> 
    <div id="parent"> 
     <p>this has a lot of content which ...</p> 
     <p>this has a lot of content which ...</p> 
     <p>this has a lot of content which ...</p> 
     <p>this has a lot of content which ...</p> 
     <p>this has a lot of content which ...</p> 
     <p>this has a lot of content which ...</p> 
     <p>this has a lot of content which ...</p> 
    </div> 
    <div id="child"> 
     dudes 
    </div>  
</div> 

CSS

#grandparent { 
    position: relative; 
    width: 150px; 
    height: 150px; 
    margin: 20px; 
    background: #d0d0d0; 
} 
#parent { 
    width: 150px; 
    height: 150px; 
    overflow:hidden; 
} 
#child { 
    position: absolute; 
    background: red; 
    color: white; 
    left: 100%; 
    top: 0; 
} 
관련 문제