为什么overflow:hidden;属性可以清除浮动

overflow:hidden;顾名思义,溢出容器部分隐藏。为什么它可以起到清除浮动的作用呢?我们来制造一个父容器不定高,子容器进行浮动的界面。

<div class=‘parent‘>
  <div class=‘left‘></div>
  <div class=‘right‘></div>
</div>
.parent {
  width:200px;
  background:#333333;
  overflow:hidden;
}
.left {
  float:left;
  width:50px;
  height:100px;
  background:red;
}
.right {
  float:right;
  width:80px;
  height:120px;
  background:green;
}

我们会发现这个不定高的父DIV有了高度,高度为子容器中最高的那个。如果去掉overflow:hidden,则父容器"消失"(因为没有高度了)。

原因为何?BFC!!

什么是BFC ?

BFC全称Block Formatting Context, 中文为「块级格式化上下文」。触发BFC有以下几种情况:

  1. float值不为none
  2. overflow值为auto,scroll或hidden
  3. display值为table-ceil,table-caption或inline-block的一种
  4. position值不为relative和static

此处parent触发了BFC,形成块级上下文,不管子元素怎么浮动怎么脱离文档流,parent也必须要包含其中。所以会计算子容器的高度。取最大子容器高度才能包含。

时间: 2024-10-25 18:26:57

为什么overflow:hidden;属性可以清除浮动的相关文章

inline-block元素设置overflow:hidden属性导致相邻行内元素向下偏移

在表单修改界面中常会使用一个标签.一个内容加一个修改按钮来组成单行界面,如下所示: 那么在表单总长度受限的情况下,当中间的邮箱名称过长时,会遮盖到旁边的按钮. 我们可以把中间邮箱设定最大宽度,然后对于长度超出部分设置overflow: hidden来解决这个问题. 但是这可能会引发另一个经典的 baseline 对齐问题,也就是本文要讨论的主要问题. 1. 问题现象 我们先给出一个在线实例: http://wow.techbrood.com/fiddle/15438 我们可以看到当给中间的 in

兼容性—IE6/7下带有overflow:hidden属性的父级元素包不住带有position:relative属性的子元素

IE6/7下带有overflow:hidden属性的父级元素包不住带有position:relative属性的子元素 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> .box{ width: 200px; height: 200px; bord

[Web 前端] inline-block元素设置overflow:hidden属性导致相邻行内元素向下偏移

cp from : https://blog.csdn.net/iefreer/article/details/50421025 在表单修改界面中常会使用一个标签.一个内容加一个修改按钮来组成单行界面,如下所示: 那么在表单总长度受限的情况下,当中间的邮箱名称过长时,会遮盖到旁边的按钮. 我们可以把中间邮箱设定最大宽度,然后对于长度超出部分设置overflow: hidden来解决这个问题. 但是这可能会引发另一个经典的 baseline 对齐问题,也就是本文要讨论的主要问题. 1. 问题现象

CSS 的overflow:hidden 属性详细解释

overflow:hidden这个CSS样式是大家常用到的CSS样式,但是大多数人对这个样式的理解仅仅局限于隐藏溢出,而其实它还有清除浮动这个功能.              taobao demo 这段代码是一个做淘宝搜索框中的一段代码,这里overflow:hidden就起到了一个清除浮动的效果. 具体代码可以看慕课网http://www.imooc.com/video/282里的教程

移动端html的overflow:hidden属性失效问题

这第一次做手机端网页,在交付测试的时候发现一个问题, 就是body的宽度,我设置了overflow:hidden,在谷歌调试的时候确实是不能滑动的,但是在手机端测试的时候发现,overflow:hidden是失效的.就是说,页面是也可以左右摇晃的,延展出去的部分会被扯来扯去= = 后来查阅了一些资料,了解到这是由于移动端的web内核不同意导致的. 解决方案: 第一种: body{position:fixed;width:100%;height:100%} 第二种: 给滚动的元素添加一个父级,设定

清除浮动的6中方法

额外标签法 使用:after 伪元素 给父元素定高 利用overflow:hidden;属性 父元素浮动 父元素处于绝对定位 在开发网页的时候经常需要用到各种浮动,此时便需要及时的清除浮动,否则将会导致布局出现问题 引出问题: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <st

关于overflow:hidden的作用(溢出隐藏,清除浮动,解决外边塌陷等等)

1.overflow:hidden  溢出隐藏 给一个元素中设置overflow:hidden ,那么该元素的内容若超出了给定的宽度和高度属性,那么超出的部分将会被隐藏,不占位. 代码如下: 运行结果如下: 2. overflow:hidden 清除浮动 一般而言,父级元素不设置高度时,高度由随内容增加自适应高度.当父级元素内部的子元素全部都设置浮动float之后,子元素会脱离标准流,不占位,父级元素检测不到子元素的高度,父级元素高度为0.那么问题来了,如下: 运行结果如下: 如上,由于父级元素

CSS清除浮动技巧

一般浮动是什么情况呢?一般是一个盒子里使用了CSS float浮动属性,导致父级对象盒子不能被撑开,这样CSS float浮动就产生了. 本来两个黑色对象盒子是在红色盒子内,因为对两个黑色盒子使用了float浮动,所以两个黑色盒子产生了浮动,导致红色盒子不能撑开,这样浮动就产生了. 简单地说,浮动是因为使用了float:left或float:right或两者都是有了而产生的浮动. 二.浮动产生负作用 1.背景不能显示由于浮动产生,如果对父级设置了(CSS background背景)CSS背景颜色

清除浮动的几种方式

最近来了个小徒弟,总是被浮动的盒子整蒙圈了,作为小师父的我就给他梳理一下: 浮动就是页面布局中是某些盒子添加了float:left 或float:right的类名或属性.其具有以下特点: 浮动的元素会脱离标准流: 浮动后的元素会覆盖标准流的元素: 浮动规则:浮动找浮动,不浮动找不浮动: 浮动显示的位置与原本不浮动的位置是对应的: 浮动的元素会影响下面的元素: 浮动的元素会改变显示方式(行内块级元素): a) 不管元素是行内元素还是块级元素都会在同一行显示: b) 浮动后的元素可以设置宽高: 例: