notes
  • Introduction
  • 语言
    • JS
      • JS原型到原型链
      • JS继承的实现
      • this对象
      • Promise基本概念
      • Promise实现
      • Promise实战
      • JS的EventLoop
      • JS容易出现误区的运算符
      • JS容易出现误区的操作符
      • JS深拷贝
      • JS节流与防抖
      • ES5实现原生/ES6方法
    • TS
      • 声明文件
      • 项目配置
    • CSS
      • CSS引入方式以及优先级计算
      • BFC神奇背后的原理-文摘
      • 回流reflow与重绘repaint
      • 三栏式布局
      • 垂直居中
      • 清除浮动的方法
      • 移动端适配方案
      • 纯CSS斜切角实现
      • CSS揭秘
      • 背景图片轮播
      • CSS绘制序列帧动画
      • transform实现一个多面体
    • HTML
  • ES6
  • Node.js
    • xxx
  • 前端框架
    • Vue.js
      • Vue双向数据绑定原理
      • Vue-Router原理及实现
    • React
    • AngularJS
  • 工程构建
    • Webpack
      • 01-webpack概述及背景
      • 03-webpack热更新原理
      • 04-splitChunks原理分析
      • 05-webpack工作流程
      • 07-webpack构建流程
      • 07-webpack构建流程
      • 10-webpack 如何进行性能分析
    • Gulp
    • Lint
      • ESLint
      • TSLint
    • Bable
  • 工程化
    • 模块化
    • 组件化
    • 规范化
      • 编码规范
    • 自动化
  • 运维
    • Nginx
    • GIT
    • CDN
    • VPS
    • DBA
  • 小程序
  • 跨端
  • 测试
  • 计算机技术
    • 计算机网络
      • 同源策略到前端跨域解决方案
      • TCP数据传输
      • TCP和UDP的区别
      • HTTP协议概述
      • HTTP缓存详解
      • HTTPS以及SSL建立过程
      • HTTPS的七个误解(译文)
      • cookie与Session机制区别以及Cookie SessionStorage LocalStorage异同
      • HTTP状态码Status
      • DNS原理入门
      • 网络攻击与防御
      • HTTP转发与重定向
      • 登录认证设计
    • 操作系统
      • shell脚本命令
    • Linux
      • Linux命令大全
      • vim命令
    • 浏览器
      • 浏览器内核、JS 引擎、页面呈现原理及其优化
      • 九种浏览器端缓存机制概览
      • 性能优化-网络请求方面
      • webkit解析CSS过程详解
  • 前端面试
    • 算法
Powered by GitBook
On this page
  • 1、clear: both
  • 2、设置父元素高度
  • 3、使用BFC
  • 4、万能清除法after伪类清浮动
  • 5、使用table清除浮动
  • 6、以浮制浮
  1. 语言
  2. CSS

清除浮动的方法

浮动 Float 是 CSS 中的一种布局方式。它的渲染位置在行框与包含块之间,这样就可以使行框内文字与浮动元素不重叠并且环绕它显示。在布局过程中也经常会使用它来达到左右并排布局的效果。但是,由于浮动特性,容器如果没有明确设定高度,会依照普通流内元素高度设置,这样就会导致脱离普通流的浮动元素溢出容器,影响其后元素布局。

清除浮动是面试中经常遇到的问题,总结一下清除浮动的方法:

设置原型,一个父元素,两个子元素左浮动

<div class="parent">parent
    <div class="son1">son1 float:left</div>
    <div class="son2">son2 float:left</div>
</div>
.parent {
    background: #999999;
}
.son1,.son2{
    background: #f5e327;
    float: left;
    width: 100px;
    height: 100px;

}
.son2{
    background: #ff1810;
}

清除浮动实现目的使父元素的高度被子元素撑满。

1、clear: both

添加 空div标签,放在父元素最后一个子元素位置,设置样式为clear:both。

<div class="parent">parent
    <div class="son1">son1 float:left</div>
    <div class="son2">son2 float:left</div>
    <div class="clear"></div>
</div>
.clear{
    clear: both;
}

2、设置父元素高度

如果子元素高度确定,则设置父元素高度等于子元素高度,则看起来父元素被子元素撑满,如果子元素高度不确定,这个方法不合适。

.parent {
    background: #999999;
    height: 100px;
}

3、使用BFC

BFC有一个特点:计算BFC的高度时,浮动元素也参与计算,我们可以将父元素设置overflow属性形成BFC,这样浮动元素的高度也会参与计算,父元素的高度就会被浮动元素的高度撑满。

.parent {
    background: #999999;
    overflow: auto;  
   /* overflow: hidden;*/  或者hidden
}

效果和上图一样。

4、万能清除法after伪类清浮动

利用:after和:before来在元素内部插入两个元素块,从面达到清除浮动的效果。其实现原理类似于clear:both方法,只是区别在于:clear在父元素最后插入一个div.clear标签,而伪类清除法利用父元素的伪类在元素内部增加一个类似于div.clear的效果,没有在原来HTML文件中操作DOM。

这是目前最主流的清除浮动的方法,推荐优先使用。

.parent:after{
    content: "";
    display: block;
    clear: both;
}

效果同上

5、使用table清除浮动

.parent {
    background: #999999;
    display: table;
}

效果如下

6、以浮制浮

将父级同样设置为浮动,能让子元素撑满整个父元素,但是再整体布局中,父元素也变成浮动了并不是我们想要的,除非父元素已经确定位置。

.parent {
    background: #999999;
    float: left;
}
Previous垂直居中Next移动端适配方案

Last updated 5 years ago