深入CSS02-0731|青训营笔记

89 阅读2分钟

页面布局模型

盒模型中两种常见规则

块级 Block Level Box

  • 不和其他盒子并列排放
  • 适用所有的盒模型属性
  • 块级元素
    • 生成块级盒子:body,article,div,main,section,h1-6,p,ul,li等;
    • display:block;
  • 块级排版上下文:
    • 某些容器会创建一个BFC(Block Formatting Context)
      • 根元素
      • 浮动,绝对定位,inline-block
      • Flex子项和Grid子项
      • overflow值不是visible的块盒
      • display:flow-root
    • BFC内排版规则
      • 盒子从上到下摆放
      • 垂直margin合并
      • BFC内盒子的margin不会与外面的合并
      • BFC不会和浮动元素重叠

行级 Inline Level Box

  • 和其他行级盒子一起放在一行或拆开成多行
  • 盒模型中的width、height不适用
  • 行级元素
    • 生成行级元素;内容分散在多个行盒(line box)中:span,em,strong,cite,code等;display:inline;
  • 行级排版上下文:
    • 只包含行级盒子的容器会创建一个IFC(Inline Formatting Context)
    • IFC内排版规则
      • 盒子在一行内水平摆放
      • 一行放不下,换行显示
      • text-align决定一行内盒子的水平对齐
      • vertical-align决定一个盒子在行内的垂直对齐
      • 避开浮动(float)元素
<span>
    This is a text and
    <div>block></div>
    and other text.
</span>

<style>
    span{
    line-height:3;
    boder:2px solid red;
    background:coral;
    }
    
div{
    line-height:1.5;
    background:lime;
}

运行结果如下:

image.png

display属性

  • block 块级盒子
  • inline 行级盒子
  • inline-block 本身是行级,可以放在行盒中;可以设置宽高;作为一个整体时不会被拆散成多行
  • none 排版时被完全忽略

Flex Box 是什么?

  • 一种新的排版上下文
  • 它可以控制子级盒子的:
    • 摆放的流向(➡ ⬅ ⬆ ⬇)
    • 摆放顺序
    • 盒子宽度和高度
    • 水平和垂直方向的对齐
    • 是否允许折行

image.png

主轴对齐

image.png

纵轴对齐

image.png

Flexibility

  • 可以设置子项的弹性:当容器有剩余空间时,会伸展;容器空间不够时,会收缩。
  • flex-grow有剩余空间时的伸展能力

image.png

  • flex-shrink容器空间不够时收缩的能力
  • flex-basis没有伸展或收缩时的基础长度

image.png

image.png

Grid布局(二维布局)

image.png

image.png

通过grid line 网格线划分

如下图,使用1133划分黄色区域:grid-area:1/1/3/3;

image.png

举例:

image.png

浮动float

文字环绕效果 文字排版时绕开图片

image.png

position属性

image.png

position:relative

  • 在常规流里面布局
  • 相对于自己本应该在的位置进行偏移
  • 使用top,left,bottom,right设置偏移长度
  • 流内其他元素当它没有偏移一样布局

position:absolute

  • 脱离常规流
  • 相对于最近的非static祖先定位
  • 不会对流内元素布局产生影响

position:fixed

  • 相对于窗口进行定位

规范使用,保持好奇,持续学习