子div有内容,父div高度为0的解决方法

原始代码:

<html> 
<head> 
<title>Float</title> 
<style type = "text/css"> 
ul { 
list-style-type: none; 
width: 800px; 
background: blue; 
} 
li { 
float: left; 
} 
</style> 
</head> 
<body> 
<ul> 
<li><img src = "1.jpg" /></li> 
<li><img src = "2.jpg" /></li> 
<li><img src = "3.jpg" /></li> 
<li><img src = "4.jpg" /></li> 
<li><img src = "5.jpg" /></li> 
<li><img src = "6.jpg" /></li> 
</ul> 
</body> 
</html>

子div有内容,父div高度为0是因为子元素设置了 float属性的缘故。


解决方法

1 给包含元素设置高度height 值。


ul { 
list-style-type: none; 
width: 800px; 
background: blue; 
height: 300px; /*添加高度属性*/ 
}

2 利用overflow属性 
可以包含元素设置overflow属性,并设置属性值为auto或者hidden。


ul { 
list-style-type: none; 
width: 800px; 
background: blue; 
overflow: hidden; /*添加overflow属性,可以设置为auto或者hidden*/ 
} 

3 添加一个空的div 
这种方法是添加一个空的div,这个div和浮动元素同一级别,且位于浮动元素的最后。这种方法要改动两个地方,一个是html代码,另一个是必须要为这个div添加一个clear属性: 


<html> 
<head> 
<title>Float</title> 
<style type = "text/css"> 
ul { 
list-style-type: none; 
width: 800px; 
background: blue; 
} 
li { 
float: left; 
} 
/*为添加的空div设置的样式*/ 
.clearDiv { 
clear: both; 
} 
</style> 
</head> 
<body> 
<ul> 
<li><img src = "1.jpg" /></li> 
<li><img src = "2.jpg" /></li> 
<li><img src = "3.jpg" /></li> 
<li><img src = "4.jpg" /></li> 
<li><img src = "5.jpg" /></li> 
<li><img src = "6.jpg" /></li> 
<div class = "clearDiv"></div> <!--新添加的空div,它和浮动元素同一级别,且位于最后--> 
</ul> 
</body> 
</html> 

4 利用伪元素:after 
用这种方法时要为包含元素先添加一个类名,这里为ul标签设置的类名.clearUl,代码如下: 


<html> 
<head> 
<title>Float</title> 
<style type = "text/css"> 
ul { 
list-style-type: none; 
width: 800px; 
background: blue; 
} 
li { 
float: left; 
} 
/*利用:after伪元素*/ 
.clearUl:after { 
content:""; 
display: block; 
clear: both; 
} 
</style> 
</head> 
<body> 
<ul class = "clearUl"> <!--为包含的外围元素设置类--> 
<li><img src = "1.jpg" /></li> 
<li><img src = "2.jpg" /></li> 
<li><img src = "3.jpg" /></li> 
<li><img src = "4.jpg" /></li> 
<li><img src = "5.jpg" /></li> 
<li><img src = "6.jpg" /></li> 
</ul> 
</body> 
</html> 

在:after为元素里面用到了content属性,这样这条样式的意思是在ul元素后面生成指定的内容,这里生成的内容是一个空字符串,因为只是让它来消除ul标签的高度折叠,并不让它显示出来。还有,这条样式里有display属性,要将他设置成block,这样clear属性才会起作用,因为清除操作只作用于块级元素,它的原理是为要执行清除操作的元素添加上边距,以此让元素降到浮动元素的下面,而操作行内元素的上边距不起作用。


(参考:  http://www.jb51.net/css/74450.html 


当我们没有给父div设置高度的时候,子div的高度,就会撑开父div,而在另一个方面,当我们给父div加上一个高度值,那么无论子div的高度是多少,父div高度都是我们设定的值。而当子div的高度超过父div的高度的时候,超出的部分就会被隐藏。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值