CSS中 浮动float 高度自适应

先来看一个示例效果的对比:

这是清除浮动之前的效果。可以明显看到column1,column2,column3这三个浮动元素的父级元素的高度并没有被撑开。

这就是我们所要达到的效果,可通过下面的三种方法来实现。

方法一:
在浮动层最后一个浮动元素的后面多加一个元素来清除浮动即可,这是最简单也是最直接的方法。唯一的缺点就是在一定程度上改变了文档流结构。
html代码:

 

 代码如下 复制代码
<div id="demo"> <div id="c1" class="column">column1</div> <div id="c2" class="column">column2</div> <div id="c3" class="column">column3</div> <div class="clear"> </div>

css代码:

 代码如下 复制代码

#demo {border: 1px black dashed;} .column { float: left; padding: 10px 0; margin: 10px; width: 200px;} #c1 {border: 1px red dashed;} #c2 {border: 1px green dashed;} #c3 {border: 1px blue dashed;} .clear { clear:both;}

方法二:

此方法需要依赖于下面两行文档类型的声明:

 代码如下 复制代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

css代码:

 代码如下 复制代码

#demo {border: 1px black dashed;} .column { float: left; padding: 10px; margin: 10px; width: 200px;} #c1 {border: 1px red dashed;} #c2 {border: 1px green dashed;} #c3 {border: 1px blue dashed;} [xmlns] #demo {overflow:auto;} /* For IE7+ and non-IE */* html #demo {height:1%; } /* IE only */

方法三:

非IE浏览器利用伪类 :after,IE浏览器利用其特有属性zoom。
css代码:

 代码如下 复制代码

#demo {border: 1px black dashed; zoom: 1; /* IE only */}
#demo:after { content: &quot;.&quot;; display: block; clear: both; height: 0; font-size: 0; line-height: 0;} /*IE8 and non-IE*/
.column { float: left; padding: 10px; margin: 10px; width: 200px;}
#c1 {border: 1px red dashed;}
#c2 {border: 1px green dashed;}
#c3 {border: 1px blue dashed;}

overflow解决float浮动后高度自适应的问题

经发现可以采用overflow来解决!方法是在父元素加上如下代码即可:
overflow:auto;zoom:1;

“overflow:auto;”是让高度自适应,“zoom:1;”是为了兼容IE6,也可以用“height:1%;”来解决。

完整的代码如下:

 代码如下 复制代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>float浮动之后的问题</title>
