CSS(3)--浮动|青训营笔记

103 阅读4分钟

这是我参与「第四届青训营 」笔记创作活动的的第3天

1、浮动

1.1 浮动简介

  • 通过浮动可以使一个元素向其父元素的左侧或右侧移动

    使用float属性来设置元素的浮动

    可选值:

    none 默认值,元素不浮动

    left 元素向左浮动

    right 元素向右移动

  • 注意:元素设置浮动以后,水平布局的等式便不必强制成立(margin-right就没了)

  • 元素设置浮动后,会完全从文档流中脱离,不再占用文档流的位置

    所以,元素下边的还在文档流中的元素会自动向上移动(两个div方块,如果将上方的设置了浮动,下方会移上去重叠)

  • 浮动的特点:

    1、浮动元素会完全脱离文档流,不再占据文档流中的位置;

    2、设置浮动以后元素会向父元素的左侧或右侧移动;

    3、浮动元素默认不会从父元素中移出;

    4、浮动元素向左或向右移动时,不会超过它前面的其他浮动元素;

    5、如果浮动元素的上边是一个没有浮动的块元素,则浮动元素无法上移;

    6、浮动元素不会超过它上边的兄弟元素,最多一样高;

  • 简单总结:

    浮动目前来讲它主要作用就是让页面中的元素可以水平排列

    通过浮动可以制作一些水平方向的布局

  • 浮动元素不会盖住文字,文字会自动环绕在浮动元素周围,所以我们可以利用浮动来设置文字环绕图片的效果

  • 元素设置浮动后,将会从文档流中脱离,从文档流脱离后,元素的一些特点也会发生改变

    脱离文档流的特点:

    1、块元素不再独占一行;

    2、脱离文档流后,块元素的宽度和高度默认都被内容撑开;

    3、行内元素脱离文档流以后会变成块元素,特点和块元素一样,可以设置宽高

    脱离文档流后,不需要再区分块和行内了

    1.2 浮动缺陷--高度塌陷

    • 高度塌陷问题:

      在浮动布局中,父元素的高度默认是被子元素撑开的,当子元素浮动后,其会完全脱离文档流,子元素从文档流中脱离将会无法撑起父元素的高度,导致父元素高度丢失;

    • 父元素高度丢失以后,其下的元素会自动上移,导致页面的布局混乱

    • 所以高度塌陷是浮动布局中比较常见的问题,这个问题我们必须要进行处理!

    • 解决方案:

      • 方案一:给父元素设置固定高度(能处理,但不能满足所有需要,高度少了会溢出,多了会空白)

      • 方案二:BFC(Block Formatting Context)块级格式化环境

1.3 BFC Block Formatting Context

  • BFC是一个CSS中的一个隐含的属性,可以为一个元素开启BFC,开启BFC该元素会变成一个独立布局的区域;

  • 元素开启BFC的特点

    1. 开启BFC的元素不会被浮动元素覆盖;

      //上下两个div box,给上边的元素开启浮动,下边的元素就会被遮盖。如果此时给下边的元素开启BFC,则他两会并排显示,不会被遮盖

    2. 开启BFC的元素子元素和父元素的外边距不会重叠;

      //给子元素设置margin-top,子元素和父元素会一起向下移动 ,此时给父元素开启BFC,只会移动子元素,父元素不会一起向下移动

    3. 开启BFC的元素可以包含浮动的子元素

  • 可以通过一些特殊的方式来开启元素的BFC:(不能直接开启BFC 只能间接开启BFC)

    1. 设置元素的浮动;float:left;(缺陷:脱离文档流)不推荐 副作用大

    2. 将元素设置为行内块元素;display:inline-block;(缺陷: 宽度也没了)不推荐 副作用大

    3. 将元素的overflow设置为一个非visible值(scroll、auto、hidden)

      常用方式 为元素设置 overflow:hidden; 开启其BFC 以使其可以包含浮动元素;