2011-10-27 4 views
2

꽤 오랜 시간이 지나면 질문을 많이 받았지만 여기 해결책을 찾고 나서야 궁금한 점이 있습니다.HTML/CSS - 사이드 바 길이 세로 스크롤 막대에 관계없이 100 % 페이지 높이

현재 개발중인 응용 프로그램에 대한 HTML 도움말 파일을 작성 중이며 파일은 두 부분으로 나뉩니다. 하나는 사이드 바 (왼쪽으로 부채꼴)이고 두 개는 주 콘텐츠 섹션 (또한 왼쪽으로 떠있는 것)입니다.

내가 직면 한 문제는 메인 콘텐츠가 페이지 높이의 100 %를 초과하여 확장되면 사이드 바 배경이 중지된다는 것입니다.

바디의 다른 배경 이미지를 설정해야하지만 내 디자인의 무결성을 유지하기 위해 사이드 바의 배경 이미지를 할당 할 때 가짜 열 효과를 사용합니다.

체크 아웃이 바이올린은 내가 설정 JS - http://jsfiddle.net/5gpFx/

희망을 내가 잘 충분히 의사 소통에 실패 할 경우 문제가 무엇인지 볼 수 있도록 도와줍니다!

건배!

답변

0

컨테이너의 두 열을 모두 감싸고 그 위에 가짜 열 배경을 설정하기 만하면 원하는대로 이미지를 설정할 수 있습니다. 여기에 간단한 예제를 만들었습니다 : http://jsfiddle.net/5gpFx/2/

0

같은 문제가 있었지만 위의 flexboxes로 해결할 수 없었습니다. 그래서 난 내 자신의 템플릿을 생성, 그것은 포함

  • 고정 된 크기의 요소와 헤더
  • 바닥 글
  • 나머지 높이를 차지하는 스크롤 막대와 사이드 바
  • 내용

플렉스 박스를 사용했지만 속성 만 사용하면 더 편리합니다. 디스플레이 : flex플렉스 방향 : 행 :

각도를 사용하고 구성 요소 크기가 상위 요소의 100 %가되도록하고 싶습니다.

열쇠는 크기를 제한하기 위해 모든 부모의 크기 (백분율)를 설정하는 것입니다. 다음 예제에서 myapp 높이의 뷰포트는 100 %입니다.

머리글과 바닥 글의 크기가 5 %이므로 주 구성 요소의 뷰포트 크기가 90 %입니다. https://jsfiddle.net/abreneliere/mrjh6y2e/3

 body{ 
     margin: 0; 
     color: white; 
     height: 100%; 
    } 
    div#myapp 
    { 
     display: flex; 
     flex-direction: column; 
     background-color: red; /* <-- painful color for your eyes ! */ 
     height: 100%; /* <-- if you remove this line, myapp has no limited height */ 
    } 
    div#main /* parent div for sidebar and content */ 
    { 
     display: flex; 
     width: 100%; 
     height: 90%; 
    } 
    div#header { 
     background-color: #333; 
     height: 5%; 
    } 
    div#footer { 
     background-color: #222; 
     height: 5%; 
    } 
    div#sidebar { 
     background-color: #666; 
     width: 20%; 
     overflow-y: auto; 
    } 
    div#content { 
     background-color: #888; 
     width: 80%; 
     overflow-y: auto; 
    } 
    div.fized_size_element { 
     background-color: #AAA; 
     display: block; 
     width: 100px; 
     height: 50px; 
     margin: 5px; 
    } 

HTML : :

<body> 
<div id="myapp"> 
    <div id="header"> 
     HEADER 
     <div class="fized_size_element"></div> 

    </div> 
    <div id="main"> 
     <div id="sidebar"> 
      SIDEBAR 
      <div class="fized_size_element"></div> 
      <div class="fized_size_element"></div> 
      <div class="fized_size_element"></div> 
      <div class="fized_size_element"></div> 
      <div class="fized_size_element"></div> 
      <div class="fized_size_element"></div> 
      <div class="fized_size_element"></div> 
      <div class="fized_size_element"></div> 
     </div> 
     <div id="content"> 
      CONTENT 
     </div> 
    </div> 
    <div id="footer"> 
     FOOTER 
    </div> 
</div> 
</body> 
여기 내 템플릿을 게시

관련 문제