learning... | 青训营笔记

73 阅读2分钟

1、有哪些定位。(绝对,相对,固定?)
●fixed:相对浏览器窗口固定,即使窗口滚动它也不动,不在文档流中,fixed 元素可与其余元素重叠
●relative:相对于自身原本位置偏移,元素在文档流中仍占据原来的空间
●absolute:相对于最近的父元素定位,不在文档流中
●static:默认值,没有定位,出现在正常的文档流中,忽略任何 top,buttom,left,right 声明
●sticky:元素先按照普通文档流定位,然后相对于该元素在流中的 flow root(BFC)和 containing block(最近的块级祖先元素)定位。一个 sticky 元素会“固定”在离它最近的一个拥有“滚动机制”的祖先上。

2、绝对定位中父元素一定要是相对定位吗?
绝对定位absolute的参照对象是“离它最近的已定位的祖先元素”,这句话里有两个关键,一个是“离它最近的祖先元素”,意思是那个参照元素不一定是父元素,也可以是它的爷爷、爷爷的爷爷等等,如果它的祖先里同时有2个及以上的定位元素,就参照离它最近的一个元素定位。
还有一个是“已定位”,这个定位也不一定非要是相对定位,也可以是绝对定位,为什么一般都是用相对定位呢,因为相对定位的特性是虽然它定位了,就算给了偏移量它离开了原来的地方,但是它原来占的地方也不会让出来的,这样的好处是原来在它周围的其他元素不会因为它的离开而改变位置而使页面乱套,所以用相对定位是非常合适的(如果你另有其他需要,祖先元素绝对定位也不是不可以)

diff算法

1- 如果根或父元素发生了变化,其子元素也被认为是变化的

并将被包括在调和中。

2- 当检查li元素时,diff算法检查所有元素,以匹配任何变化或删除或新元素。

这对性能有影响,这就是为什么在打印列表项时使用键,以使区分

更加容易和快速。