float布局

194 阅读3分钟

前言

  • float属性用于创建浮动框,将其移动到一边,直到左边缘或右边缘触及包含块或另一个浮动框的边缘

属性值:

  • none元素不浮动,默认值
  • left元素向左浮动
  • right元素向右浮动

浮动特性

  • 浮动元素会脱离标准流
  • 浮动的元素会一行内显示并且元素顶部对齐
  • 浮动的元素会具有行内块元素的特性,任何元素都可以浮动,不管原先是什么模式的元素,添加浮动后具有行内块元素相似的特性。(1.可以直接给高度和宽度,2.宽度根据内容的大小来决定)
  • 浮动的元素是互相紧贴在一起的,不会有缝隙,如果父级盒子宽度装不下这些浮动盒子,多处的盒子会自动换行,另起一行对齐

浮动特性-脱标

  • 脱离标准流的控制(浮)移动到指定位置(动),俗称脱标
  • 浮动的盒子不再保留原先的位置

浮动元素搭配的标准流父元素

  • 为了约束浮动元素位置,我们网页布局一般采取的策略是,先用标准流的父元素排列上下位置,之后内部子元素采取浮动排列左右位置,符合网页布局第一准则
  • 一个元素浮动了,理论上其余的兄弟元素也要浮动
  • 浮动的盒子只会影响浮动盒子后面的标准流,不会影响前面的标准流

清除浮动

清除浮动的原因:

  • 浮动元素的标尊流父元素有一个共同点,都是有高度的,但是有些情况下父盒子的高度是不能写死的,此时可以让子盒子撑开父盒子,有多少子盒子,父盒子就有多高
  • 如果只是不给父元素设置高度,当子元素都浮动时,父元素的高度就会变成0,因为浮动的元素时不占有位置的,由于浮动元素不再占用原标准流的位置,所以会对后面的元素排版产生影响
  • 由于父盒子在很多情况下,不方便给高度,但是子盒子浮动又不占有位置,最后父盒子的高度为0时,就会影响下面的标准流盒子,所以我们需要清除浮动

清除浮动的本质:

  • 清除浮动的本质是清除浮动元素造成的影响
  • 如果父盒子本身有高度,则不需要清楚浮动
  • 清除浮动之后,父级就会根据浮动的子合租自动检测高度,父级有了高度,就不会影响下面的标准流了
  • 清除浮动的策略就是闭合浮动
选择器{clear:属性值;}

clear的属性值:

  • left不允许左侧有浮动元素(清除左侧浮动的影响)
  • right不允许右侧有浮动元素(清除右侧浮动的影响)
  • both同时清除两侧浮动的影响
  • 实际开发中几乎只用clear:both

清除浮动的方法:

  • 额外标签法(隔墙法)是w3c推荐的做法
  • 父级添加overflow属性
  • 父级添加:after伪元素
  • 父级添加双伪元素

1.清除浮动之额外标签法

  • 额外标签法会在浮动元素末尾(最后一个浮动盒子)添加一个空的标签。例如<div style="clear:both"></div>或者其他标签
  • 要求这个新的空标签,必须是块汲元素

2.清除浮动之父元素添加overflow

overflow属性值:

  • hidden
  • auto
  • scroll
  • 缺点:无法显示溢出的部分

3.清除浮动之:after伪元素

  • :after方式是额外标签法的升级版,也是给父元素添加,添加clearfix
.clearfix:after{
    content:"";
    display:block;
    height:0;
    clear:both;
    visibility:hidden;
}
.clearfix{/*IE6、7专有*/
    *zoom:1;
}

4.清除浮动之双伪元素

.clearfix:before,
.clearfix:after{
    content:"";
    display:table;
}
.clearfix:after{
    clear:both;
}
.clearfix{
    *zoom:1;
}