CSS 知识总结

浏览器如何渲染页面

浏览器解析

1、浏览器通过请求的 URL 进行域名解析,向服务器发起请求,接收文件(HTML、CSS、JS、Images等等)。

2、HTML 文件加载后,开始构建 DOM Tree

3、CSS 样式文件加载后,开始解析和构建 CSS Rule Tree

4、Javascript 脚本文件加载后, 通过 DOM API 和 CSSOM API 来操作 DOM Tree 和 CSS Rule Tree

浏览器渲染

1、浏览器引擎通过 DOM Tree 和 CSS Rule Tree 构建 Rendering Tree

2、Rendering Tree 并不与 DOM Tree 对应,比如像 标签内容或带有 display: none; 的元素节点并不包括在 Rendering Tree 中 。

3、通过 CSS Rule Tree 匹配 DOM Tree 进行定位坐标和大小,是否换行,以及 position、overflow、z-index 等等属性,这个过程称为 Flow 或 Layout 。

4、最终通过调用Native GUI 的 API 绘制网页画面的过程称为 Paint 。

Webpage Rendering

当用户在浏览网页时进行交互或通过 js 脚本改变页面结构时,以上的部分操作有可能重复运行,此过程称为 Repaint 或 Reflow。

Repaint

当元素改变的时候,将不会影响元素在页面当中的位置(比如 background-color, border-color, visibility),浏览器仅仅会应用新的样式重绘此元素,此过程称为 Repaint。

Reflow

当元素改变的时候,将会影响文档内容或结构,或元素位置,此过程称为 Reflow。( HTML 使用的是 flow based layout ,也就是流式布局,所以,如果某元件的几何尺寸发生了变化,需要重新布局,也就叫 Reflow。)

Reflow 的成本比 Repaint 的成本高得多的多。一个结点的 Reflow 很有可能导致子结点,甚至父点以及同级结点的 Reflow 。在一些高性能的电脑上也许还没什么,但是如果 Reflow 发生在手机上,那么这个过程是延慢加载和耗电的。----浏览器的渲染原理简介

以下行为将有可能产生 Reflow

增加、删除、或改变 DOM 节点

增加、删除 ‘class’ 属性值

元素尺寸改变

文本内容改变

浏览器窗口改变大小或拖动

动画效果进行计算和改变 CSS 属性值

伪类激活(:hover)



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

transition 过度动画

作用

补充中间帧

语法

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

transition:left 200ms linear。

还可以用逗号分隔两个不同属性:

transition:left 200ms,top 300ms。

也可以用all来代表所有属性:

transition:all 1s;

过渡方式:

linear | ease | ease-in | ease-out | ease-in-out | cubic-bezier | step-start | step-end | steps

注意:

并不是所有属性都可以过渡

display:none=>block 就不能过渡,


如何知道哪些浏览器支持css的特性及资料查阅

使用caniuse.com,来查询某一个浏览器,对css特性的支持情况。

Google搜索关键词时后面加上MDN

CSS tricks

张鑫旭的博客


animation

语法

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

时长:1S或者1000ms

过渡方式:同transition取值相同,如:linear

次数:1或者2.5或者infinite

方向:reverse|alternate|alternate-reverse

填充模式:none|forwards|backwards|both

是否暂停:paused|running

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


要学好CSS,就是要不断的练习,不要去死记硬背,用得多了,自然就会记得住各种属性和用法。

你可能感兴趣的:(CSS 知识总结)