2013-10-29 8 views
18

가로 스크롤 막대가있는 페이지 레이아웃 작업 중입니다. 가로 세로 순서로 고정 너비가있는 패널이 하나 있는데, 모두 뷰포트 높이가 있어야합니다. 나는 이것을하기 위해 vh 장치를 시험하기로 결정했다.vh-units이 스크롤바를 무시하는 것을 방지하려면 어떻게해야합니까?

.panel { height: 100vh; } 

스크롤 막대가 나타날 때까지 정상적으로 작동합니다. 문제는 vh이 스크롤 막대에서 사용되는 높이를 무시하므로 세로 스크롤 막대가 추가된다는 것입니다.

vh의 측정 값에서 스크롤 막대의 높이를 뺍니다. 이 일을 할 수있는 방법이 있습니까?

+2

어떻게 .panel {높이'에 대해 : CALC (100vh-17px); }'. 스크롤 막대가 얼마나 큰지, 브라우저/OS에 따라 좌우되는지는 잘 모르겠습니다. – kleinfreund

+0

@kleinfreund 나는 Chrome과 Safari의 최신 버전을 사용해 보았습니다. 둘 다 나에게'예기치 않은 CSS 토큰을 준다 :'). 그리고 앞서 언급 한 것처럼 알 수없는 스크롤바 높이에 문제가있을 수 있습니다. – Afterlame

+0

그러면 자바 스크립트를 사용하여 스크롤 막대의 _ 실제 _ 높이를 계산할 수 있습니다. 그러나 나는 당신이 좋은 CSS 기반 솔루션을 원할 것이라고 확신합니다. 그리고 예, 나는 googled 및 뷰포트 단위 및 calc() 실제로 atm 작동하지 않습니다. – kleinfreund

답변

5

overflow-y : hidden이있는 부모 요소를 사용하여 수직 스크롤 막대가 생기지 않도록하고 내부에 100vh를 안전하게 사용할 수 있습니다. 이것은 어떤 이유로 든 실제로 100vh가 필요하고 수직 공간을 채울 필요가 없다고 가정합니다.

HTML

<div id="main"> 
    <div id="container"></div> 
</div> 

CSS

#main { 
    width:200vw; 
    height:100%; 
    background: red; 
    position: absolute; 
    overflow-y: hidden; 
} 

#container { 
    height: 100vh; 
    width:10px; 
    background: blue; 
} 
+0

오버 플로우가 숨겨져있는 커버 사용에 찬성하지 않습니다. 그런 다음 100vh가 아니라 100 %를 #container 높이로 설정할 수 있습니다. –

+1

나는 100vh가 불필요하고 내 대답에 많은 것을 암시하지만, 질문은 뷰포트 단위에 관한 것이었다. – mirichan