[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>