CSS布局模型 之 浮动模型(浮动的工作原理和清除浮动技巧?)

浮动的工作原理

浮动是让某元素脱离文档流,在浮动框之前和之后的非定位元素会当它不存在一样,可能沿着它的另一侧垂直流动,但都为其腾出空间,块级元素也不例外(被浮动元素占据了部分行空间的块级元素,仍然被看作是占据了一整行,只不过是被浮动元素占据的那部分空间无法利用罢了)。

浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止;如果当前线上的水平空间不足,它将逐行向下移动,直到有空间为止(所以浮动元素不会影响页面上方布局)。任何元素都可以浮动,浮动元素会生成一个块级框(拥有块级元素特性,但不占整行),而不论它本身是何种元素。

另外因为浮动元素脱离了文档流,所有它无法为其文档流中的父级元素撑起高度。

清除浮动技巧

1、clear清除浮动

left    在左侧不允许浮动元素。

right在右侧不允许浮动元素。

both在左右两侧均不允许浮动元素。

none默认值。允许浮动元素出现在两侧。

在 CSS1 和 CSS2 中,这是通过自动为清除元素(即设置了 clear 属性的元素)增加上外边距实现的。在 CSS2.1 中,会在元素上外边距之上增加清除空间,而外边距本身并不改变。不论哪一种改变,最终结果都一样。例如:如果声明为左边清除,会使元素的上外边框边界刚好在左边浮动元素的下外边距边界之下。

要注意了,我们是通过在别的元素上清除浮动来实现撑开高度的, 而不是在浮动元素上。浮动元素脱离了文档流,就算为其加了清除空间,也影响不了父元素的高度,最多能让其某侧不允许其他浮动元素。

clear 只能作用与块级元素或浮动元素,不过上面已经说了作用于浮动元素的弊端,所以一般都是使用块级元素。

全浏览器通用的clearfix方案,使用伪元素清除浮动【推荐】

// 引入了zoom以支持IE6/7

// 同时加入:before以解决现代浏览器上边距折叠的问题

.clearfix:before,

.clearfix:after {

display: table;

content: " ";

}

.clearfix:after {

clear: both;

}

.clearfix{

*zoom: 1;

}

另外:也可以在父级元素中增加一个专门清除浮动的块级元素。(不推荐)

2、BFC清除浮动

BFC全称是块状格式化上下文,它是按照块级盒子布局的。我们了解他的特征、触发方式、常见使用场景这些就够了。

BFC的主要特征

BFC容器是一个隔离的容器,和其他元素互不干扰;所以我们可以用触发两个元素的BFC来解决垂直边距折叠问题。

BFC可以包含浮动;通常用来解决浮动父元素高度坍塌的问题。

其中,BFC清除浮动就是用的“包含浮动”这条特性。

那么,怎样才能触发BFC呢?

BFC的触发方式

我们可以给父元素添加以下属性来触发BFC:

float 为 left | right

overflow 为 hidden | auto | scorll

display 为 table-cell | table-caption | inline-block | flex | inline-flex

position 为 absolute | fixed

参考文献:http://www.jianshu.com/p/09bd5873bed4

https://www.w3.org/TR/2008/REC-CSS2-20080411/visuren.html#propdef-float

时间: 2024-07-28 12:40:39

CSS布局模型 之 浮动模型(浮动的工作原理和清除浮动技巧?)的相关文章

解释下浮动和它的工作原理?清除浮动的技巧

