CSS 浮动

一、为什么需要浮动

网页中有很多的布局效果,标准流没有办法完成。此时我们就可以利用浮动来实现部分网页布局,因为浮动可以改变元素标签默认的排列方式。

浮动最典型的应用:可以让多个块级元素在一行内排列显示。(无空隙)
网页布局第一准则:多个块级元素纵向排列找标准流,横向排列用浮动!

二、什么是浮动

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

div1 {
float: left;
}

属性值:
none 不浮动,left 左浮动,right 右浮动

三、浮动特性

① 浮动元素会脱离标准流;
② 浮动元素会在一行内显示,并沿着元素的顶部对齐;
③ 浮动元素会具有行内块元素的特性。

1.脱离标准流

(1)脱离标准流的控制,移动到指定位置;
(2)浮动的盒子不再保留原先的位置。

在这里插入图片描述
浮动的盒子是飘起来的,不会占用位置!

2.一行内显示

如果多个盒子都设置了浮动,则它们会按照属性值在一行内显示,并沿着元素顶部对齐。(紧挨着不会有空隙,一行显示不下会换行显示)

3.具有行内块元素特性

任何元素都可以浮动,不管原先是什么模式的元素,添加浮动后具有和行内块元素相似的特性。

① 如果行内元素有了浮动,则不需要转换成块级或行内块元素就可以直接为其设置宽度和高度;
② 如果块级盒子没有设置宽度,默认宽度和父级一样宽,但是添加浮动后,它的大小根据内容来决定。

四、约束浮动元素

为了约束浮动元素的位置,我们通常将浮动元素与标准流父级元素搭配使用。
先用标准流的父元素排列上下位置,之后内部子元素采取浮动排列左右位置,符合网页布局第一准则!

在这里插入图片描述

① 通栏盒子和浏览器一样宽,无需设置宽度;
② 浮动的盒子只会影响它后面的标准流盒子,不会影响前面标准流的;
③ 一个盒子里面有多个盒子时,如果其中一个盒子浮动了,那么为了防止不必要的麻烦,其它的盒子也应当设置浮动。

五、清除浮动

1.为什么要清除浮动

我们前面的浮动元素都有一个标准流的父元素,它们有一个共同特点就是它们都是有高度的。但是,所有的父盒子都必须有高度吗?
其实在很多情况下,由于盒子内容大小的不确定性,父盒子是不方便直接给出高度的,但是子盒子浮动又不占有位置,最终导致父级盒子高度为0,会直接影响到下面的标准流盒子。

在这里插入图片描述

2.清除浮动本质

① 清除浮动的本质是清除浮动元素造成的影响;
② 如果父盒子本身有高度,则不需要清除浮动;
③ 清除浮动之后,父级就会根据浮动的子盒子自动检测高度,父级有了高度就不会影响下面的标准流了。

语法:

div2 {
clear: right;
}

在这里插入图片描述
我们在实际工作中,几乎只会用到 both!

3.清除浮动的方法

① 额外标签法也称隔墙法,是 W3C 推荐的做法;
② 父级添加 overflow 属性;
③ 父级添加 :after 伪元素;
④ 父级添加双伪元素。

3.1 额外标签法

额外标签法会在最后一个浮动元素的末尾添加一个空的标签,例如<div style="clear: both"></div>,或者其它标签(如<br/>等)。

优点:通俗易懂,书写方便;
缺点:添加许多无意义的标签,结构化较差。
(新添加的元素必须是块级元素!)

3.2 父级添加 overflow 属性

为父级盒子添加 overflow 属性,属性值有:hidden、auto 和 scroll。

优点:代码简洁;
缺点:无法显示溢出的部分。
(注意是要给父元素添加属性!)

3.3 :after 伪元素法

:after 方法是额外标签法的升级版,也是给父元素添加。

给父元素添加一个名叫 clearfix 的类,如下图是 CSS部分:
在这里插入图片描述

优点:没有增加标签,结构简单;
缺点:照顾低版本浏览器。
(固定版式,复制粘贴直接用就可以!)

3.4 双伪元素清除浮动

也是给父元素添加一个类。
在这里插入图片描述

优点:代码简洁;
缺点:还是照顾低版本浏览器。
(依然是直接复制粘贴就可以!)

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

栈老师不回家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值