2012-11-28 3 views
1

나는 이와 같은 레이아웃이 있습니다오버플로 - y div를 수직 사용 가능한 공간으로 확장하는 방법은 무엇입니까?

<div id="container"> 
    <div id="A"></div> 
    <div id="B"></div> 
    <div id="C"></div> 
</div> 

을 여기에 (불완전한) CSS는 다음과 같습니다

#container { 
    height: 400px; 
    background: red;  
} 

#A { 
    height: 50px; 
    background: yellow; 
} 

#B { 
    height: 300px; 
    background: blue; 
    overflow-y: auto;  
} 

#C { 
    height: 50px; 
    background: yellow; 
} 

그래서 AB와 C는 서로 위에 쌓인되어야하고, B는를 작성해야 A와 C 사이에 남아있는 공간으로 내용이 너무 많으면 스크롤 바를 보여줍니다.
내 문제는 때로는 C 이 누락 될 수 있다는 것입니다.이 B의 공간을 동적으로 확장하도록하려면 어떻게해야합니까?

답변

2

한 가지 가능한 방법은 다음과 같습니다 그래서

#B:last-child { 
    height: 350px; 
}​ 

http://jsfiddle.net/thirtydot/7Bqkb/1/

, #B 수동으로 올바른 값으로 높이를 설정, 마지막 아이 인 경우는.

:last-child browser support.

+0

IE7/8 지원이 부족한 경우이 아이디어를 해당 브라우저에서도 작동하도록 재구성 할 수 있습니다. – thirtydot

+0

잘 IE8 지원은 나쁘지 않을 것이다 :) – Joril

+0

나는 마음에 쉽게 고칠 수 있었지만 나는 내 삶을 기억할 수 없다. 그게 뭔지 기억해라. 여기에 약간의 HTML 주문 : http://jsfiddle.net/thirtydot/7Bqkb/ – thirtydot

1

또 다른 방법은 ~ 선택 사용 :

#B { 
    height: 350px; 
    background: blue; 
    overflow-y: auto;  
} 
#C~#B { 
    height: 300px; 
} 

http://jsfiddle.net/VtWAY/2

가 IE7이 있으시면 + 지원을 http://reference.sitepoint.com/css/generalsiblingselector

편집 : 당신은 또한에 B와 C를 교환하는 경우에만 작동합니다 html. http://jsfiddle.net/VtWAY/4/

+0

그것에 대해 몰랐습니다, 감사합니다! – Joril

+0

불행히도'# C ~ # B {height : 300px; }'은 HTML에 대해 아무 것도하지 않습니다 : http://jsfiddle.net/thirtydot/VtWAY/3/. 아래로 스크롤하면'# B'가 여전히 350px라는 것을 알 수 있습니다. 게시 한 참조 링크 안에 "이전에 발생했습니다"부분을 읽으십시오. – thirtydot

+0

죄송합니다 ... 언젠가는 언젠가 저를 위해 일했다고 확신했습니다. 죄송합니다. 물론,'B'와'C'의 순서를 바꾸면 작동합니다. – flyingjamus

관련 문제