css之浮动

64 阅读3分钟

css布局之浮动(float)

1. 浮动的背景

浮动最开始只是单纯的为了实现文字环绕现象,而随着技术的发展,就有人提出了一个想法,以至于现在可以实现网页中盒子的多列排版布局,比如一栏布局,两栏布局,多栏布局。

2. 浮动的现象

浮动通俗易懂的来说就是让添加了浮动属性的元素漂浮起来,也可以认为使他脱离了标准文档流上移了一层,当我们只设置浮动属性时浮动的元素会互相贴靠,并且每个浮动的元素都具有收缩现象

2. 浮动的属性
属性值描述
none表示不浮动。默认的情况
left左浮动
right右浮动
inherit继承父元素的浮动属性
3.浮动元素的破坏性

因为浮动的元素脱离了我们的标准文档留,所以我们的父级元素的高度或者宽度就不会被子元素(浮动的元素)撑起来。就造成了高度塌陷!

解决破坏性/清楚浮动:

  • 给父盒子设定一个高度!(使用不灵活,后期不易维护) 一般应用在网页盒子固定高度区域,比如固定的导航栏
  • 内墙法:在最后一个浮动元素后面新填一个空的块级元素 并设定他的元素clear:both; 清楚浮动造成的影响。 (结构冗余!如果每一个浮动元素都需要加的话就会冗余)
  • 伪元素(选择器)清楚法
 .clearfix::after{
     content:''; //添加元素的内容
     display:block; //添加的元素设为块级元素
     clear:both; // 清除浮动!
 }
  • overflow:hiddenvisible超出部分可见,hidden超出部分隐藏,scroll滚动条,auto基本上和scroll一样,inherit继承父级),使用这个属性会形成BFC (Block Formtting Context)计算BFC高度的时候浮动元素也参与计算!那么形成BFC的条件,除了overflow:visitable 都能形成BFC
BFC

(1)BBOX 即盒子,页面的基本构成元素。分为inlineblockinline-block三种类型的BOX

(2)FCFormatting Context是W3C的规范中的一种概念,他是页面中的一块渲染区域,并且有一套渲染规则,它决定了其子元素将如何定位,以及和其他元素的关系和相互作用。

常见的Formatting ContextBlock formatting context (简称BFC) 和 Inline formatting context (简称IFC)

BFC定义

直译为"块级格式化上下文"。他是一个独立的渲染区域,只有Block-level box参与,他规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干

BFC布局规则:

  1. 内部的Box会在垂直方向,一个接一个地放置。
  2. Box垂直方向的距离由maegin决定。属于同一个BFC的两个相邻Boxmargin会发生重叠
  3. 每个元素的margin box的左边,与包含块border box左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。
  4. BFC的区域不会与float元素重叠。
  5. BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。
  6. 计算BFC高度时,浮动元素也参与计算

哪些元素会生成BFC

  1. 根元素
  2. float属性不为none
  3. positionabsoltefixed
  4. displayinline-box
  5. oveflow不为visible