美文网首页
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、在地址

    一、什么是BFC?什么时候触发BFC? 先说说什么是BFC? 块级格式化上下文,W3C CSS2.1 规范中的一个...

  • Promise封装_AJAX

    Promise封装_AJAX 调用格式

  • 第六天

    1、手写promise封装ajax请求 2、在地址栏输入网址敲回车发生了什么? 1.输入url地址后,首先...

  • ES6异步请求

    Promise //Promise其实就是ajax的一个封装方式,简化ajax复杂度//Promise-all适合...

  • 封装 jQuery.ajax

    封装一个 jQuery.ajax 升级jQuery.ajax 满足 Promise 规则

  • Ajax

    标签: Ajax 正文 一、实现一个原生Ajax 二、Ajax状态 三、将原生的 ajax 封装成 promise

  • ES6 promise版的Jsonp封装

    前面一篇整理Promise的Ajax的封装,这次做一个JSONP的封装,现在前端工程化的普及,基本上都是前后端分离...

  • web前端面试题总结

    web前端试题集 WEB前端面试题

  • fetch

    Fetct fetch:系统基于promise封装的ajax方法 fatch().then().then() 缺点...

  • 异步编程笔记

    环境:chrome 80演习:用Promise async/await封装$.ajax Promise 第一次请求...

网友评论

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

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