<meta http-equiv="content-type" content="text/html;charset=gb2312">
<style type="text/css">
*{padding:0;margin:0;}
body{font-size:12px;line-height:150%;}
ul{list-style:none;}
.container{width:700px;margin:0 auto;}
.header,.footer{height:60px;background:#99CC66;margin-bottom:6px;font-size:18px;font-weight:bold;}
.main{}
.left{float:left;width:200px;}
.sidepanel{border:1px solid #CC6600;margin-bottom:8px;}
.sidepanel h2{font-size:12px;background:#CC6600;height:24px;line-height:24px;text-indent:20px;color:#fff;}
.city{padding:6px 0px;overflow:auto;zoom:1;}
.city li{float:left;width:35px;text-align:center;}
.right{margin-left:200px;background:#CCCC66;height:240px;}
.hotinfo{padding:6px;}
.clearfloat{clear:both;height:0;font-size:1px;line-height:0px;}
</style>
</head>
<body>
<div class="container">
  <div class="header">header</div>
  <div class="main">
    <div class="left">
      <div class="sidepanel">
        <h2>城市导航</h2>
        <ul class="city">
          <li>北京</li>
          <li>上海</li>
          <li>天津</li>
          <li>南京</li>
          <li>广州</li>
          <li>重庆</li>
          <li>济南</li>
          <li>杭州</li>
          <li>郑州</li>
          <li>北京</li>
          <li>上海</li>
          <li>天津</li>
          <li>南京</li>
          <li>广州</li>
          <li>重庆</li>
          <li>济南</li>
          <li>杭州</li>
          <li>郑州</li>
        </ul>
      </div>
      <div class="sidepanel">
        <h2>热门文章</h2>
        <ul class="hotinfo">
          <li>本月20日起入境须留指纹</li>
          <li>本月20日起入境须留指纹</li>
          <li>本月20日起入境须留<font color="#43FF73">指纹</font></li>
          <li>本月20日起入境须留指纹</li>
          <li>本月20日起入境须留指纹</li>
          <li>本月20日起入境须留指纹</li>
          <li>本月20日起入境须留指纹</li>
          <li>本月20日起入境须留指纹</li>
          <li>本月20日起入境须留指纹</li>
        </ul>
      </div>
    </div>
    <div class="right">右侧内容</div>
  </div>
  <br class="clearfloat"><!-- 用于清除浮动的元素 -->
  <div class="footer">footer</div>
</div>
</body>
</html>

实例参考 http://www.111cn.net/js_a/87/43100.htm

要注意以下几点:

1、  浮动元素会被自动设置成块级元素,相当于给元素设置了display:block(块级元素能设置宽和高,而行内元素则不可以)。
2、  浮动元素后边的非浮动元素显示问题。
3、  多个浮动方向一致的元素使用流式排列,此时要注意浮动元素的高度。
4、子元素全为浮动元素的元素高度自适应问题。

时间: 2024-09-04 11:12:58

CSS中 浮动float 高度自适应的相关文章

css中关于float的问题,

问题描述 css中关于float的问题, 解决方案 是被li1或者li2或者两者覆盖了吧,因为li1和li2是float的,所以大概是飘在li3上了,你清除一下浮动看看: 如果回答对你有帮助,请采纳 解决方案二: li3加上clear: both; li3的背景色应该在li1的下面,被li1覆盖了 解决方案三: .li3{ width:90px; height:90px; border-width:1px; border-color:green; background-color:green;

css DIV三列高度自适应

 代码如下 复制代码   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv=&

overflow解决float浮动后高度自适应问题

也许你在做网页的时候发现,发一个区块内的元素被应用了float之后,那么整个box的高度对就不以被浮动对象的高度为标准了. 如图中的城市导航内的城市列表中采用了float之后,那个外框的高度并不是内容元素的高度: 怎么解决这个问题呢?经发现可以采用overflow来解决!方法是在父元素加上如下代码即可 overflow:auto; zoom:1; overflow:auto;是让高度自适应, zoom:1;是为了兼容IE6,也可以用height:1%;的方式来解决. <!DOCTYPE html

css float 高度自适应无效解决方法

怎么解决这个问题呢?经发现可以采用overflow来解决!方法是在父元素加上如下代码即可: overflow:auto;zoom:1; "overflow:auto;"是让高度自适应,"zoom:1;"是为了兼容IE6,也可以用"height:1%;"来解决.  代码如下 复制代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h

css中overflow解决float浮动后高度自适应的问题

header 城市导航 北京 上海 天津 南京 广州 重庆 济南 杭州 郑州 北京 上海 天津 南京 广州 重庆 济南 杭州 郑州 热门文章 本月20日起入境日本须留指纹 本月20日起入境日本须留指纹 本月20日起入境日本须留指纹 本月20日起入境日本须留指纹 本月20日起入境日本须留指纹 本月20日起入境日本须留指纹 本月20日起入境日本须留指纹 本月20日起入境日本须留指纹 本月20日起入境日本须留指纹 右侧内容 footer

iOS App开发中使cell高度自适应的黑魔法详解_IOS

在使用 table view 的时侯经常会遇到这样的需求:table view 的 cell 中的内容是动态的,导致在开发的时候不知道一个 cell 的高度具体是多少,所以需要提供一个计算 cell 高度的算法,在每次加载到这个 cell 的时候计算出 cell 真正的高度. 在 iOS 8 之前 没有使用 Autolayout 的情况下,需要实现 table view delegate 的 tableView(tableView: UITableView, heightForRowAtInde

css设置div的高度自适应并到一定高度后显示滚动条

问题描述 css设置div的默认高度为50px,当div里面的内容很多时,div自适应增加高度,当高度达到200px时高度不再增加,而是让这个div显示滚动条.请问谁能告诉我怎么实现,谢谢! 问题补充:redstarofsleep 写道 解决方案 JS做的话,CSS不要设定高度,让它自适应.然后JS取这个DIV的高度,如果高度<50,则将高度设为50如果高度>200,则将高度设为200解决方案二:设置滚动条自动(即内容多时自动显示)然后,嘿嘿 两条CSS3搞定min-height:50px;m

全方位清理CSS中浮动

清除浮动一个凡是做页面的人都会遇到的一个东西,但是是否大家都能够清楚的知道,全方位的了解呢?于是一闲下来了马上写了这样的一篇文章,不能讲面面俱到,然而基本能将我所知道的倾囊相授了. 我们粗略的一起来看看清除浮动的办法一共有多少个(IE里面用zoom:1就不写了,下一个专题再写).对应的 DEMO 采用伪类:after进行后续空制的高度位零的伪类层清除 采用CSS overflow:auto的方式撑高 采用CSS overflow:hidden的方式产生怪异适应 采用display:table将对

css中不确定高度垂直居中2种方法

  例子1 不确定高度垂直居中  代码如下   /* center < */ .vetically {     vertical-align: middle;     display: table-cell;     *position: relative; } .vetically_C {     display: block;     margin: 0 auto;     text-align: center;     *position: absolute;     *top: 50%;