CSS浮动塌陷问题

问题描述:当我们给子元素设置了浮动float:left或float:right或两者,但是没有给父元素设置高度时,就会出现父元素高度塌陷问题

浮动塌陷会导致:

1、背景不能显示
由于浮动产生,如果对父级设置了(CSS background背景)CSS背景颜色或> CSS背景图片,而父级不能被撑开,所以导致CSS背景不能显示。
2、边框不能撑开
如果父级设置了CSS边框属性(css border),由于子级里使用了float属性,> 产生浮动,父级不能被撑开,导致边框不能随内容而被撑开。
3、margin padding设置值不能正确显示
由于浮动导致父级子级之间设置了css padding、css margin属性的值不能正> > 确表达。特别是上下边的padding和margin不能正确显示。

举个例子,做一个如下浮动的效果:

屏幕快照 2017-12-12 14.20.04.png

html代码如下:

 <div class="reportList">
       <view  class="item unSelected" >雨伞撑破</view>
       <view  class="item unSelected" >密码错误</view>
       <view  class="item unSelected" >密码缺失</view>
       <view  class="item selected" >其他原因</view>
   </div>

CSS代码如下:

 *{
    margin: 0px;
    padding: 0px;
    color: #424242;
font-family: arial;
 }
  .reportList{
      border-bottom: 1px solid #888888;
      margin:10px;
 } 
 .reportList .item{
   float: left;
   width: 40%;
   height: 80px;
   line-height: 80px;
   margin: 10px;
   text-align: center;
   border-radius: 8px;
 }
 .selected{
   color: white; 
   background-color:#00CDCD;
 }
 .unSelected{
     color: #888888; 
     background-color: #F4F5F6;
 }

子元素都设置了float属性,父元素div高度不能撑开,样式margin属性显示有问题,运行效果如下 :


屏幕快照 2017-12-12 14.43.43.png

解决浮动塌陷有很多方案,就不一一列举,给出最完美的解决方案,使用CSS的:after伪元素清除(:after,注意:作用于浮动元素的父亲)

给浮动元素的容器添加一个clearfix的class

.clearfix:after{
    content:"";/*设置内容为空*/
    height:0;/*高度为0*/
    display:block;/*将文本转为块级元素*/
    clear:both;/*清除浮动*/
}
.clearfix{
    zoom:1;/*为了兼容IE*/
}

其他解决方案:

一:使用带有clear属性的空元素;
在浮动元素的盒子最后使用一个空元素如<div class="clear"></div>,并在CSS中赋予.clear{clear:both;}属性即可清理浮动。亦可使用<br class="clear" />或<hr class="clear" />来进行清理。
不推荐使用。这个方法添加了大量无语义的html元素,造成结构的混乱

 .clear{clear: both;}
    <div class="box">
        <div class="red">1</div>
        <div class="sienna">2</div>
        <div class="blue">3</div>
        <div class="clear"></div>
   </div>

二:使用CSS的overflow属性处理

在清理浮动前,浮动的元素跳离了box层,自己跑到上层去了。在添加overflow属性后,浮动元素又回到了容器层,把容器高度撑起,达到了清理浮动的效果。
使用overflow属性来清除浮动有一点需要注意,overflow属性共有三个属
性值:hidden,auto,visible。我们可以使用hiddent和auto值来清除浮动,但切记不能使用visible值。

.over-flow{ overflow: auto; zoom: 1;}/*zoom1; 是在处理兼容性问题*/
<body>
    <div class="box over-flow">
    <div class="red">1</div>
   <div class="sienna">2</div>
    <div class="blue">3</div>
</div>
</body>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353