[css] CSS div 높이를 100 % 빼고 nPx를 설정하는 방법
2 개의 div를 서로 옆에 묶는 래퍼 div가 있습니다. 이 컨테이너 위에 헤더를 포함하는 div가 있습니다. 래퍼 div는 100 %에서 헤더 높이를 뺀 값이어야합니다. 헤더는 약 60 픽셀입니다. 이것은 고정되어 있습니다. 그래서 내 질문은 : 래퍼 div의 높이를 100 %에서 60px로 어떻게 설정합니까?
<div id="header"></div>
<div id="wrapper">
<div id="left"></div>
<div id="right"></div>
</div>
답변
다음은 Firefox / IE7 / Safari / Chrome / Opera에서 테스트 된 작동중인 CSS입니다.
* {margin:0px;padding:0px;overflow:hidden}
div {position:absolute}
div#header {top:0px;left:0px;right:0px;height:60px}
div#wrapper {top:60px;left:0px;right:0px;bottom:0px;}
div#left {top:0px;bottom:0px;left:0px;width:50%;overflow-y:auto}
div#right {top:0px;bottom:0px;right:0px;width:50%;overflow-y:auto}
“overflow-y”는 w3c 승인을받지 않았지만 모든 주요 브라우저가이를 지원합니다. #div와 #right의 두 div는 내용이 너무 높으면 세로 스크롤 막대를 표시합니다.
이것이 IE7에서 작동하려면 DOCTYPE을 추가하여 표준 호환 모드를 트리거해야합니다.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title></title>
<style type="text/css">
*{margin:0px;padding:0px;overflow:hidden}
div{position:absolute}
div#header{top:0px;left:0px;right:0px;height:60px}
div#wrapper{top:60px;left:0px;right:0px;bottom:0px;}
div#left{top:0px;bottom:0px;left:0px;width:50%;overflow-y:auto}
div#right{top:0px;bottom:0px;right:0px;width:50%;overflow-y:auto}
</style>
</head>
<body>
<div id="header"></div>
<div id="wrapper">
<div id="left"><div style="height:1000px">high content</div></div>
<div id="right"></div>
</div>
</body>
답변
CSS3에서는 다음을 사용할 수 있습니다
height: calc(100% - 60px);
답변
IE6를 지원해야하는 경우, JavaScript를 사용하여 랩퍼 div의 크기를 관리하십시오 (창 크기를 읽은 후 요소의 위치를 픽셀 단위로 설정). JavaScript를 사용하지 않으려면이 작업을 수행 할 수 없습니다. 해결 방법이 있지만 모든 경우와 모든 브라우저에서 작동하는 데 1-2 주가 소요될 것으로 예상됩니다.
다른 최신 브라우저의 경우 다음 CSS를 사용하십시오.
position: absolute;
top: 60px;
bottom: 0px;
답변
위대한 하나 … 지금 그는 % 그가 사용을 중지했습니다 … 아래에 표시된 메인 컨테이너를 제외하고 :
<div id="divContainer">
<div id="divHeader">
</div>
<div id="divContentArea">
<div id="divContentLeft">
</div>
<div id="divContentRight">
</div>
</div>
<div id="divFooter">
</div>
</div>
그리고 여기 CSS가 있습니다 :
#divContainer {
width: 100%;
height: 100%;
}
#divHeader {
position: absolute;
left: 0px;
top: 0px;
right: 0px;
height: 28px;
}
#divContentArea {
position: absolute;
left: 0px;
top: 30px;
right: 0px;
bottom: 30px;
}
#divContentLeft {
position: absolute;
top: 0px;
left: 0px;
width: 250px;
bottom: 0px;
}
#divContentRight {
position: absolute;
top: 0px;
left: 254px;
right: 0px;
bottom: 0px;
}
#divFooter {
position: absolute;
height: 28px;
left: 0px;
bottom: 0px;
right: 0px;
}
모든 알려진 브라우저에서 이것을 테스트했으며 정상적으로 작동합니다. 이 방법을 사용하는 데 단점이 있습니까?
답변
높이 와 같은 것을 할 수 있습니다 . calc (100 %-nPx); 예를 들어 높이 : calc (100 %-70px);
답변
div {
height: 100%;
height: -webkit-calc(100% - 60px);
height: -moz-calc(100% - 60px);
height: calc(100% - 60px);
}
적게 사용하는 동안 확인하십시오
height: ~calc(100% - 60px);
그렇지 않으면 덜 올바르게 컴파일하지 않을 것입니다.
답변
이것은 제기 된 질문에 정확하게 대답하지는 않지만 달성하려는 것과 동일한 시각 효과를 생성합니다.
<style>
body {
border:0;
padding:0;
margin:0;
padding-top:60px;
}
#header {
position:absolute;
top:0;
height:60px;
width:100%;
}
#wrapper {
height:100%;
width:100%;
}
</style>