深入CSS|青训营笔记

45 阅读2分钟

这是我参与【第四届青训营】笔记创作活动的第三天。

深入CSS

继承
某些属性会自动继承其父元素的计算值,除非显式指定一个值。

布局(Layout)

  • 确定内容的大小和位置的算法
  • 依据元素、容器、兄弟节点和内容等信息来计算

height

  • 指定content box高度
  • 取值为长度百分数auto
  • auto取值由内容计算得来
  • 百分数相对于容器的content box高度
  • 容器有指定高度时,百分数才生效

border

  • 三种属性
    • border-width
    • border-style
    • border-color
  • 四个方向
    • border-top
    • border-right
    • border-bottom
    • border-left

margin

  • 指定元素四个方向的外边距
  • 取值可以是长度、百分数、auto(水平居中)
  • 百分数相对于容器宽度

display属性

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

常规流 Normal Flow

  • 根元素、浮动和绝对定位的元素会脱离常规流
  • 其他元素都在常规流之内(in-flow)
  • 常规流中的盒子,在某种排版上下文中参与布局

行级排版上下文

  • Inline Formatting Context(IFC)
  • 只包含行级盒子的容器会创建一个IFC
  • IFC内的排版规则
    • 盒子在一行内水平摆放
    • 一行放不下时,换行显示
    • text-align决定一行内盒子的水平对齐
    • vertical-align决定一个盒子在行内的垂直对齐
    • 避开浮动(float)元素

BFC内的排版规则

  • 盒子从上到下摆放
  • 垂直margin合并
  • BFC内盒子的margin不会于外面的合并
  • BFC不会和浮动元素重叠

Flex Box是什么?

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

positon属性

  • static-默认值,非定位元素
  • relative-相对自身原本位置便宜,不脱离文档流
  • absolute-绝对定位,相对非static祖先元素定位
  • fixed-相对于视口绝对定位

position:relative

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

position:absolute

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

学习CSS的几点建议

  • 充分利用MDNW3C CSS规范
  • 保持好奇心,善用游览器的开发者工具
  • 持续学习,CSS新特性还在不断出现