在用CSS+DIV的布局中,常常会发现,当一个DIV float之后,假设他的高度超过了其父DIV的高度时,其父DIV的高度并不会对应的进行调整。要解决问题(也叫做闭合(清除)浮动),我们有四种办法:

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的时候,可能会对页面表现带来影响,并且这样的影响是不确定的,你最好是能在多个浏览器上測试你的页面。

 #outer 

 {

    overflow:auto;

   zoom:1;

}

overflow:auto;是让高度自适应, zoom:1;是为了兼容IE6,也能够用height:1%;的方式来解决。

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

这样的做法就是让父容器也浮动,这利用到了浮动元素的一个特性——浮动元素会闭合浮动元素。这样的方式在 IE/Win 和标准兼容浏览器中都有较好的效果,但缺点也非常明显——父容器未必想浮动就浮动的了,毕竟浮动是一种比較特殊的行为,有时布局不同意其浮动也非常正常。

看一下自己代码的样例吧:

<div style="overflow: auto;">

<s:iterator value="lstProductPicture" id="productPicture">

<div style="float:left;">

<img

src="../dms/get.html?path=<s:property value="#productPicture.path" />"

alt="" style="display: inline-block; width: 93px; height: 90px" /> <br></br>

<input type="button" value="删除" onclick="delpicture('${productInfo.id }', '${productPicture.path }');"/>

</div>



</s:iterator>

 </div>

里面迭代会出现非常多div 里面的div会向左浮动,因而是父div的高度无法自适应问题的出现。

CSS: 解决Div float后,父Div无法高度自适应的问题的更多相关文章

  1. 解决子元素用css float浮动后父级元素高度自适应高度

    1.在最后一个子元素后面清除浮动 2.父元素加over-flow:hidden;(副作用:子元素定位不能超出父元素的范围) 3.父元素也一样浮动(最笨的方法): 4.子元素使用inline-block ...

  2. 使用contenteditable+div模拟textarea文本域实现高度自适应

    使用contenteditable+div模拟textarea文本域实现高度自适应 开发过程中由于需要在发送消息的时候需要有一个可以高度自适应的文本域,一开始是使用textarea并搭配auto-si ...

  3. css 父div如何包裹带有float属性的子div,float子div如何撑开父div

    来自网络摘抄 原始代码 <style> #div1{border:1px solid red;float:left;} #div2,#div3{float:right;border:1px ...

  4. css实现遮罩层,父div透明,子div不透明

    使用元素的opacity 属性,设置遮罩层的效果, 主要 样式是:background-color: #ooo; opacity:0.3; <div style="width:500p ...

  5. 前端页面div float 后高度 height 自适应的问题

    最近在画项目页面的时候遇到了一个左侧div一旦加上float:left 属性后,设置其高度height:100% 不起作用,后来网上查了半天也没有找到很好的解决方案,只在csdn里发现了这个马上记录下 ...

  6. Position a child div relative to parent container in CSS: [设置 子DIV位置 跟 父DIV相关联]

    最近调DIV的位置比较头疼,各种position: relative / absolute google到一篇好文章[http://www.webdevdoor.com/html-css/css-po ...

  7. DIV相对于父DIV底部对齐的实现方法

    代码如下 <style type="text/css"> .box1 {border:1px #cccccc solid; width:500px; height:60 ...

  8. CSS - 解决使用浮动,父窗体不能撑高问题

    浮动的父级元素一定要用 clear 清除浮动,否则高度会无法撑开.

  9. css解决select下拉表单option高度的办法

    css在给select下拉表单设置样式如边框时可以轻松搞定,而我们在不喜欢其默认的下拉箭头的样式时试图通过background:url(图片路径)来修改之,则往往会出现浏览器的兼容性问题,在网上查了好 ...

随机推荐

  1. 一款新型的智能家居WiFi选择方案——SimpleWiFi在无线智能家居中的应用

    一款新型的智能家居WiFi选择方案——SimpleWiFi在无线智能家居中的应用 先上图:     随着科学技术的不断发展,局域网也正逐渐向无线化,多网合一的方向发展,在这个多网合一快速发展过程中,带 ...

  2. poj1269(直线交点)

    传送门:Intersecting Lines 题意:给出N组直线,每组2条直线,求出直线是否相交.如果共线则输出LINE,相交则输入点坐标,否则输出NONE. 分析:模板裸题,直接上模板... #in ...

  3. struts2对action中的方法进行输入校验(2)

    struts2输入校验流程: 1.类型转换器对请求參数运行类型转换,并把转换后的值赋给aciton中的属性 2.假设在运行类型转换的过程中出现异常,系统会将异常信息保存到ActionContext, ...

  4. ExtJS学习-------Ext正确Dom操作:Ext.get Ext.fly Ext.getDom

    详细实例: (1)创建JSP文件.引入CSS和js文件,加入三个Div <%@ page language="java" import="java.util.*&q ...

  5. loj1341(数学)

    传送门:Aladdin and the Flying Carpet 题意: 给出两个正整数1<=m<=n<=1e12.问N可以拆成多少对p*q,使得p和q中最小的不小于a,且p!=q ...

  6. hdu1506(dp求最大子矩阵)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1506 分析: 对于每个单位矩阵,我们先求出连续比它高的最左边的下标假设为l,然后求出比它高的最右边的下 ...

  7. Android开发系列(二十二):AdapterViewFlipper的功能和使用方法

    AdapterViewFlipper继承了AdapterViewAnimator,它会显示一个View组件,能够通过showPrevious()和showNext()方法控制组件显示上一个.下一个组件 ...

  8. linux yum命令

    1 安装yum install 全部安装yum install package1 安装指定的安装包package1yum groupinsall group1 安装程序组group1 2 更新和升级y ...

  9. Swift编程语言学习10—— 枚举属性监视器

    属性监视器 属性监视器监控和响应属性值的变化,每次属性被设置值的时候都会调用属性监视器.甚至新的值和如今的值同样的时候也不例外. 能够为除了延迟存储属性之外的其它存储属性加入属性监视器,也能够通过重载 ...

  10. 第1次实验——NPC问题(回溯算法、聚类分析)

    题目:八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即随意两个皇后都不能处于同一 ...