一、为什么需要浮动
网页中有很多的布局效果,标准流没有办法完成。此时我们就可以利用浮动来实现部分网页布局,因为浮动可以改变元素标签默认的排列方式。
浮动最典型的应用:可以让多个块级元素在一行内排列显示。(无空隙)网页布局第一准则:多个块级元素纵向排列找标准流,横向排列用浮动!
二、什么是浮动
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 双伪元素清除浮动
也是给父元素添加一个类。
文章来源:https://www.toymoban.com/news/detail-494936.html
优点:代码简洁;
缺点:还是照顾低版本浏览器。
(依然是直接复制粘贴就可以!)文章来源地址https://www.toymoban.com/news/detail-494936.html
到了这里,关于CSS 浮动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!