css folat,深入了解CSS的float属性

页面布局是每一个前端开发者的基本功,有些人做了多年前端,布局的熟练度虽有所提升,但是效率还是跟初做布局者差不太多,究其原因,我觉得很多人做页面布局时一是没有自己固定的布局模式,而是基本功不扎实。

CSS的属性数跟JS,C#这些编程语言的复杂程度根本不可同日而语,有人会说:CSS属性说到底就那几个,用的时候再查都可以。对于前端布局不高的项目还可以,如果碰到对布局要求极致,兼容性要求极高的项目,临时抱佛脚终究不是个办法。

7ce278611d536b6fd6004314f63c5515.png

下面我们就来深究一下CSS的float属性

float 属性定义元素在哪个方向浮动。以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。如果浮动非替换元素,则要指定一个明确的宽度;否则,它们会尽可能地窄。注释:假如在一行之上只有极少的空间可供浮动元素,那么这个元素会跳至下一行,这个过程会持续到某一行拥有足够的空间为止。

可以看到float属性定义中提到任何元素都可以浮动,浮动元素会生成一个块级框,这里的块级框是不换行的,也就是说,如果一个容器中有多个子容器,如果给子容器设置了float为left,那么我们就可以把所有字容器看作一个靠左对齐的文本,每个子容器代表一个字(理想情况下,每个字容器的高宽都一样)。我们看看子容器不同宽度使用float为left如何排列

634210624d111b0dff1c6f583a247ef8.png

9178650c2e31a1087381095733ab7b94.png

d236a8d13fda66559e7c439d130acb35.png

上面图中的子容器边框、内边距、外边距都为0,并且高度一致。如果子容器设定了边框、内边距、外边距距离,我们在布局的时候必须考虑这三个属性值的占位。例如子容器宽度为50%,边框为1px的情况,由于border为1px,因此子容器的宽度为父容器宽度的50%+2px,此时虽然设定了float为left,但是由于第一个子容器右侧留下的空间已经不足以放下第二个容器,因此第二个子容器就会自动换至下一行。

f2082e277b9a75fad7e8f79c5f2f650c.png

接下来我们来看一下子容器高度不一致时float为left的情况。

2b71989a5fb00c2addbbc3e4dfe4e446.png

c2a1385f9c6b111d42edb9f69753e6e1.png

看到上面四张图,聪明的童鞋可能已经摸索出四个子容器不同高度float为left的位置原理。我们用一句通俗的话来描述一些float为left的子容器是如何放到父容器中的。

沿着父容器顶部向左推入容器,如果卡住推不动了,判断当前位置能否全部显示该子容器,如果能则完成,如果不能则往下走继续找空档往里面推入容器,以此类推。

如果float为right,则上面那段话改一下就可以了

沿着父容器顶部向右推入容器,如果卡住推不动了,判断当前位置能否全部显示该子容器,如果能则完成,如果不能则往下走继续找空档往里面推入容器,以此类推。

上面我们测试的子容器都是block类型。下面我们看看inline类型的容器float为left的情况

父容器包含四个span容器,并且四个子容器设定了宽高,但是由于span标签的特性并不会按照css设定的宽高显示。

97a96123f0796f8f90caef236517553b.png

2e3690429564e76a8186c44177a28231.png

可以看到,如果是inline行内元素,float属性设置以后就会变成块元素。inline容器会被设置float的容器挤到一边,在我们平时布局时碰到的情况要比上面的情况多的多,如果有很多的兄弟容器为inline类型最好不要直接使用float属性,有时明明测试正确,容器内容稍微变一下布局就会出问题,这会给我们带来很多的不可控因素。

举报/反馈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值