子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属性才会起作用,因为清除操作只作用于块级元素,它的原理是为要执行清除操作的元素添加上边距,以此让元素降到浮动元素的下面,而操作行内元素的上边距不起作用。

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

-------------------

原文链接:https://blog.csdn.net/cedar777/article/details/53886182

 

猜你喜欢

转载自www.cnblogs.com/gwkzb/p/12511883.html
今日推荐