《CSS知识总结》

234 阅读2分钟

浏览器的渲染原理

步骤

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

如何更新样式

一般我们用JS来更新样式

  • 比如:div.style.background='red'
  • div.style.display='name'
  • div.classList.add('red')
  • div.remove()直接删掉节点
css(每个属性触发什么流程 需要自己一个一个尝试 Important网站(csstriggers.com)

JS的三种更新样式的方式

  • (全走一遍 div.remove 会触发当前消失,其他元素relatyout) Javascript > style > layout > paint > Composite (JS/Css > 样式 > 布局 > 绘制 > 合成 )
  • (跳过layout 改变背景颜色.直接repaint+Composite) Javascript > style > paint > Composite (JS/Css > 样式 > 绘制 > 合成 )
  • (跳过layout+paint 改变transform,只需COmposite ) Javascript > style > Composite (JS/Css > 样式 > 合成 )注意必须全屏查看效果,在iframe里看有问题

Css动画的两种做法(transition和animation)

transition(过渡)

作用:补齐中间帧

语法

  • transition:属性名 时长 过渡方式 延迟
  • transition:left 200ms linear
  • 可以用逗号分隔两个不同属性
  • transition:left 200ms, top 400ms
  • 可以用all代表所有属性
  • transition:all 200ms
  • 过渡方式有:linear(匀速的.线性的)/ ease(环动的) /ease-in (先慢再快) / ease-in-out / cubic-bezier /step-start /step-end /steps.(具体含义要靠数学知识)

注意:并不是所有属性都需要过渡

  • display:none=> block 没法过渡
  • 一般改成risibility:hidden=>visible (没有为什么)
  • background颜色可以过渡
  • opacity透明度可以过渡吗? (并不建议 我虽然看不见还是占据位置)
  • 过度必须要有起始 一般只有一次动画或者两次 比如:hover和非hover状态的过渡。

animation

作用

  • 时长:1s或者1000ms

  • 过渡方式:跟transition取值一样.如linear

  • 次数:3或2.4或者infinite(无限次)

  • 方向:rererse/alterate/alternate-vererse

  • 填充模式:none/forwords/backuards/both

  • 是否暂停:psused/running

  • 以上所有属性都有应对的单独属性