标签依照默认的形式排列,咱们叫做规范流(也叫一般流、文档流)。
比方块状元素会独占一行,从上到下顺序排列,而行内元素会依照程序从左到右排列,碰到父元素的边缘则主动换行。
规范流是最根本的布局形式。
但有很多的布局成果,仅仅用规范流是没有方法实现的,此时能够用浮动实现布局,因为 浮动能够扭转元素标签默认的排列形式,
最典型的利用:能够让多个块级元素一行内排列显示。
div {
float: none; /* 元素不浮动(默认值)*/
float: left; /* 元素向左浮动 */
float: right; /* 元素向右浮动 */
}
1、浮动个性
1.1 浮动元素会脱离规范流(脱标)
设置了浮动的元素,脱离了规范流的管制,不再保留原来的地位。
1.2 浮动的元素会一行内显示并且元素顶部对齐
如果多个盒子都设置了浮动,他们会依照属性值在一行内显示并且顶端对齐,即便各个盒子大小不一样。
如果父元素一行内装不下多个盒子,多出的盒子会另起一行对齐。
1.3 浮动的元素具备行内块元素的个性
任何元素都能够设置浮动,不论原来是块级元素、行内元素还是行内块元素。设置浮动后,元素能够取得行内块元素的个性。
- 如果
行内元素设置为浮动,不须要模式转换就能够给元素设置宽度和高度
。 - 如果
块级盒子
没有设置宽度,默认宽度和父级是一样的,在设置浮动后,其大小依据内容来决定
浮动的元素和行内块元素的区别:浮动的盒子是相互挨在一起的,没有缝隙。
2、浮动布局留神点
2.1 浮动和规范流的父盒子搭配
在布局过程中,咱们先用规范流的父元素排列高低地位,之后外部子元素采纳浮动排列左右地位。
子元素能够先设置尺寸,而后再排列地位。
2.2 一个元素浮动了,实践上其余的兄弟元素也要浮动
一个盒子设置为浮动后,会影响浮动盒子前面的规范流(因为浮动元素会脱标)。如果一个盒子中有多个盒子,如果其中的一个盒子浮动,那么其余兄弟元素也应该浮动。
3、革除浮动
因为父级盒子很多状况下,不不便给高度(比方一些购物网站的商品页,商品数量不是肯定的,父盒子的高度也是不肯定的),但子盒子浮动又不占有地位,最初的后果就是父级盒子高度为 0,会影响上面的规范盒子。
这个时候咱们就须要 革除浮动
。革除浮动不是让元素不浮动,分明浮动的 本质是革除浮动元素造成的影响。
如果父盒子自身有高度,就不须要革除浮动。革除浮动后,父级会依据浮动的子盒子自动检测高度。
父级有了高度,就不会影响前面的规范流了。
div {
clear: left; /* 不容许左侧有浮动元素(革除左浮元素影响)*/
clear: right; /* 不容许右侧有浮动元素(革除右浮元素影响)*/
clear: both; /* 同时革除左右两侧浮动的影响(理论工作中,简直只用这个)*/
}
革除浮动的策略是闭合浮动。只让浮动在父盒子外部影响,不影响父盒子里面的其余盒子。
3.1 革除浮动 —— 额定标签法
额定标签法也称为隔墙法。
额定标签法会在浮动元素开端增加一个空的标签【要求这个标签必须是块级元素】。例如 <div style=”clear: both”></div>,或者 <br/>。
长处:通俗易懂,书写不便。
毛病:增加许多无意义的标签,结构化较差。
3.2 革除浮动 —— 父级增加 overflow
能够给父级增加 overflow
属性,将其设置为 hidden、auto 或 scroll。
长处:代码简洁
毛病:无奈显示溢出的局部。
3.3 革除浮动 —— :after 伪元素法
额定标签法的升级版,也是给父元素增加
.clearfix:after {
content: '';
display: block;
height: 0;
clear: both;
visibility: hidden;
}
/* IE6、7 专有 */
.clearfix {*zoom: 1;}
长处:没有减少标签,构造简略
毛病:关照低版本浏览器。
3.4 革除浮动 —— 双伪元素革除浮动
同样给父元素减少
.clearfix:before, .clearfix:after {
content: '';
display: table;
}
.clearfix:after {clear: both;}
/* IE6、7 专有 */
.clearfix {*zoom: 1;}
长处:没有减少标签,构造简略
毛病:关照低版本浏览器。