1、visibility :hidden和display:none的区别
- 是否是继承属性:display不是继承属性,而visibility是继承属性,后代元素的visibility属性若存在则不会继承,若不存在则继承父元素visibility的值,意味着:父元素的visibility为hidden但是子元素的visibility为visible则子元素依旧可见,子元素visibility不存在则子元素不可见。而元素的display属性设为none其后整棵子树都不可见。
- 是否占据空间:使用display:none,在文档渲染时,该元素如同不存在(但依然存在文档对象模型树中);而使用visibility :hidden,其占的空间会被空白占位。即一个(display:none)不会在渲染树中出现,一个(visibility :hidden)会。
- 页面相关属性改值后是否重新渲染:visibility :hidden不渲染;display:none渲染。
总结:
display 不继承 不占空间
vis 后代继承 占据空间 不会重新渲染
2、在前提:var arr =[1,3,2]下,下面哪个操作会返回一个数组,并且不是arr?
-
arr.push(3)
-
arr.reverse()
-
[].concat.call(arr,[])
-
[].sort.call(arr)
concat返回的是新的对象,这里考的点是浅拷贝和深度拷贝,concat和slice常用来做深度拷贝。
C会选择被拷贝的一个副本~
3、一个景点的题:
在浏览器中输入URL到整个页面显示在用户面前时这个过程中到底发生了什么。见 https://segmentfault.com/a/1190000006879700
总体来说分为以下几个过程:
-
DNS解析
-
TCP连接
-
发送HTTP请求
-
服务器处理请求并返回HTTP报文
-
浏览器解析渲染页面
-
连接结束