1. 什么是BFC?
BFC就是Block Formatting Context(格式化上下文),具有BFC特征的元素可以看做独立容器,容器里面的元素不会影响到外面的元素,相当于一个独立块区域。
触发条件有:
- body 根元素
- 浮动元素 float除了none值外
- 绝对定位元素:position (absolute、fixed)
- display 为inline-block、table-cells、flex
- overflow 除了visible以外的值(hidden、auto、scroll)
可以解决
- 同一个 BFC 下外边距会发生折叠
- BFC 可以包含浮动的元素(清除浮动)
- BFC 可以阻止元素被浮动元素覆盖,两列布局(float + overflow:hidden)
参考:
可以详细参考:zhuanlan.zhihu.com/p/25321647
2. 什么是盒子模型?
盒子模型有两种:W3C标准盒子模型和IE盒子模型,标准盒子模型(box-sizing:content-box),内容宽高是内容的大小,IE盒子模型(box-sizing:border-box),内容宽高为:内容大小+padding+border
参考 juejin.cn/post/684490…
3.如何实现左侧宽度固定,右侧宽度自适应的布局
- float + margin: (float:left;width:10px) + (margin-left:10px)
- calc:(float:left;width:10px) + (float:right;width:calc(100% - 10px))
- float + overflow:(float:left) + (overflow:hidden)
- flex: father{difplay:flex} + float:left + flex:1
4.跨域的方法
- jsonp:利用img、script、iframe没有同源要求的标签,所以它只支持get,并且要服务器支持,通过url+callback=func返回值,记得处理XSS攻击
- CORS:向服务端发出XMLHttpRequest请求,也需要服务器支持,Access-Control-Allow-Origin 浏览器端设置请求源,服务端设置允许请求源,vue的axios封装了CORS
- proxy:将指定字符串的请求,发送到目标服务器
devServer:{
'/api':{
target: "http://127.0.0.1:8091", // 这里一定要记得添加http
changeOrigin: true // 这里设置允许跨域
}
}
- 除了前面提到的跨域方案,你还可以使用nginx反向代理,它和proxy十分类似,都是访问中间层,由中间层去访问目标服务器 另外还有很多讨巧的方法进行跨域,比如你在页面中使用iframe标签,使用哈希location.hash的方式,进行跨域并且传递数据;也可以使用window.name或者H5的postMessage接口
参考:juejin.cn/post/684490…
5.HTTP1.1和HTTP2的区别
相对于HTTP1.0,HTTP1.1的优化:
- 缓存处理:多了Entity tag,If-Unmodified-Since, If-Match, If-None-Match等缓存信息(HTTTP1.0 If-Modified-Since,Expires)
- 带宽优化及网络连接的使用
- 错误通知的管理
- Host头处理
- 长连接: HTTP1.1中默认开启Connection: keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。
相对于HTTP1.1,HTTP2的优化:
- HTTP2支持二进制传送(实现方便且健壮),HTTP1.x是字符串传送
- HTTP2支持多路复用
- HTTP2采用HPACK压缩算法压缩头部,减小了传输的体积
- HTTP2支持服务端推送
参考:juejin.cn/post/684490…
待续未完。。。