CSS知识总结

125 阅读1分钟

浏览器渲染过程

步骤

  • 根据HTML构建HTML树(DOM)
  • 根据CSS构建CSS树(CSSOM)
  • 将两棵树合并成一棵渲染树(render tree)
  • Layout布局(文档流、盒模型、计算大小和位置)
  • Paint绘制(把边框颜色、文字颜色、阴影等画出来)
  • Composite合成(根据层叠关系展示画面)

三种更新方式

  1. 全部更新(JS/CSS > 样式 > 布局 > 绘制 > 合成),比如div.remove()会触发当前消失,其他元素relayout
  2. 跳过layout:改变背景颜色, 直接repaint+composite
  3. 跳过layout和paint:改变transition, 只需composite

CSS动画的两种做法

一. TRANSITION过渡

  1. 作用:补充中间帧

  2. 语法:

  • transition:属性名 | 时长 | 过渡方式 | 延迟
  • 可以用all代表所有属性
  • 过渡方式:linear | ease | ease-in | ease-out | ease-in-out | cubic-bezier | step-start | step-end | steps

js.jirengu.com/vazil/1/edi…

注意: 不是所有属性都能过渡, display: none =>/<= block没办法过渡。一般改成 visibility: hidden =>/<= visible。但是background背景和opacity透明度能过渡。

二. ANIMATION

  1. 语法:时长 | 过渡方式 | 延迟 | 次数 | 方向 | 填充模式 | 是否暂停 | 动画名
  • 时长:1s / 1000ms
  • 过渡方式:跟transition取值相同
  • 次数:3 / 2.4 / infinite
  • 方向:reverse | alternate | alternate-reverse
  • 填充模式:none | forwards | backwards | both
  • 是否暂停: paused | running
  1. keyframes关键帧两种写法:

第一种:

@keyframes slidein {
    from {
        transform:translateX(0%);
    }
    
    to {
        transform:transateX(100%);
    }
}
@keyframes identifier {
    0% { top: 0; left: 0; }
    30% { top: 50px; }
    68%, 72% { left: 50px; }
    100% { top: 100px; left: 100px; }
}

js.jirengu.com/toxaq/1/edi…

注意: 以上所有属性都有对应的单独属性