浮动元素脱离文档流,不占据空间.浮动元素碰到包含它的边框或者浮动元素的边框停留. 浮动元素引起的问题和解决办法? 浮动元素引起的问题: 父元素的高度无法被撑开,影响与父元素同级的元素 与浮动元素同级的非浮动元素(内联元素)会跟随其后 若非第一个元素浮动,则该元素之前的元素也需要浮动,否则会影响页面显示的结构 解决方法: 使用CSS中的clear:both;属性来清除元素的浮动可解决2.3问题,对于问题1,添加如下样式,给父元素添加clearfix样式: .clearfix:after{conte

Web前端入门学习(5)——浮动原理及清除浮动

浮动原理及清除浮动 上节回顾 在上节的<Web前端入门学习(4)-- 块级元素和行内元素之特征与转换>中(http://cherry360.blog.51cto.com/12176744/1863945),介绍了块级元素和行内元素的特征,及粗略介绍了如何进行转换.加上display属性,可以指定元素的类型,如display:block.display:inline,以及display:inline-block.当然用得最多的是最后一个display:inline-block.结合例子来看: 例

块级格式化上下文(block formatting context)、浮动和绝对定位的工作原理详解

CSS的可视化格式模型中具有一个非常重要地位的概念——定位方案.定位方案用以控制元素的布局,在CSS2.1中,有三种定位方案——普通流.浮动和绝对定位: 普通流:元素按照先后位置自上而下布局,inline元素水平排列,直到行被占满后换行,block元素则被渲染为完整的一行,除非指定,所有元素默认为普通流定位. 浮动:浮动布局中,元素首先按照普通流位置出现,然后根据浮动方向尽可能向左或右偏移,效果与文本环绕相似. 绝对定位:元素会脱离普通流,因此绝对定位元素不会对其兄弟元素产生影响(与float不

Fiori编程模型规范里注解 - @ObjectModel.readOnly工作原理解析

今天是农历鼠年大年初五,本文是鼠年第5篇文章,也是汪子熙公众号第204篇原创文章. 最近大家真是谈蝙蝠色变呀! SAP官网的ABAP Programming Model for Fiori帮助文档里,定义了很多注解(Annotation): https://help.sap.com/viewer/cc0c305d2fab47bd808adcad3ca7ee9d/1709%20000/en-US/896496ecfe4f4f8b857c6d93d4489841.html 对于这些注解,我们可以从其

CSS布局定位基础-盒模型和定位机制

1. 盒模型 2. 外边距合并 3. 定位机制 4. Float 5. Position:属性有哪些取值,它们的行为是什么? 无依赖绝对定位? 6. Display:常见属性值有哪些取值? 7. 对BFC规范的理解?        1. 盒模型 盒模型从内向外包括content,padding,border和margin. 从前往后分别是:border,content+padding,background-image,background-color,margin 盒模型有两种模式:W3C标准模

CSS布局(弹性盒模型)

一.弹性盒模型介绍 1.弹性盒模型介绍 — 基础知识 弹性盒模型( Flexible Box 或 Flexbox)是一个CSS3新增布局模块,官方称为CSS Flexible Box Layout Module,用于实现容器里项目的对齐.方向.排序(即使在项目大小位置.动态生成的情况).弹性盒模型最大的特性在于,能够动态修改子元素的宽度和高度,以满足在不同尺寸屏幕下的恰当布局. *弹性容器(flex container) *弹性子元素(flex item) *轴分为主轴(main axis) 侧

元素,布局方式,BFC和清除浮动

元素:块级元素,内联元素,内联块状元素 块级元素:在默认情况下会独占一块区域                相对于块级元素的父元素来讲,块级元素占据的行默认是单独享有的.                通过设置元素的样式为: display:block;      可以让元素具有块级样式. 块级元素的特点是:水平拉伸,垂直包裹. 所谓水平拉伸,是相对于块级元素的父元素来说的. 在不设置with属性时,块级元素的width会被水平拉伸,使得width+border+margin等于父元素的widt

浮动布局所带来的影响以及如何清除浮动

在页面的布局过程中浮动是个好东西,我们经常会用到浮动布局,它可以使元素共享一行,极大的方便了我们的布局过程.但是很多人可能只是会用,对浮动的原理只是一知半解,如果没有清晰的认识到浮动所带来的影响以及如何清除浮动所带来的影响,那么面对代码量庞大的页面将会变得一头雾水.所以接下来我们来深入学习一下浮动布局,相信大家把浮动这个概念掌握的很清晰的时候,以后运用起来将会更加得心应手. 一. 什么是浮动布局? CSS 的 Float(浮动),会使元素向左或向右移动,使元素共享一行,类似于给元素加了inlin

CSS中的浮动和清除浮动

浮动到底是什么? 浮动核心就一句话:浮动元素会脱离文档流并向左/向右浮动,直到碰到父元素或者另一个浮动元素.请默念3次! 浮动最初设计的目的并没那么多事儿,就只是用来实现文字环绕效果而已,如下所示: 文字环绕效果 但是早期的前端开发者发现:浮动的元素可以设置宽高并且可以内联排列,是介于inline和block之间的一个神奇的存在,在inline-block出来之前,浮动大行其道.直到inline-block出来后,浮动也有它自己独特的使用场景. 浮动有哪些特征? 浮动的特征就体现在前文的那句话中