一、什么是BFC?什么时候触发BFC?
先说说什么是BFC?
块级格式化上下文,W3C CSS2.1 规范中的一个概念。它是页面中的一块渲染区域,并且有一套渲染规则,它决定了其子元素将如何定位,以及和其他元素的关系和相互作用。
具有 BFC 特性的元素可以看作是隔离了的独立容器,容器里面的元素不会在布局上影响到外面的元素,并且 BFC 具有普通容器所没有的一些特性。
通俗一点来讲,可以把 BFC 理解为一个封闭的大箱子,箱子内部的元素无论怎么改变,都不会影响到外部 :)(可以说比较嚣张了)。
再说怎么触发BFC?
只要元素满足下面任一条件即可触发 BFC 特性:
浮动元素:float值除none以外的值
绝对定位元素:position为absolute或fixed
display为inline-block、table-cell、flex、inline-flex、table-caption
overflow除了visible以外的值(hidden、auto、scroll)
body根元素
最后在提一下BFC的渲染规则
1、同一个BFC下垂直方向上相邻的两个box的外边距(margin)会发生重叠 —— 解决办法将发生重叠的盒子放在另外一个BFC容器中,即添加一个父盒子,将该盒子设置为BFC容器
2、 BFC可以包含浮动的元素 —— 解决办法给右侧的盒子设置为BFC容器,添加overflow属性,注意overflow不能为visible
3、计算BFC高度时,浮动元素也参与计算 —— 解决办法给父元素设置为BFC,添加overflow:hidden属性
4、 BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之也如此。
二、用promise封装AJAX

三、在地址栏输入网址敲回车发生了什么?
1.输入url地址后,首先进行DNS解析,将相应的域名解析为IP地址;
2.客户端根据IP地址去寻找相应的服务器;
3.与服务器进行TCP的三次握手;
*所谓三次握手就是客户端在请求与服务器相连接时,彼此共计发送了三次数据包
浏览器向 web 服务器发送一个 HTTP 请求。在通过DNS域名解析后,获取到了服务器的IP地址,在获取到IP地址后,便会开始建立一次连接,这是由TCP协议完成的,主要通过三次握手进行连接:
第一次握手: 建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;
第二次握手: 服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手: 客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

4.客户端找到相应的资源库;
5.根据资源库返回页面信息;
6.浏览器根据自身的执行机制解析页面;(浏览器的执行机制?重绘?重排?......)
如果说响应的内容是HTML文档的话,就需要浏览器进行解析渲染呈现给用户。整个过程涉及两个方面:解析和渲染。在渲染页面之前,需要构建DOM树和CSSOM树。


7.最后服务器将解析信息返回给客户端,进行TCP的四次挥手。

*所谓四次挥手就是客户端与服务端在断开连接时,彼此交互传输了四次数据包
第一次挥手是浏览器发完数据后,发送FIN请求断开连接。
第二次挥手是服务器发送ACK表示同意,如果在这一次服务器也发送FIN请求断开连接似乎也没有不妥,但考虑到服务器可能还有数据要发送,所以服务器发送FIN应该放在第三次挥手中。
这样浏览器需要返回ACK表示同意,也就是第四次挥手。
至此从浏览器地址栏输入URL到页面呈现到你面前的整个过程就分析完了!!!
8.至此,客户端显示自己请求,即服务端返回的东西
网友评论