关于CSS中float的两点心得以及清除浮动的总结
对一个元素运用float后,该元素将脱离正常文档流,这意味着:
1. 运用float后,该元素不再影响父元素的高度,如果一个元素的所有子元素都是float的话,那么该元素的高度是0,这样后面元素渲染的时候就会见缝插针,在该元素留下的一切空白中渲染,这个时候就需要清除浮动。关于清除浮动,首先要明白的是,什么是清除浮动。清除浮动实际上是指,撑开父元素的高度,让后面的元素渲染时,不再见缝插针地跑到它留下的空白中。这有很多现成的解决方法,需要明确的一点是:这些方法有些是作用在浮动元素的父元素上的,有些是直接作用在浮动元素本身的(吐一个槽:很多介绍清除浮动的文章都不说明是加在父元素还是浮动元素本身上的,让读者云里雾里)。
2. 运用float后,该元素虽然脱离了文档流,但后面元素在渲染的时候,还是会为它留下显示的空间。这也是它和position: absolute脱离文档流的区别所在,后者连显示空间也不会留下。
关于只留下显示空间,这一点比较微妙。一图胜千言,如下图,
div1向左浮动,剩下的p元素在它右边周围排布,那么,这时候p的宽度是多少呢?是不是总宽度减去div1的宽度呢?不是,这时p的宽度仍然是100%,不信的话,可以给p设置一个margin-left:10px。结果会发现,p的左边仍然是紧贴着div1的,因为p的宽度是100%,它的border还在最左边,因此,区区10px的margin当然不会让它过去,这就是只留下显示空间,但不影响其它一切渲染的真正含义。实际上,它们的关系大概是如上图中的虚线所示。
明白了塌陷的原因自然也就明白了如何清除浮动。
塌陷的原因是父元素的所有子元素都脱离正常流而导致父元素失去高度。那么只要找到让父元素重新找回自信,不,是重新找回高度的办法就可以了。最简单的,给父元素设置一个固定高度,浮动不就清除了吗,但这样坏处明显,因为你子元素的高度是不固定的,可能会造成溢出或掩藏。复杂一点的,给父元素末尾添加一个子元素,再给子元素设置clear:both,那么后面的元素就都回归正常流了,高度也就有了。更干净点的,因为不能添加结构来完成样式,即不能用HTML的方式来修补样式,所以要用到一个.clearfix:after的伪类,用它来模拟一下添加的一个额外的子元素,再给它设置clear:both,这样就两全其美了,当然不要忘了给它设置其它一些属性(yi dian tiao jiao),以便让它心里能接受clear:both这样的设定,比如display:table;content:'';height:0之类的。最后,还要注意低版本IE下的hack,即*zoom:1。
关于CSS中float的两点心得以及清除浮动的总结的更多相关文章
- CSS中float和Clear的使用
CSS中float和Clear的使用 本文和大家重点讨论一下CSS中Float和Clear属性的使用,一个float对象可以居左或居右,一个设置为float的对象,将根据设置的方向,左移或右移到其父容 ...
- CSS那些事儿-阅读随笔3(清除浮动)
浮动主要是由浮动(float)属性导致的页面错位现象,清除浮动不仅能解决页面错位的现象,还可以解决子元素浮动导致父元素背景无法自适应子元素高度的问题.在CSS样式中,主要利用clear属性中的both ...
- css中float left与float right的使用说明
转自:http://www.jb51.net/css/33740.html 脚本之家 No! 要注意以下几点: 1. 浮动元素会被自动设置成块级元素,相当于给元素设置了display:block( ...
- 关于css中float的理解
感觉css里的float是个非常神奇的东西,神奇之处在于,你知道它是什么意思,但是用的时候总是不知道怎么实现效果.又或者它会很容易地影响到别的元素和属性.所以今天打算尝试一下float的各种设置,看看 ...
- CSS中float属性
这个东西叫浮动.顾名思义,就是让设置的标签产生浮动效果,就是脱离原来页面的标准输出流.正常情况下,HTML页面中块元素都是从上倒下排列的.如果想实现左右结构.float的一种选择(当然还有其他方法). ...
- html/css中float浮动的用法
一.float基础用法示例 1.我们先建两个div盒子,设置高度.宽度和背景颜色: 最开始两个盒子在网页上的位置如下: 然后我们将红色盒子浮动到右边 然后我们会发现红色盒子浮动到了右边,但是蓝色盒子就 ...
- 认识CSS中布局之文档流、浮动、定位以及叠放次序
前端之HTML,CSS(七) CSS CSS布局的核心就是盒子的摆放,即CSS定位.而CSS中定位机制分为:普通流(nomal flow).浮动(float).定位(position). 普通流 普通 ...
- 【深入BFC】 关于CSS中float布局,清除浮动,和margin合并的原理解析,解开你心中的那些困惑!
BFC的通俗理解: Block Formatting Context(块级格式化上下文)是W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用. ...
- 解决CSS中float:left后需要clear:both清空的繁琐步骤(转)
之前,因为公司专门有CSS+DIV的切片设计师,所以我一直都是注重程序的设计与开发.现在,因为接了一些Web网站的项目需要制作,就在空闲时间学习起了CSS.Jquery. 现在,大部分的横排导航都 ...
随机推荐
- 洛谷P1107 & BZOJ1270 [BJWC2008]雷涛的小猫
一道DP. 给你一个矩阵里面有很多数,你需要从上往下找到一种跳跃方法使得经过的点的价值之和最大. 具体题面见链接 洛谷P1107 BZOJ1270 很明显是一个二维的DP. #include<b ...
- 电子笔记本的思考(1)(ver0.2)
章节:电子笔记本的思考(1) 陶哲轩在<解题·成长·快乐——陶哲轩教你学数学>中着重强调,用纸笔来“缓存”思维对于数学解题的重要性: 用选定的符号表达你所知道的信息,并画一个示意图.把 ...
- poj - 3254 - Corn Fields (状态压缩)
poj - 3254 - Corn Fields (状态压缩)超详细 参考了 @外出散步 的博客,在此基础上增加了说明 题意: 农夫有一块地,被划分为m行n列大小相等的格子,其中一些格子是可以放牧的( ...
- [不断更新中] 各种错误&&总结
各种错误 无论感觉多稳都要对拍对拍对拍!!! 不要爆long long 不要爆long long 不要爆long long 不要爆long long 不要爆long long 不要爆long long ...
- 深入分析同步工具类之AbstractQueuedSynchronizer
概览: AQS(简称)依赖内部维护的一个FIFO(先进先出)队列,可以很好的实现阻塞.同步:volatile修饰的属性state,哪个线程先改变这个状态值,那么这个线程就获得了优先权,可以做任何事 ...
- [转] 探讨JS合并两个数组的方法
我们在项目过程中,有时候会遇到需要将两个数组合并成为一个的情况. 比如: 1 2 var a = [1,2,3]; var b = [4,5,6]; 有两个数组a.b,需求是将两个数组合并成一个.方法 ...
- 【Codeforces 1009C】Annoying Present
[链接] 我是链接,点我呀:) [题意] 题意 [题解] 其实就是让你最后这n个数字的和最大. 加上的x没有关系.因为肯定都是加上n个x 所以直接加上就可以了 主要在于如何选取j 显然我们要找到一个位 ...
- MVC系统学习1—MVC执行流程
用MVC来做开发也有一段时间了,但是感觉一直没入门,就徘徊在似懂非懂的层次,和去年刚毕业学习WebForm时一样,当时通过张子阳老兄的几篇文章,明白了请求处理流程,页面生命周期才真正明白了WebFor ...
- noip模拟赛 列车调度
[ 问题描述 ] 有N辆列车,标记为1,2,3,…,N.它们按照一定的次序进站,站台共有K个轨道,轨道遵从 先进先出的原则.列车进入站台内的轨道后可以等待任意时间后出站,且所有列车不可后退.现在要使出 ...
- Linux下汇编语言学习笔记76 ---
这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...