Skip to content

Commit 8994992

Browse files
committed
add gif for _posts/2017-08-15-browser-render-frame.md
1 parent 4870f4d commit 8994992

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

_posts/2017-08-15-browser-render-frame.md

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ JavaScript 在并发编程上一个重要特点是“Run To Completion”。在
5353
执行很多 JS...(20ms)-> 空闲 -> 绘制(32ms)-> ...
5454
```
5555

56+
例如下面的脚本在保持 JavaScript 忙的状态(持续 5s)下每隔 1s 新增一行 DOM 内容。
57+
5658
```html
5759
<div id="message"></div>
5860
<script>
@@ -73,6 +75,10 @@ while (true) {
7375
</script>
7476
```
7577

78+
可以观察到虽然每秒都会写一次 DOM,但在 5s 结束后才会全部渲染出来,明显耗时脚本阻塞了渲染。
79+
80+
![js block render](/assets/img/blog/dom/js-block-render.gif)
81+
7682
# 测量渲染帧间隔
7783

7884
浏览器的渲染间隔其实是很难测量的。即使通过 [clientHeight][client-size] 这样的接口也只能强制进行Layout,是否 Paint 上屏仍未可知。
@@ -119,10 +125,10 @@ nextFrame()
119125
在编写涉及到布局的脚本时,常常会多次读写样式。比如:
120126

121127
```javascript
122-
# 触发一次 Layout
128+
// 触发一次 Layout
123129
var h = div.clientHeight
124130
div.style.height = h + 20
125-
# 再次触发 Layout
131+
// 再次触发 Layout
126132
var w = div.clientWidth
127133
div.style.width = w + 20
128134
```
@@ -131,7 +137,7 @@ div.style.width = w + 20
131137
如果把交错的读写分隔开,就可以减少触发 Layout 的次数:
132138

133139
```javascript
134-
# 触发一次 Layout
140+
// 触发一次 Layout
135141
var h = div.clientHeight
136142
var w = div.clientWidth
137143
div.style.height = h + 20
73.7 KB
Loading

0 commit comments

Comments
 (0)