Float是我们在页面布局中常用的,也是非常重要的一个属性,可以让页面布局变得更加灵活。

但是在继续学习之后,尤其是掌握了宽高自适应之后,我们常常会发现一个奇怪的现象:如果父元素没有设置高度,而子元素都浮动了的话,父元素就“瘪”了。

就像下面这样

<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.box1{width: 400px;border: 1px solid #000;}
.boxl{width: 200px;height: 200px;float: left;background: red;}
.boxr{width: 100px;height: 100px;float: right;background: orangered;}
</style>
</head>
<body>
<div class="box1">纸
<div class="boxl">大火</div>
<div class="boxr">小火</div>
</div>
</body>
</html>

很显然,纸是包不住火的。

但是这显然不是我们想要的那样。我们希望能使用浮动调整内部的布局,又希望父元素不会高度塌陷,要怎样做呢?我总结了四种方法。

第一种方法:添加高度

很简单,既然父元素高度自适应会塌陷,那就不自适应了,直接加上固定高度,那肯定是不会塌了。但是这种方法在页面设计中显然是不太合适的。因为比较简单,代码就不再附上了。

第二种方法:overflow:hidden;或者overflow:auto;

这两种方法是利用对溢出元素的处理,使父元素紧贴子元素的边界,这样一来,高度塌陷也就解决了,只不过,因为是元素溢出属性,所以真有元素溢出的话,也会按照给的属性值执行。

一种情况无法显示所有的内容,一种则会出现滚动条,都是各有缺陷。

还有一种方法,是在浮动的子元素下面添加一个空元素,添加属性clear:both;

顾名思义,这个属性的作用就是清除浮动,不过不是清除其他元素的浮动,而是清除左右浮动对自己的影响。

<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.box1{width: 400px;border: 1px solid #000;}
.boxl{width: 200px;height: 200px;float: left;background: red;}
.boxr{width: 100px;height: 100px;float: right;background: orangered;}
.clear{clear: both;border: 1px solid blue;}
</style>
</head>
<body>
<div class="box1">纸
<div class="boxl">大火</div>
<div class="boxr">小火</div>
<div class="clear">The World</div>
</div>
</body>
</html>

看,添加这样一个子元素后,父元素的高度也填充起来了。

只要把这个子元素设置成空的,既不会影响整体样式,父元素也不会塌陷了。

只是这样一来,页面中就要添加很多空标签,无意义的代码很多,也很影响阅读。于是在这之上,可以使用伪对象来简化代码。

在原代码的基础上添加.box1::after{content: "";height: 0;clear: both;display: block;}

再来看一下效果

这下,纸真的可以包住火了。

最后一种方法在我的学习中被称为万能清除法,事实上,现在的页面开发中也常用这种方法来解决高度塌陷问题。

总结一下,解决高度塌陷的方法有四种:

1 添加固定高度 简单粗暴 适合固定内容固定高度的页面布局

2 overflow溢出隐藏 缺点是溢出内容会被隐藏或出现滚动条

3 浮动元素底部添加空标签属性clear:both;  代码冗余 可读性差

4 利用伪对象简化代码 可复用

float浮动造成高度塌陷的解决办法的更多相关文章

  1. float浮动之后高度自适应失效解决方案

    float浮动之后高度自适应失效解决方案 >>>>>>>>>>>>>>>>>>>> ...

  2. css float父元素高度塌陷

    css float父元素高度塌陷 float 使父元素高度塌陷不是BUG,反而是标准. float 原本是为了解决文字环绕才出现的. 当然有的时候要解决高度塌陷的问题 以下几个方法可以解决float ...

  3. [CSS]CSS浮动塌陷及解决办法

    一. CSS浮动 先看一个例子 <html !DOCTYPE> <head> <title>HTML2</title> <style> .d ...

  4. 如何解决浮动元素高度塌陷---CSS

    解决高度塌陷问题的方法: 方法一. //给父元素添加声明 overflow:hidden; 缺点:回隐藏溢出的元素: 方法二. 在浮动的元素下添加空div标签,并给该元素添加声明: clear:bot ...

  5. css之高度塌陷及其解决方法

    浅谈 清除浮动 的多种方式(clearfix) 1.什么是浮动 ? 是否脱离文档流? 1.普通流定位 static(默认方式) 普通流定位,又称为文档流定位,是页面元素的默认定位方式 页面中的块级元素 ...

  6. css关于浮动的高度塌陷

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 外层div高度不随内层div高度改变的解决办法

    当b1和b2都是float=left时候,a1层的高度不会被b1和b2的高度撑开. <div id=“div1″> <div id=”div2″ style="float: ...

  8. jquery获取高度错误(可以获取到宽度,但获取不到高度),及解决办法

    <div class="foo"> <div style="display: none;"> 3333333 </div> ...

  9. ul li列表元素浮动导致border没有底边解决办法

    如图,当ul li,li元素浮动,并且ul元素也overflow:hidden清除浮动的时候,给li元素加了border,但是不显示底边,这时候要看是不是没有给li元素加高,因为加了border之后默 ...

随机推荐

  1. Params:params 关键字可以指定在参数数目可变处采用参数的方法参数。

    Params:params 关键字可以指定在参数数目可变处采用参数的方法参数. 注意点: 1.一个方法中只能使用一个params来声明不定长参数数组: 2.params参数数组只能放在已定义参数后面 ...

  2. 使用github--stanfordnlp--glove训练自己的数据词向量

    1.准备语料 准备好自己的语料,保存为txt,每行一个句子或一段话,注意要分好词.将分好词的语料保存为×××.txt 2.准备源码 下载地址:https://github.com/stanfordnl ...

  3. kubernetes(14):k8s基于NFS部署storageclass实现pv自动供给

    k8s基于NFS部署storageclass实现pv自动供给 https://www.cnblogs.com/Smbands/p/11059843.html https://www.jianshu.c ...

  4. css实现表单label文字两端对齐

    如图,在我们写页面的时候,经常遇到这种的情况,而需求是想让label文字两端对齐,我们来看看如何用css解决 /**css代码**/ ul li{ list-style: none; } .info- ...

  5. Vue 路由&组件懒加载(按需加载)

    当打包构建应用时,Javascript 包会变得非常大,影响页面加载速度.使用Vue路由懒加载和组件懒加载可以提升页面加载速度,减少白屏时间,提升用户体验. 用法有如下三种:(路由懒加载与组件懒加载用 ...

  6. [算法] Dijkstra算法(带权有向图 最短路径算法)

    一.带权有向图 二.算法原理 1)由于我们的节点是从1-6,所以我们创建的列表或数组都是n+1的长度,index=0的部分不使用,循环范围为1-6(方便计算). 2)循环之前,我们先初始化dis数组和 ...

  7. linux之ls目录处理命令

    目录处理命令:ls 解释 命令名称:ls 命令英文原意:list 命令所在路径:/bin/ls 执行权限:所有用户 功能描述:显示目录文件 语法 ls 选项[-ald] [文件或目录] -a 显示所有 ...

  8. PG数据库常用操作

    全量迁移 备份数据 $ pg_dump -h 172.19.235.145 -U <username> -d <database> > 20180704_dbpe.sql ...

  9. css的三种导入方式

    内联样式表 <p style="font-size:50px; color:blue">css内联样式表</p> 内部样式表 <style type= ...

  10. 抖音快手短视频去水印API,接口开发文档

    开发者官网:http://api.lingquan166.com/ 简介:根据抖音.微视.小红书.皮皮搞笑等APP中复制出来的链接,解析获取短视频的标题.封面.无水印短视频地址等信息. 接口地址: h ...