在用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. 【从0到1学Web前端】CSS伪类和伪元素

    1.CSS中的伪类 CSS 伪类用于向某些选择器加入特殊的效果. 语法: selector : pseudo-class {property: value} CSS 类也可与伪类搭配使用 select ...

  2. 如何在cocos2d项目中enable ARC

    如何在cocos2d项目中enable ARC 基本思想就是不支持ARC的代码用和支持ARC的分开,通过xcode中设置编译选项,让支持和不支持ARC的代码共存. cocos2d是ios app开发中 ...

  3. JavaScript 中创建对象的方法(读书笔记思维导图)

    面向对象(Object-Oriented, OO)的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象.而 ECMAScript 中没有类的概念,所以我们可以使用 ...

  4. C++ Primer 学习笔记_61_重载操作符与转换 --自增/自减操作符

    重载操作符与转换 --自增/自减操作符 引言: 自增,自减操作符常常由诸如迭代器这种类实现,这种类提供相似于指针的行为来訪问序列中的元素.比如,能够定义一个类,该类指向一个数组并为该数组中的元素提供訪 ...

  5. iOS App 性能优化总结

    今天简单总结一些clientapp 优化的方案和方向. 我相信开发一个app大部分团队都能够完毕,可是性能久不一样啦,和我们都写一个冒泡算法一样,我相信每一个人写的冒泡算法都不一样,这些区别就带来了性 ...

  6. hdu 2642 二维树状数组 单点更新区间查询 模板水题

    Stars Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/65536 K (Java/Others) Total Subm ...

  7. MSF连环攻击实验

    MSF连续攻击实验 一.实验拓扑 二.实验环境 Windows XP BT 5 32位 三.实验原理 通过扫描 XP主机,利用扫描出的漏洞建立 TCP会话,通过进程的提权,进一步获取目标机的控制权限 ...

  8. Android 从相冊获取近期拍摄的多张照片(获取相机拍照所存储的照片)

    转载请标明出处:http://blog.csdn.net/android_ls/article/details/39928519 在做公司项目时.遇到的需求:自己定义显示照片的网格视图,显示用户近期採 ...

  9. 孙鑫HTML视频学习总结

    1.   HTML中元素和标签 元素是由单个或一对标签定义的包含范围.一个标签就是左右分别有一个小于号(<)和大于号(>)的字符串.开始标签是指以不以斜杠(/)开头的标签,其内是一串允许的 ...

  10. Redis集群明细文档(转)

    相信很多用过Redis的同学都知道,Redis目前版本是没有提供集群功能的,只能单打独斗.如果要实现多台Redis同时提供服务只能通过客户端自身去实现.目前根据文档已经看到Redis正在开发集群功能, ...