CSS 知识总结

226 阅读1分钟

浏览器渲染过程

参考Google写的文章

步骤

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

image-20210829150849-9qrtk76.png

transition

补充中间帧

transition: 属性名 时长 过渡方式 延迟

  • e.g. transition: width 1s linear 1s;
  • all可以指代所有属性
  • 过渡方式 linear(线性匀速),ease(先快后慢),ease-in(先慢再快),ease-in-out(慢快慢)
  • 时长也可以写ms
  • 不是所有属性都能过渡 display:none到block无法过渡
  • 让东西看不见可以用opacity:1到opacity:0过渡,只是看不见,仍在那里
  • 让东西看不见更推荐用visibility:visible到visibility:hidden过渡,只是看不见,仍在那里
  • display visibility区别?
  • background可以过渡

过渡需要有起始 一般只有一次或两次动画,比如hover和非hover的过渡 如果还有中间点怎么办?

  • 使用两次transform .a === transform ===>.b .b === transform ===>.c 用setTimeout或者监听transitionend事件判断是否到达了中间点

  • 使用animation 标准写法

    • from to
    • 百分数声明关键帧
    @keyframes xxx{
      0% {
        transform: none;
      }
      100% {
        transform: translateX(20px);
      }
    }
    #demo{
      animation: xxx 5s;
    }
    

    缩写语法 animation: 时长 过渡方式 延迟 次数 方向 填充模式 是否暂停 动画名

    • 时长:1s 1000ms
    • 过渡方式:和transition取值类似
    • 次数:3 infinite
    • 方向:reverse 反向 alternate 正向加反向 alternate-reverse 反向加正向
    • 填充模式:none forwards 到最后不会返回 backwards both
    • 是否暂停:paused running