浮动后父容器高度自适应

当一个容器内元素都浮动后,它将高度将不会随着内部元素高度的增加而增加,所以造成内容元素的显示超出了容器。为了便于查看效果,把刚才实例中的#layout增加一个边框和内边距:

#layout { width:400px; border:2px solid #ccc; padding:2px;}

文章出处:标准之路(http://www.aa25.cn)

看到没,它没有被内容元素给撑高,要解决这个问题,需要使用以下样式

overflow:auto; zoom:1;

overflow:auto;是让高度自适应, zoom:1;是为了兼容IE6而写(此样式不能通过W3C验证)。有关高度自适应的教程请参考:http://www.aa25.cn/div_css/888.shtml http://www.aa25.cn/div_css/373.shtml

这就是所谓的css hack,之前讲解3px bug时忘记说css hack是个什么东东了,现在补充一下:

由于不同的浏览器,比如IE 6,IE 7,IE8,Mozilla Firefox等,对CSS的解析认识不一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。 这个针对不同的浏览器写不同的CSS code的过程,就叫CSS hack。这里的overflow:auto; zoom:1;就是所谓的css hack,这种形式是应用我们常用的代码来解决不兼容问题,也会用到添加一些特殊符号的形式,它本身没有意义,只是针对不同浏览器是否对它识别来实现的,具体用到的进修再讲。

文章出处:标准之路(http://www.aa25.cn)

时间: 2024-10-26 10:36:39

浮动后父容器高度自适应的相关文章

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

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

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

father:after{ content:"."; height:0; visibility:hidden; display:block; clear:both; } 清除"闭合(清除)浮动"的方法,主要是一下四种: 1.    额外标签法 这种方法就是向父容器的末尾再插入一个额外的标签,并令其清除浮动(clear)以撑大父容器.这种方法浏览器兼容性好,没有什么问题,缺点就是需要额外的(而且通常是无语义的)标签.我个人不喜欢这种方法,但是它确实是W3C推荐的方法

子元素绝对定位,父元素高度自适应子元素高度

子元素设置了绝对定位,父元素没有设置相对定位,因此子元素脱离了文档流,父元素高度就变成没有了,如何让父元素高度自适应子元素高度. 子元素的高度是不确定的    可以JS设置父元素高度 <<span class="hljs-keyword" style="box-sizing: border-box; font-weight: bold;">divid="father"> <<span class="h

瀑布流,并且解决定位和容器高度自适应问题,随意放哪都可以用。

css: #main{ width:956px; height: auto; margin: 10px auto 0px auto; border:2px solid #ccc; float:left; position:relative; } #main .pin{ width:220px; height:auto; padding:15px 0px 0px 15px; float:left; } #main .pin .box{ width:203px; height:auto; paddi

CSS float 父元素高度自适应

<html> <head><title></title><style type="text/css">*{margin:0 ;padding:0;}.content{border:1px solid red;}.fl{float:left}</style></head> <body> <div class="content"> <div class=&q

子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&

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

关于撑开父容器高度的小探讨

我们知道,当子元素float的时候,虽然没有脱离文本流,但是也会使父元素坍缩,也就是父元素的高度或者宽度变为0,解决办法就是让父元素的overflow为hidden. 今天我遇到一个bug,如下代码所示: <div class="wrap"> <div class="main"> <img src="../JS+CSS3实现带预览图幻灯片效果/images/1.jpg" height="500"

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

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