overflow:hidden清除浮动原理解析及清除浮动常用方法总结
最近在看《CSS Mastery》这本书,里面有用overflow:hidden来清理浮动的方法。但是一直想不明白为什么能够实现清除浮动,查阅了网络上的解释,下面来总结一下。
一、首先来想想
我们大家理解的overflow:hidden是超出该元素的部分进行隐藏。这个时候就需要明确一点,该元素的高度是怎么定义的。当一个div中的两个元素浮动之后,此时div的高度就会塌陷,此时div的高度为0。那是不是意味着就要将浮动元素隐藏起来,如果是真的隐藏就是反布局常识的。所以这中间肯定有我们现在还不知道的机制。
二、不了解的机制-BFC
定义:BFC(Block Formatting Context)全称是块级格式化上下文,用于对块级元素排版,默认情况下只有根元素(body)一个块级上下文,但是如果一个块级元素设置了float:left,overflow:hidden或position:absolute样式,就会为这个块级元素生产一个独立的块级上下文,使这个块级元素内部的排版完全独立。
作用:独立的块级上下文可以包裹浮动流,全部浮动子元素也不会引起容器高度塌陷,就是说包含块会把浮动元素的高度也计算在内,所以就不用清除浮动来撑起包含块的高度。
三、总结清除浮动的方法
我经常用到的清除浮动的方法有
1、添加额外标签设置clearfix类为clear:both;
原理是这个空的div能让父级获取到高度,是因为设置之后这个div的左右都不能有浮动元素,所以这个空的div元素会向下移动,直到换行,而为了让这个div能够换行,父元素至少要包含浮动元素的高度才能提高足够的空间,这样实现清除浮动的影响。
2、设置父元素为浮动元素
3、设置position:absolute
我不常用的清除浮动的方法有
1、父级div定义height
3、overflow:hidden
2、父级div定义伪类:after和zoom;
这个方法的原理还不理解,欢迎大神解答。
四、清除浮动的影响方法分类
参考张鑫旭老师的说法,清除浮动的说法是不准确的。应该是为清除浮动的影响。我也觉得张老师的说法是正确的,因为float:none才叫清除浮动。张老师还说到了包裹的这个概念,根据这个概念将清除浮动的影响的方法分为两大类。
一类是clear:both/left/right,这就不用说了。
另一类是:包裹清除,因为他发现浮动、绝对定位、inline-block、overflow都有自适应元素宽度的特性,就想到了用包裹来形容。
overflow:hidden清除浮动原理解析及清除浮动常用方法总结的更多相关文章
- CSS学习:overflow:hidden解决溢出,坍塌,清除浮动
overflow:hidden是overflow属性的一个神奇用法,它可以帮助我们隐藏溢出的元素,清除浮动和解除坍塌. CSS样式: .container{ background-color: bla ...
- css中:overflow:hidden清除浮动的原理
要想彻底清除浮动的影响,适合的属性不是 clear 而是 overflow. 一般使用 overflow:hidden,利用 BFC 的“结界”特性彻底解决浮动对外部或兄弟元素的影响. 1. 前言: ...
- CSS中为什么overflow:hidden能清除浮动(float)的影响?原理是什么?
http://www.zhihu.com/question/30938856 父块没有设置指定的高宽,当子块设置为浮动后,原本包裹子块的父块的高度塌陷消失,这时给父块设置overflow:hidden ...
- 为什么overflow:hidden能达到清除浮动的目的?
1. 什么是浮动 <精通CSS>(第3版)关于浮动的描述: 浮动盒子可以向左或向右移动,直到其外边沿接触包含块的外边沿,或接触另一个浮动盒子的外边沿. 浮动盒子也会脱离常规文档流,因此常规 ...
- 【深入BFC】 关于CSS中float布局,清除浮动,和margin合并的原理解析,解开你心中的那些困惑!
BFC的通俗理解: Block Formatting Context(块级格式化上下文)是W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用. ...
- 清除浮动2-父元素设置overflow:hidden
<!doctype html><html> <head> <meta charset="UTF-8"> <meta name= ...
- CSS清除浮动_清除float浮——详解overflow:hidden 与clear:both属性
最近刚好碰到这个问题,看完这个就明白了.写的很好,所以转载了! CSS清除浮动_清除float浮动 CSS清除浮动方法集合 一.浮动产生原因 - TOP 一般浮动是什么情况呢?一般是一个盒子里 ...
- CSS 的overflow:hidden (清除浮动)
verflow:hidden这个CSS样式是大家常用到的CSS样式,但是大多数人对这个样式的理解仅仅局限于隐藏溢出,而对于清除浮动这个含义不是很 了解.一提到清除浮动,我们就会想到另外一个CSS样式: ...
- 关于overflow:hidden的作用(溢出隐藏,清除浮动,解决外边塌陷等等)
1.overflow:hidden 溢出隐藏 给一个元素中设置overflow:hidden ,那么该元素的内容若超出了给定的宽度和高度属性,那么超出的部分将会被隐藏,不占位. 代码如下: 运行结果 ...
随机推荐
- MSXML读取XML中文
// QueryNodes.cpp : Defines the entry point for the console application. // #include <stdio.h> ...
- 【Java】IO技术的使用——用IO实现大文件的复制
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5827481.html 用IO进行文件复制,实质就是用FileInputStream链接要复制的文件,按一定规模 ...
- WCF序列化与反序列化问题
转自:http://www.cnblogs.com/wangweimutou/p/4505447.html WCF包含很多封装的内部机制,这些是我们在编写程序时不会经常看到的.比如上一篇讲解的Mess ...
- 【转】Activity启动模式 及 Intent Flags 与 栈 的关联分析
http://blog.csdn.net/vipzjyno1/article/details/25463457 在学习Android的过程中,Intent是我们最常用Android用于进程内或进 ...
- linux中crontab实现以秒执行任务
用crontab+sleep实现以秒执行任务 crontab -e * * * * * /bin/date >>/tmp/date.txt * * * * * sleep 10s; /bi ...
- JQuery Plugin 2 - Passing Options into Your Plugin
overriding the default options with user-supplied options and the jQuery extend() method eg: $.fn.pu ...
- CCBReader
#ifndef _CCB_CCBREADER_H_ #define _CCB_CCBREADER_H_ #include "cocos2d.h" #include "Ex ...
- confirm使用方法
定义和使用方法 confirm() 方法用于显示一个带有指定消息和 OK 及取消button的对话框. 语法 confirm(message) 參数 描写叙述 message 要在 window 上弹 ...
- 和Timesten有个约会--Timesten技术专栏系列(一)
作者: 三十而立 时间:2009年10月03日 12:08:42 本文出自 “inthirties(三十而立)”博客,转载请务必注明作者和保留出处http://blog.csdn.net/inthir ...
- win7中USB音箱没有声音解决的方法
Win7装好后,原来在XP中工作正常的USB小音箱却不工作了,重装了声卡驱动还是一样,后来通过下面尝试最终好用了. 1.右键右下角喇叭button. 2.点击"播放设备". 3.设 ...