一:flex:1由哪些属性组成的
第一个参数表示: flex-grow ( 狗肉 ) 定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大
第二个参数表示: flex-shrink ( 水客 ) 定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小
第三个参数表示: flex-basis ( 背色丝 ) 给上面两个属性分配多余空间之前, 计算项目是否有多余空间, 默认值为 auto, 即项目本身的大小
auto 为表示项目本身的大小, 如果设置为 auto, 那么这三个盒子就会按照自己内容的多少来等比例的放大和缩小, 所以出现了上图中三个盒子不一样大的情况
那我们如果随便设置一个其他带有长度单位的数字呢, 那么他就不会按项目本身来计算, 所以它不关心内容, 只是把空间等比收缩和放大
二:不定宽高的盒子水平居中,有几种办法
1. display: flex;
justify-content: center;
align-items: center;
2. 父元素 position: relative;
自身元素 position: absolute;
top: 50%;
left: 50%;
margin-left: 负的自身元素宽度一半;
margin-top: 负的自身元素高度一半;
三: 标准盒模型和怪异盒模型的区别****
css盒模型本质是一个盒子,它由内外边距、边框、填充和实际内容组成。
标准盒与怪异盒的区别在于他们的总宽度的计算公式不一样。标准模式下总宽度=width+margin(左右)+padding(左右)border(左右);怪异模式下总宽度=width+margin(左右)(就是说width已经包含了padding和border值)。当设置为box-sizing:content-box时,将采用标准模式解析计算,也是默认模式;当设置为box-sizing:border-box时,将采用怪异模式解析计算
四:重绘(repaint)和回流(reflow)****
回流:当操作dom改变元素位置大小就会发生回流,
重绘:当元素位置大小不发生改变,只是进行比如换个颜色这种的会发生重绘
回流一定会引发重绘,而重绘不一定会引发回流
五:操作dom为什么会不好?
因为js引擎和渲染引擎是独立实现的,当用js去操作dom,本质上是js引擎和渲染引擎之间进行了“跨界交流”。 而跨界的次数多了,就会产生明显的性能问题。
如何优化?
1.减少dom操作,将多次dom操作合并成单次进行操作,
2.使用文档片段
六: 手写nuw
function shouNew(fn,...args){
// 1创建一个新对象
let obj = {}
// 2新创建的对象原型指向构造函数原型
obj. __ proto__ = fn.prototype
// 3替换构造函数中的this为创建的新对象,并执行构造函数中的代码
fn.apply(obj,args)
// 4返回创建的对象
return obj
}
七:闭包以及闭包应用场景
完成
八:new做了那几件事情
完成
九:set和map区别
Set只有值,没有键名,map是键值对结构类似对象
Set会自动进行去重,map不允许键名重复并且是不能修改的,但是值可以更改
十:垃圾回收机制
十一:状态码304
十二:父子组件通信有多少种方式