浮动与定位(笔记)

浮动

1. CSS布局的三种机制

  • 普通流
    • 块级元素
    • 行内元素
  • 浮动
  • 定位

2. 什么是浮动

  • 浮动的元素会脱离标准流
  • 浮动的元素不会撑开父盒子的高度
  • 浮动的元素一行可以摆放多个,摆放不下会换行

3. 浮动排列

  • 左浮动的盒子靠上靠左排列
  • 右浮动的盒子考上靠右排列
  • 浮动盒子在包含块中排列时,会避开常规流块盒(浮动会飞,但是能看见地下的)
  • 常规流块盒在排列时,无视浮动盒子(块盒在地下,但是看不见会飞的)
  • 行盒在排列时,会避开浮动盒子(文字环绕)
  • 外边距合并不会发生

如果文字没有在行盒中,浏览器会自动生成一个行盒包裹文字,该行盒叫做匿名行盒。

4. 高度塌陷

  • 给父盒子设置高度
  • 使用overflow: hidden;
  • 清除浮动
    • 在盒子后面放一个div,这个div设置 clear: both;属性
    • 给高度塌陷的父盒子添加一个伪元素,设置clear: both;属性,伪元素要设置块盒

5. visibility

CSS属性 visibility 显示或隐藏元素而不更改文档的布局

  • visible:默认的
  • hidden:隐藏元素,只是隐藏不会删除
  • collapse:用于table的话是直接删除,相当于display: none; 其他的不是

6. BFC 块级格式化上下文

  • 根元素<html>

  • 浮动元素(元素的 float不是 none

  • 绝对定位元素(元素的 positionabsolutefixed

  • 行内块元素(元素的 displayinline-block

  • 表格单元格

  • 表格标题

  • 匿名表格单元格元素

  • overflow不为 visible 的块元素

  • display值为 flow-root 的元素

  • contain 值为 layoutcontent 或 paint 的元素

  • 弹性元素displayflex

  • 网格元素displaygrid

    MDN BFC 上面很详细

定位

1. 定位的属性及特征

  • 静态定位:static

    • 默认的没有特征
  • 相位定位:relative

    • 不会影响页面的布局
    • 设备边偏移是根据自己本身的位置来设置,设置之后保留之前的位置,也不会影响其他元素
    • 会保留原先的位置
  • 绝对定位:absolute

    • 脱离常规流,并且在浮动之上(之上指Z轴)
    • 子绝父相,根据父元素有没有相对定位(除了静态定位的其他定位元素也可以),一直向上层找看是否有定位元素,如果没有就根据浏览器视口设置边偏移
    • 一般绝对定位的父级为相对定位,根据父级设置边偏移(给第二条概括)
    • 不会保留原先的位置
  • 固定定位:fixed

    • 根据浏览器视口进行设置偏移量
    • 会固定在视口,不管滚轮怎么滚动我就是不改变位置
    • 不会保留原先的位置
    • 如果当元素祖先的 transform、perspective、filter 或 backdrop-filter 属性非 none 时,偏移量由视口改为该祖先。
  • 粘性定位:sticky

    • 和固定定位的特征相似
    • 固定定位是固定在浏览器视口,粘性定位是固定在父元素
    • top、left、right、bottom,必须要设置一个才有效果
    • 但是这四个属性的偏移量还是根据浏览器视口设置的,并且不会溢出父元素
    • 测试中只有top和left有效果,具体原因还不知道
    • 会保留原先的位置

2. 定位元素水平垂直居中

  • 在设置宽高的情况下,top、left、right、bottom都为0,margin为auto,就可以居中
  • 如果没有宽高,固定和绝对定位会撑满父级元素

3. 层叠上下文

  • 创建层叠上下文的元素的背景和边框
  • 层叠级别 z-index 为负值的层叠上下文
  • 常规流非定位的块盒
  • 非定位的浮动盒子
  • 常规流非定位行盒
  • 任何 z-index 是 auto 的定位子元素,以及 z-index 是 0 的层叠上下文
  • 层叠级别 z-index 为正值的层叠上下文

4. display

浮动和定位默认把元素转换为 display: block

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值