CSS面经

105 阅读1分钟

1.css加载会造成阻塞吗

结论:
1.  css加载不会阻塞DOM树的解析
2.  css加载会阻塞DOM树的渲染
3.  css加载会阻塞后面js语句的执行
原因:
1.  DOM解析和CSS解析是两个并行的进程,所以这也解释了为什么CSS加载不会阻塞DOM的解析。
2.  然而,由于Render Tree是依赖于DOM Tree和CSSOM Tree的,所以他必须等待到CSSOM Tree构建完成,也就是CSS资源
加载完成(或者CSS资源加载失败)后,才能开始渲染。因此,CSS加载是会阻塞Dom的渲染的。
3.  由于js可能会操作之前的Dom节点和css样式,因此浏览器会维持html中css和js的顺序。因此,样式表会在后面的js
执行前先加载执行完毕。所以css会阻塞后面js的执行。

2.彻底搞懂white-space

white-space
这个属性是用来控制空白字符的显示的**,同时还能控制是否自动换行。它有五个值:`normal | nowrap |
pre | pre-wrap | pre-line`。因为默认是`normal`,所以我们主要研究下其它四种值时的展现情况。

white-space:normal     /* 与本来的无差异 */
white-space:nowrap     /* 永不换行 */
white-space:pre        /* 空格和换行符全都被保留了下来!不过自动换行还是没了 */
white-space:pre-wrap   /* 保留空格和换行符,且可以自动换行 `preserve`+`wrap` */
white-space:pre-line   /* 空格被合并了,但是换行符可以发挥作用 */