美文网首页
web前端面试题@四(BFC、promise封装AJAX、在地址

web前端面试题@四(BFC、promise封装AJAX、在地址

作者: 王芃皓 | 来源:发表于2019-11-18 23:40 被阅读0次

    一、什么是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.至此,客户端显示自己请求,即服务端返回的东西

    相关文章

      网友评论

          本文标题:web前端面试题@四(BFC、promise封装AJAX、在地址

          本文链接:https://www.haomeiwen.com/subject/fnsiictx.html