这是HTML:
<div id="outer">
<div id="inner"></div>
Test
</div>
Run Code Online (Sandbox Code Playgroud)
这是CSS:
#inner {
float: left;
height: 100%;
}
Run Code Online (Sandbox Code Playgroud)
在使用Chrome开发人员工具进行检查后,内部div的高度为0px.
如何强制它为父div的高度的100%?
Cha*_*ick 125
对于#outer
基于其内容#inner
的高度,并且基于其高度,使两个元素绝对定位.
更多细节可以在css height属性的规范中找到,但基本上,如果高度为,则#inner
必须忽略#outer
高度,除非绝对定位.然后高度将为0,除非它本身绝对定位.#outer
auto
#outer
#inner
#inner
<style>
#outer {
position:absolute;
height:auto; width:200px;
border: 1px solid red;
}
#inner {
position:absolute;
height:100%;
width:20px;
border: 1px solid black;
}
</style>
<div id='outer'>
<div id='inner'>
</div>
text
</div>
Run Code Online (Sandbox Code Playgroud)
但是......通过#inner
绝对定位,float
设置将被忽略,因此您需要#inner
明确选择宽度,并添加填充#outer
以伪造我怀疑您想要的文本包装.例如,下面的填充#outer
宽度为#inner
+3.方便地(因为整个点是要达到#inner
100%的高度),不需要在下面包装文本#inner
,所以这看起来就像#inner
是浮动的.
<style>
#outer2{
padding-left: 23px;
position:absolute;
height:auto;
width:200px;
border: 1px solid red;
}
#inner2{
left:0;
position:absolute;
height:100%;
width:20px;
border: 1px solid black;
}
</style>
<div id='outer2'>
<div id='inner2'>
</div>
text
</div>
Run Code Online (Sandbox Code Playgroud)
我删除了之前的答案,因为它基于对您的目标的错误假设.
Aip*_*hee 120
对于父母:
display: flex;
Run Code Online (Sandbox Code Playgroud)
你应该添加一些前缀http://css-tricks.com/using-flexbox/
编辑:唯一的缺点是IE像往常一样,IE9不支持flex. http://caniuse.com/flexbox
编辑2:正如@toddsby所说,对齐项目是父项,其默认值实际上是拉伸.如果你想为孩子提供不同的价值,那就是align-self属性.
编辑3:jsFiddle:https://jsfiddle.net/bv71tms5/2/
Nat*_*erg 76
实际上,只要定位了父元素,就可以将子元素的高度设置为100%.即,如果您不希望父母绝对定位.让我进一步解释一下:
<style>
#outer2 {
padding-left: 23px;
position: relative;
height:auto;
width:200px;
border: 1px solid red;
}
#inner2 {
left:0;
position:absolute;
height:100%;
width:20px;
border: 1px solid black;
}
</style>
<div id='outer2'>
<div id='inner2'>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
Nat*_*man 24
只要您不需要支持早于IE8的Internet Explorer版本,您就可以使用它display: table-cell
来完成此任务:
HTML:
<div class="outer">
<div class="inner">
<p>Menu or Whatever</p>
</div>
<div class="inner">
<p>Page contents...</p>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
.inner {
display: table-cell;
}
Run Code Online (Sandbox Code Playgroud)
这将强制每个元素与.inner
类占据其父元素的完整高度.
Man*_*zul 16
你必须做一个包装,漂浮它,然后绝对你的div,并给它100%的高度.
HTML
<div class="container">
<div class="left">"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." </div>
<div class="right-wrapper">
<div class="right">"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." </div>
</div>
<div class="clear"> </div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
.container {
width: 100%;
position:relative;
}
.left {
width: 50%;
background-color: rgba(0, 0, 255, 0.6);
float: left;
}
.right-wrapper {
width: 48%;
float: left;
}
.right {
height: 100%;
position: absolute;
}
Run Code Online (Sandbox Code Playgroud)
说明: .right div是绝对定位的.这意味着它的宽度和高度,以及顶部和左侧位置将基于第一个父div绝对或相对定位来计算,如果在CSS中显式声明了width或height属性; 如果它们不是声明的,那么将根据父容器(.right-wrapper)计算这些属性.
因此,DIV的100%高度将根据.container最终高度计算,并且.right位置的最终位置将根据父容器计算.
leo*_*zon 15
这是实现这一目标的更简单方法:
#outer{
display: table;
}
#inner {
display: table-cell;
float: none;
}
Run Code Online (Sandbox Code Playgroud)
感谢@Itay in Floated div,100%身高
小智 8
如果你准备使用一个小jQuery,答案很简单!
$(function() {
$('.parent').find('.child').css('height', $('.parent').innerHeight());
});
Run Code Online (Sandbox Code Playgroud)
这适用于将单个元素浮动到具有100%高度的父级的一侧,而通常环绕的其他浮动元素保持在一侧.
希望这有助于jQuery的粉丝们.
归档时间: |
|
查看次数: |
320791 次 |
最近记录: |