如何使用CSS将div的高度调整为容器高度?
<div class='container'><br>
<div style='display: block; height: 500px'>left</div><br>
<div id='to-be-sized' >right</div><br>
</div>
答案 0 :(得分:8)
你可以:
或
你的选择:)
答案 1 :(得分:7)
如果您碰巧使用jQuery,有一种方法可以做到这一点。当你问起CSS时,这可能不是你可以选择的选项,但是如果你可以使用它,那么它将完全符合你的需要。
$(divToResize).css('height',$(container).innerHeight());
$(divToResize)是您希望与其容器高度匹配的DIV的选择器,$(容器)在逻辑上是您想要获得其高度的容器。
无论是否在CSS中指定容器的高度,这都将起作用。
答案 2 :(得分:3)
如果我的理解是正确的并且没有指定高度的div的默认高度是auto,那么如果不在包含div上设置显式高度,则无法实现。如果在包含div上设置了显式高度,则所包含div上的height:100%将表示它增长到容器的高度。
答案 3 :(得分:2)
看起来你正试图获得相同的高度列。您可以使用fauxcolumns方法,其中使用背景图像伪造相同的高度。还有其他方法。
答案 4 :(得分:2)
您可以告诉容器div显示为表格,并让内部div显示为表格单元格。
HTML
<body>
<div id="wrap">
<div id="header">
<h1>
My Header</h1>
</div>
<div id="main">
<ul id="nav">
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
</ul>
<div id="primaryContent">
</div>
</div>
<div id="footer">
<h1>
My Footer</h1>
</div>
</div>
CSS
#wrap
{
width: 800px;
margin: auto;
}
#header
{
background: red;
}
#main
{
display: table;
}
#nav
{
background: gray;
width: 150px;
display: table-cell;
}
#primaryContent
{
background: yellow;
padding: 0 .5em;
display: table-cell;
}
修复IE
#wrap
{
width: 800px;
margin: auto;
}
#header, #footer
{
background: red;
}
#main
{
background: url(../bg.png) repeat-y;
}
#nav
{
background: gray;
width: 150px;
float: left;
}
#primaryContent
{
background: yellow;
margin-left: 150px;
padding: 0 .5em;
}
答案 5 :(得分:2)
我知道这在很久以前就得到了回答,但是当我遇到这个问题时,我会使用Flex Box。这很棒。请参阅Chris Coyier的A Complete Guide to Flexbox
.parent {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
width: 100%;
}
.child {
flex-grow: 1;
}
.child1 {
min-height: 200px;
background-color: #fee;
}
.child2 {
background-color:#eef;
}
<div class="parent">
<div class="child child1">Child 1</div>
<div class="child child2">Child 2</div>
</div>
Flexbox Layout
(灵活盒子)模块旨在提供一种更有效的方式来布置,对齐和分配容器中的项目之间的空间,即使它们的大小未知和/或动态(因此“弯曲“)。flex布局背后的主要思想是让容器能够改变其项目的宽度/高度(和顺序),以最好地填充可用空间(主要是为了适应所有类型的显示设备和屏幕尺寸)。 Flex容器扩展项目以填充可用空间,或缩小它们以防止溢出。
最重要的是,flexbox布局与方向无关,而不是常规布局(基于垂直的块和基于水平的内联块)。虽然这些页面适用于页面,但它们缺乏灵活性(没有双关语)来支持大型或复杂的应用程序(特别是在方向更改,调整大小,拉伸,缩小等方面)。
答案 6 :(得分:1)
这是一个棘手的事情 - 没有明确的最佳方法,但有一些常见的方法。 如果我们假设您真正需要的是右列的高度(或看起来)等于左列的高度,则可以使用常用于获得相等高度列的任何技术。 This piece包含一些技巧,可以获得正确的外观和行为。我建议阅读它以确定它是否能解决您的问题。
另一种方法使用Javascript来确定容器的高度,并将右侧列设置为该值。已经在SO here上讨论了这种技术。只要容器的大小不是决定外容器大小的唯一因素,那应该是一种有效的方法(如果不是这种情况,那么你会遇到鸡蛋问题,可能导致奇怪的行为)。
答案 7 :(得分:0)
示例代码,您需要从html元素开始,以便您可以使用容器中的灵活高度。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>100% Test</title>
<style type="text/css">
html, body, #inner { height: 100% }
#inner { border: 4px blue solid }
#container { height: 200px; border: 4px red solid }
</style>
</head>
<body>
<div id="container">
<div id="inner">
lorem ipsum
</div>
</div>
</body>
</html>
答案 8 :(得分:0)
<!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">
.container{
position:relative;
background-color:#999;
}
#to-be-sized{
position:absolute;
top:0;
height:100%;
background-color:#ddd;
}
</style>
<body>
<div class='container'>
<br>
<div style='display: block; height: 500px'>left</div>
<br>
<div id='to-be-sized' >right</div><br>
</div>
</body>
</html>
答案 9 :(得分:0)
我做了类似于KyokoHunter的事情:
$('div.row').each(function(){
var rowHeight = $(this).innerHeight();
$(this).children('div.column').css('height',rowHeight);
});
这会遍历div“表格”中的每一行,并且只要div被相应分类,所以高度都匹配。
答案 10 :(得分:0)
CSS文件使用'padding'函数来确定容器的高度和深度。要更改容器字段的高度,请简单插入以调整指定容器的填充字段。
以下代码摘录是用于容器类的CSS的示例(您可以在html文件中找到它。
.container{padding-top:100px;padding-bottom:50px}header
答案 11 :(得分:0)
我使用overflow:hidden
可以正常工作。
.bu {
overflow: hidden;
background-color:blue;
}
<div class="bu">
<button>english</button>
</div>
答案 12 :(得分:0)
尝试将其添加到要调整大小的div
.layout-fill {
margin: 0;
width: 100%;
min-height: 100%;
height: 100%;
}
答案 13 :(得分:-3)
您是否可以将包含元素的高度设置为height:100%;