关于前端:CSS-浮动

35次阅读

共计 1698 个字符,预计需要花费 5 分钟才能阅读完成。

标签依照默认的形式排列,咱们叫做规范流(也叫一般流、文档流)。

比方块状元素会独占一行,从上到下顺序排列,而行内元素会依照程序从左到右排列,碰到父元素的边缘则主动换行。

规范流是最根本的布局形式。 但有很多的布局成果,仅仅用规范流是没有方法实现的,此时能够用浮动实现布局,因为 浮动能够扭转元素标签默认的排列形式,最典型的利用:能够让多个块级元素一行内排列显示。

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;}

长处:没有减少标签,构造简略
毛病:关照低版本浏览器。

正文完
 0