04 CSS浮动

91 阅读4分钟

浮动

传统网页布局的三种方式

  1. 普通流(标准流/文档流)

就是标签按照规定好的默认方式进行排列

例如 : 行内元素 : 一行可以放多个 (span , a ,i ,em)
        块元素 : 一行只能放一个 (div , p ,h1~h6 , ul ,ol >

为什么 需要浮动 ?

**有很多的布局效果,标准流没有办法完成,因此可以利用浮动来完成布局 **, 因为浮动可以改变元素标签默认的排列方式

浮动最典型的应用 : 可以让多个块级元素一行内排列显示

网页布局第一准则

多个块级元素纵向排列找标准流, 多个块级元素横向排列找浮动

浮动 float

选择器 { float : 属性值}

    属性值 : left(左浮动)
    属性值 : right (右浮动)
image.png

原本的样子是

image.png

给两个div都添加 左浮动

image.png

image.png

给一个添加左浮动,一个添加右浮动

image.png image.png

浮动特性

脱标(脱离标准流)

浮动的盒子不再保留原来的位置

image.png

这里只给第一个div 添加浮动,所以 此时 第一个div脱离标准流了,那么第二个盒子就会在第一个盒子的底部

image.png
浮动元素一行显示

若 给多个盒子都设置了浮动,那么他们会按照属性值在一行内进行显示 且顶端对齐排列

注 : 若父级盒子的宽度装不下这些浮动的盒子,那么剩下的盒子会另起一行对齐

浮动元素具有行内块特性

可以看出 ,给div 设置浮动之后,它们可以在一行内进行显示,而且还可以进行设置 宽高,所以 说 是具有行内块特性

浮动元素经常搭配标准流的父元素进行搭配使用

先准备一个大的父盒子,然后再把 要浮动的子元素添加进行

3种最常见的布局方式

自上而下排列
image.png
左右
image.png
分成更多块
image.png

浮动布局的注意点

经常和 标准流的父元素搭配使用

先用标准流的父元素排列上下位置,之后内部子元素采取浮动排列左右位置

一个元素浮动了,按道理其它div也需要浮动

浮动的盒子只会影响 浮动盒子后面的标准流,不会影响前面的标准流

为什么需要清除浮动

因为 父盒子在很多情况下,不方便给高度,但是子盒子设置了浮动了,所以此时子盒子不占有位置,最后父盒子的高度是0 ,那么 若父盒子下面再来一个标准流盒子,就会影响这个标准流盒子

清除浮动

本质

就是清除浮动元素带来的影响

不过,若父盒子本身有高度,那么就不需要清除浮动

清除浮动之后,父级就会根据浮动的子盒子来自动检测高度,父级有了高度,就不会影响下面的标准流了

清除

选择器{clear:属性值}

    属性值: left / right / both(都清除)

清除浮动的策略是 : 闭合浮动 : 只让浮动在父盒子内部影响,不影响父盒子外面的其他盒子

清除浮动方法

额外标签法 (隔墙法) W3C推荐

就是给 浮动元素末尾添加一个空的标签 此时新添加的标签必须是块级元素,不能是行内元素

image.png

此时 second 会压在第一个父盒子的下面

image.png

使用

image.png image.png

优点 : 通俗易懂,方便书写

缺点 : 添加许多无意义的标签,结构化较差

父级添加 overflow 属性

可以给父元素添加 overflow属性 ,将其属性值设置为 hidden、auto或者scroll

image.png

优点 : 代码简洁

缺点 : 无法显示溢出的部分

父级添加 after伪元素

可到 09 css3新特性 中 查看什么是伪元素

image.png

优点 : 没有增加标签,结构更简单

缺点 : 照顾低版本浏览器

父级添加 双伪元素

就是给 前后都添加一个盒子

display : table 表格 ,就是把新增的两个行内元素转为 表格元素,放在一行中

image.png

优点 : 代码更简洁

缺点 : 照顾低版本浏览器