子元素浮动后,父元素高度自动增加

father:after{ content:"."; height:0; visibility:hidden; display:block; clear:both; }

清除"闭合(清除)浮动"的方法,主要是一下四种:

1.    额外标签法

这种方法就是向父容器的末尾再插入一个额外的标签,并令其清除浮动(clear)以撑大父容器。这种方法浏览器兼容性好,没有什么问题,缺点就是需要额外的(而且通常是无语义的)标签。
我个人不喜欢这种方法,但是它确实是W3C推荐的方法

程序代码
<div style="clear:both;"></div>

或者使用
 程序代码
<br style="clear:both;" />

2.    使用after伪类

这种方法就是对父容器使用after伪类和内容声明在指定的现在内容末尾添加新的内容。经常的做法就是添加一个"点",因为它比较小不太引人注意。然后我们再利用它来清除浮动(闭合浮动元素),并隐藏这个内容。
这种方法兼容性一般,但经过各种 hack 也可以应付不同浏览器了,同时又可以保证html 比较干净,所以用得还是比较多的。

程序代码

#outer:after{  
    content:".";  
    height:0;  
    visibility:hidden;  
    display:block;  
    clear:both;  
}

3.    设置overflow为hidden或者auto

这种做法就是将父容器的overflow设为hidden或auot就可以在标准兼容浏览器中闭合浮动元素.
不过使用overflow的时候,可能会对页面表现带来影响,而且这种影响是不确定的,你最好是能在多个浏览器上测试你的页面

4.    浮动外部元素,float-in-float

这种做法就是让父容器也浮动,这利用到了浮动元素的一个特性--浮动元素会闭合浮动元素。这种方式在 IE/Win 和标准兼容浏览器中都有较好的效果,但缺点也很明显--父容器未必想浮动就浮动的了,毕竟浮动是一种比较特殊的行为,有时布局不允许其浮动也很正常。
个人不是很赞成这种做法,但是从dudo最后的总结总可以看出,他好像很赞成这种做法

时间: 2024-10-13 21:48:43

子元素浮动后,父元素高度自动增加的相关文章

css 子元素浮动后父元素没有高度导致页面变形的解决办法

<!DOCTYPE html><html><head><meta charset="UTF-8"><title></title><style type="text/css">.par{width: 100%;height: auto;border: 1px solid red;}.left{width: 40%;float: left;height: 50px;background:

子元素浮动,父元素高度为0现象解释和原理浅见

有的人在写页子的时候常常会碰见这样的一个问题,就是有一个父级的div下面有子元素,子元素浮动起来后,父元素的高度变成0,撑不起来父级了. 现在先不说解决办法,先说下float属性,float定义:float 属性定义元素在哪个方向浮动.以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动.浮动元素会生成一个块级框,而不论它本身是何种元素.(摘自:w3c). 从定义看出,其实float属性一开始是被应用与图片,来形成文字环绕效果的,任何的元素只要定义了float属

子DIV浮动(float)后父DIV高度自动失效解决方案

高度的自适应(父div高度随子div的高度改变而改变): 1.如果父div不定义height.子div均为标准流的时候,父div的height随内容的变化而变化,实现父div高度随子div的高度改变而改变. 2.如果父div定义height,子div均为标准流的时候,在IE下父div的height随内容变化而变化,如父div设置height:50px 如下所示,子元素div 本身具有高度和宽度,但由于其具有float:left属性后,其父元素div不具有高度. <html> <head&

关于子元素的margin-top溢出和元素浮动对父元素高度影响解决方案

以下是个人学习笔记,仅供学习参考. 1.关于子元素的margin-top作用在无margin-top-border的父元素上导致子元素的margin-top溢出问题. 在给没有margin-top-border父元素中的子元素添加margin-top时,发现没有直接表现出来,而是作用到父元素身上,就会导致子元素的margin-top溢出. 条件: 1.父元素没有上边框 2.为第一个子元素设置上外边距时 解决方案: 1.为父元素增加上边框 弊端:父元素会变高 2.通过为父元素设置上内边距来取代子元

清除盒子内子元素浮动导致父元素塌陷的5种方法

更详细的解释请移动到: 地址1:http://www.cnblogs.com/chedabang/p/5973601.html 地址2:https://www.cnblogs.com/libin-1/p/5975367.html 盒子塌陷是什么? 何为盒子塌陷,盒子塌陷是由于子元素浮动导致的子元素脱离标准文档流,父元素无法获取子元素的高度而出现的一种现象. 盒子塌陷(如下): 盒子未塌陷(如下):   HTML/CSS代码 .... // css .box-wrapper { border: 5

【前端】浮动后父容器高度自适应

float:left; overflow:hidden; 当一个容器内元素都浮动后,它将高度将不会随着内部元素高度的添加而添加,所以造成内容元素的显示超出了容器. 在我们没有为容器设置高度的时候,容器的高度是自适应的.然而,当容器中的元素都浮动以后,脱离了文档流.容器的高度因为自适应的原因就为0了. 为了方便大家观察,我为父容器设置了边框.内间距.原本上面四张图片是在上面的容器中的.将图片设置左浮动以后,容器的高度就为0了. Q1:这会为我们带来什么影响? A1:浏览器在解析下一个容器的时候,默

浮动后父容器高度自适应

当一个容器内元素都浮动后,它将高度将不会随着内部元素高度的增加而增加,所以造成内容元素的显示超出了容器.为了便于查看效果,把刚才实例中的#layout增加一个边框和内边距: #layout { width:400px; border:2px solid #ccc; padding:2px;} 文章出处:标准之路(http://www.aa25.cn) 看到没,它没有被内容元素给撑高,要解决这个问题,需要使用以下样式 overflow:auto; zoom:1; overflow:auto;是让高

子div用了float浮动之后,如何撑开父元素,让父元素div自动适应高度的问题

方法一: html: <div id="all1"> <div id="left1">1</div> <div id="left2">1</div> <div style=" clear:both; "></div> </div> css: #left1{ float:left;width:200px;} #left2{ float

CSS关于子元素设置了float属性后父元素高度为0的解释和解决方法

1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 2 <html lang="en"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8&q