2012-01-09 1 views
2

사이드 바가있는 웹 애플리케이션을 작성하고 있습니다. webapp은 전체 화면 (절대 위치, 100 % 높이/너비)을 채우는 div에 맞습니다. 사이드 바는 상단 (고정 된 높이)에 제목과 로고가 있고 그 아래에 항목 목록이 들어있는 div가 있습니다. 표시되는 사이드 바를 오버런하면이 목록을 overflow: auto으로 설정하고 싶습니다. 사이드 바에 max-height: 100%을 사용해 보았지만 스크롤바를 호출하지는 않습니다. div가 사이드 바의 나머지 수직 공간을 채우게하고, 내용이 보이는 영역을 오버런 할 경우 스크롤바를 표시 할 수 있습니까?나머지 수직 공간을 채우는 DIV에 대해 자동 스크롤 막대를 설정하려면 어떻게해야합니까?

+--------------------------------------------------------------------------+ 
| #app_pane                | 
| +------------------+              | 
| | #sidebar   |              | 
| | +--------------+ |              | 
| | | #logo  | |              | 
| | |    | |              | 
| | | height: 50px | |              | 
| | |    | |              | 
| | +--------------+ |              | 
| | +--------------+ |              | 
| | | #list  | |              | 
| | |    | |              | 
| | |    | |              | 
| | |   <----+-+-----------o fill remaining height     | 
| | |    | |    and display scrollbars if necessary | 
| | |    | |              | 
| | |    | |              | 
| | |    | |              | 
| | |    | |              | 
| | |    | |              | 
| | |    | |              | 
| | |    | |              | 
| | |    | |              | 
| | |    | |              | 
| | |    | |              | 
| | |    | |              | 
| | +--------------+ |              | 
| +------------------+              | 
+--------------------------------------------------------------------------+ 

편집 : 나는 calc()와 CSS3에서 할 수있는 것처럼 글쎄 그것은 보이는,하지만 난 기존 브라우저 지원 솔루션을 선호하는 것입니다.

+0

이것은 약간의 도움이 필요합니다. 'max-height : 100 %'는 속임수를 사용하지 않을 것입니다. 레거시 브라우저에서. 브라우저 지원 측면에서 어느 정도 뒤로 가야합니까? – moey

+0

제한적이지만 기술적 인 잠재 고객을 타겟팅하고 있습니다. 그래서 나는 지난 2 년 이내에 브라우저를 기대하며, 최첨단을 요구하지 않는 것이 바람직합니다. –

+1

그래서 이걸 원해? http://jsfiddle.net/9uJDZ/1 – mrtsherman

답변

2

유연한 상자 레이아웃 속성을 사용하여이 레이아웃을 구현할 수 있지만이 부분은 현재 Firefox (since version 1)으로만 지원됩니다. 즉, 스크롤 막대 문제를 해결하고 로고를 맨 위에 올려 놓으면 다음과 같이 할 수 있습니다. Safari (since version 2 or 3) and Chrome (since version 1).

  • http://jsfiddle.net/gTAKL/
  • 당신이 #sidebardisplay: -webkit-box에, 당신은 그것을 다른 #sidebar 어린이가 사용하는 모든 공간을 차지하기 위해 #list-webkit-box-flex 속성을 사용할 수 있습니다 설정하면

    +0

    이 답변을 제공해 주셔서 감사합니다. 저는 유연한 박스 레이아웃 속성을 알지 못했고 합리적인 접근법처럼 보입니다. 나는 그것을 줄 것이다. –

    +0

    @WilliBallenthin 대단히 반갑습니다. 조금은 짜증나는 IE와 Opera에는 등가물이 없지만, 이론적으로 모듈은 CSS가 전통적으로 처리 할 수 ​​없었던 레이아웃에 정말 유용하게 보입니다. –

    0

    아마도 100 % 높이의 사이드 바를 얻으려면 Faux Column을 찾고있을 것입니다. 이것은 매우 일반적으로 사용됩니다. 이는 전체 높이 열의 모양을 나타 내기위한 것입니다. http://jsfiddle.net/9uJDZ/24/

    +0

    당신은 바이올린에서 목록에 명시적인 높이를 사용합니다. 목록을 사용 가능한 모든 공간 (다소 높이 : 100 %)으로 확장하고 싶지만 포함하는 div를 넘지는 마십시오. 당신의 접근 방식을 사용하여 이것을 할 수 있습니까? –

    관련 문제