CSS如何设置的div高度100%减去NPXCSS如何设置的div高度100%减去NPX(CSS H

2019-05-12 16:06发布

我有一个包装DIV其contans彼此相邻的2周的div。 上面这个容器我有一个包含我的头一个div。 该包装的div必须100%减去头的高度。 报头是约60像素。 这是固定的。 所以我的问题是:如何设置高度我的包装的div为100%减去60像素?

<div id="header"></div>
<div id="wrapper">
  <div id="left"></div>
  <div id="right"></div>
</div>

Answer 1:

这里是一个工作的CSS,Firefox下/ IE7 / Safari /铬/歌剧测试。

* {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}

“溢出-Y”是不是W3C认可的,但每一个主要的浏览器支持它。 如果其含量过高,你的两个div #left和#right将显示一个垂直滚动条。

对于这个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> 



Answer 2:

在CSS3你可以使用

height: calc(100% - 60px);


Answer 3:

如果您需要支持IE6,使用JavaScript,以便管理包装div的大小(设置在像素元件的位置读取窗口大小后)。 如果你不想使用JavaScript,那么这个不能做。 有解决方法,但想到一两个星期,使其在任何情况下,并在每一个浏览器。

对于其他现代浏览器,使用这个CSS:

position: absolute;
top: 60px;
bottom: 0px;


Answer 4:

伟大的......现在我已经使用%他他他......除了主容器停止,如下图所示:

<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;
}

我在所有已知的浏览器中测试这一点,是工作的罚款。 有没有使用这种方式什么缺点?



Answer 5:

你可以这样做高度:理论值(100% - NPX); 例如高度:计算值(100% - 70像素);



Answer 6:

div {
    height: 100%;
    height: -webkit-calc(100% - 60px);
    height: -moz-calc(100% - 60px);
    height: calc(100% - 60px);
}

确保同时使用更少

height: ~calc(100% - 60px);

否则少没有能正确编译



Answer 7:

这并不完全回答这个问题也提出了,但它并创建你正在努力实现相同的视觉效果。

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


Answer 8:

在这个例子中,你可以识别不同的领域:

<html>
<style>
#divContainer {
    width: 100%;
    height: 100%;
}
#divHeader {
    position: absolute;
    left: 0px;
    top: 0px;
    right: 0px;
    height: 28px;
    background-color:blue;
}
#divContentArea {
    position: absolute;
    left: 0px;
    top: 30px;
    right: 0px;
    bottom: 30px;
}
#divContentLeft {
    position: absolute;
    top: 0px;
    left: 0px;
    width: 200px;
    bottom: 0px;
    background-color:red;
}
#divContentCenter {
    position: absolute;
    top: 0px;
    left: 200px;
    bottom: 0px;
    right:200px;
    background-color:yellow;
}
#divContentRight {
    position: absolute;
    top: 0px;
    right: 0px;
    bottom: 0px;
    width:200px;
    background-color:red;
}
#divFooter {
    position: absolute;
    height: 28px;
    left: 0px;
    bottom: 0px;
    right: 0px;
    background-color:blue;
}
</style>
<body >

<div id="divContainer">
    <div id="divHeader"> top
    </div>
    <div id="divContentArea">
        <div id="divContentLeft">left
        </div>
        <div id="divContentCenter">center
        </div>
        <div id="divContentRight">right
        </div>
    </div>
    <div id="divFooter">bottom
    </div>
</div>

</body>
</html>


Answer 9:

我还没有看到这样的事还没有公布,但我想我把它放在那里。

<div class="main">
<header>Header</header>
<div class="content">Content</div>

然后CSS:

body, html {
    height: 100%;
    margin: 0;
    padding: 0;
}

.main {
    height: 100%;
    padding-top: 50px;
    box-sizing: border-box;
}

header {
    height: 50px;
    margin-top: -50px;
    width: 100%;
    background-color: #5078a5;
}

.content {
    height: 100%;
    background-color: #999999;
}

这里是一个工作的jsfiddle

注:我不知道浏览器的兼容性就是这一点。 我只是玩弄替代解决方案,这似乎很好地工作。



Answer 10:

使用外包装的div设置为100%,那么你的内包装材料的div 100%应该相对于现在是。

我想肯定这个曾经为我工作,但显然不是:

<html>
<body>
<div id="outerwrapper" style="border : 1px solid red ; height : 100%">
<div id="header" style="border : 1px solid blue ; height : 60px"></div>
<div id="wrapper"  style="border : 1px solid green ; height : 100% ; overflow : scroll ;">
  <div id="left" style="height : 100% ; width : 50% ; overflow : scroll; float : left ; clear : left ;">Some text 

on the left</div>
  <div id="right" style="height : 100% ; width 50% ; overflow : scroll; float : left ;">Some Text on the 

right</div>
</div>
</div>
</body>
</html>


Answer 11:

如果你不想使用绝对定位和所有的爵士乐,这里有一个修复我喜欢用:

您的HTML:

<body>    
   <div id="header"></div>
   <div id="wrapper"></div>
</body>

你的CSS:

body {
     height:100%;
     padding-top:60px;
}
#header {
     margin-top:60px;
     height:60px;
}
#wrapper {
     height:100%;
}


文章来源: CSS How to set div height 100% minus nPx
标签: css height