CSS关于子元素设置了float属性后父元素高度为0的解释和解决方法
2013-06-21 21:42
666 查看
先贴一个常见的浮动代码 父元素div设置背景色为灰色#f1f1f1,子元素div分别设置不同的颜色
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>test1</title>
<style type="text/css">
#container {
background-color: #f1f1f1;
width: 80%;
margin: 20px auto;
}
.item {
float: left;
color: white;
text-shadow:0 1px black;
margin: 10px 20px;
padding: 20px;
}
#container > .item:nth-child(1) {
background-color: #F08080;
}
#container > .item:nth-child(2) {
background-color: #D8BFD8;
}
#container > .item:nth-child(3) {
background-color: #A2CD5A;
}
#container > .item:nth-child(4) {
background-color: #63B8FF;
}
</style>
</head>
<body>
<div id="container">
<div class="item">
I am No.1
</div>
<div class="item">
I am No.2
</div>
<div class="item">
I am No.3
</div>
<div class="item">
I am No.4
</div>
</div>
</body>
</html>
这个代码会生成如下的效果:
我们发现父元素根本没有高度(审查元素可以看出父元素div#container的高度=0)
分析:
浮动float属性会使得元素脱离当前HTML文档流,那么会使得:当前HTML文档会当作设置float属性的元素不存在一样。那么,由于这5个子元素都设置了float,所以可以看作父元素#container内根本没有内容,div在没内容的时候表现正好是高度=0.
解决方法:
1设置父元素float
例如:
#container {
background-color: #f1f1f1;
width: 80%;
margin: 20px auto;
float: right;
} 这样,父元素也是脱离当前文档流,子元素和父元素一起脱离,并且子元素仍在父元素内,父元素内容不空了,所以高度会适应子元素高度。
2在最后一个设置浮动的子元素后加一个空div ,并且让这个div清除浮动。
例如<div class="items"></div>
.items {clear: both;}
3父元素设置overflow:hidden;
4不要用浮动,而使用:子元素使用display:inline-table或者display:inline-block
上述这些办法得到的效果如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>test1</title>
<style type="text/css">
#container {
background-color: #f1f1f1;
width: 80%;
margin: 20px auto;
}
.item {
float: left;
color: white;
text-shadow:0 1px black;
margin: 10px 20px;
padding: 20px;
}
#container > .item:nth-child(1) {
background-color: #F08080;
}
#container > .item:nth-child(2) {
background-color: #D8BFD8;
}
#container > .item:nth-child(3) {
background-color: #A2CD5A;
}
#container > .item:nth-child(4) {
background-color: #63B8FF;
}
</style>
</head>
<body>
<div id="container">
<div class="item">
I am No.1
</div>
<div class="item">
I am No.2
</div>
<div class="item">
I am No.3
</div>
<div class="item">
I am No.4
</div>
</div>
</body>
</html>
这个代码会生成如下的效果:
我们发现父元素根本没有高度(审查元素可以看出父元素div#container的高度=0)
分析:
浮动float属性会使得元素脱离当前HTML文档流,那么会使得:当前HTML文档会当作设置float属性的元素不存在一样。那么,由于这5个子元素都设置了float,所以可以看作父元素#container内根本没有内容,div在没内容的时候表现正好是高度=0.
解决方法:
1设置父元素float
例如:
#container {
background-color: #f1f1f1;
width: 80%;
margin: 20px auto;
float: right;
} 这样,父元素也是脱离当前文档流,子元素和父元素一起脱离,并且子元素仍在父元素内,父元素内容不空了,所以高度会适应子元素高度。
2在最后一个设置浮动的子元素后加一个空div ,并且让这个div清除浮动。
例如<div class="items"></div>
.items {clear: both;}
3父元素设置overflow:hidden;
4不要用浮动,而使用:子元素使用display:inline-table或者display:inline-block
上述这些办法得到的效果如下:
相关文章推荐
- CSS关于子元素设置了float属性后父元素高度为0的解释和解决方法
- CSS关于子元素设置了float属性后父元素高度为0的解释和解决方法
- 关于浮动元素float使其父元素高度塌陷的原因及解决方法
- 解决子元素用css float浮动后父级元素高度自适应高度
- 关于CSS中的float和position (父容器div内的子元素div为float时,父元素无法撑开(或高度自适应)的解决方式)
- DIV设置float后父容器无法定位高度的问题解决方法
- html 关于内部是float元素的外部div高度为0的解决方法!
- 解决子元素用css float浮动后父级元素高度自适应高度
- [译] 关于CSS中的float和position (父容器div内的子元素div为float时,父元素无法撑开(或高度自适应)的解决方式)
- [译] 关于CSS中的float和position (父容器div内的子元素div为float时,父元素无法撑开(或高度自适应)的解决方式)
- DIV设置float后父容器无法定位高度的问题解决方法
- 利用overflow属性解决子元素float浮动后父级元素高度无法自适应的问题
- 关于CSS中内层使用float导致外层的背景无法显示的问题的解决方法
- 子元素浮动父容器高度不能自适应的CSS解决方法
- div+css总结—FF下div不设置高度背景颜色或外边框不能显示的解决方法
- Android中CSS设置select高度的bug解决方法及jq操作select
- 【css】浮动的影响及解决方法(父元素无高度,而子元素有高度)
- 关于一些css属性在微信上不兼容的解决方法
- div+css中设置了float属性后如何让外层的高度随着内层的高度大小自动调整
- 子元素浮动父容器高度不能自适应的CSS解决方法