Normal Flow 即浏览器默认的文档布局方式。
定位就是通过设置 position
属性的值来覆盖默认的布局方式。
静态定位
position: static 默认值 默认的布局方式。
相对定位
position: relative 相对默认的布局位置进行定位。
绝对定位
position: absolute 绝对定位元素脱离正常文档流,相对其定位上下文(Positioning Context)进行定位。
定位上下文 Positioning Context
定位上下文就是值绝对定位元素相对哪个元素定位,默认的定位上下文是 <html>。
假如你想设定某个绝对定位元素的定位上下文,则需要在这个元素的某个祖先元素上设置 position: relative。
当把元素的position设置为absolute后,该元素拥有inline-block类似的特性
屏幕快照 2018-12-05 下午3.15.30.pngz-index
因为显示器是显示的图案是一个二维平面,拥有x轴和y轴来表示位置属性。为了表示三维立体的概念如显示元素的上下层的叠加顺序引入了z-index属性来表示z轴的区别。表示一个元素在叠加顺序上的上下立体关系。
z-index值较大的元素将叠加在z-index值较小的元素之上。对于未指定此属性的定位对象,z-index 值为正数的对象会在其之上,而 z-index 值为负数的对象在其之下。
z-index属性适用于定位元素(position属性值为 relative 或 absolute 或 fixed的对象),用来确定定位元素在垂直于显示屏方向(称为Z轴)上的层叠顺序,也就是说如果元素是没有定位的,对其设置的z-index会是无效的。
相同z-index谁上谁下
1.如果两个元素都没有定位发生位置重合现象或者两个都已定位元素且z-index相同发生位置重合现象,那么按文档流顺序,后面的覆盖前面的。
2.如果两个元素都没有设置z-index,使用默认值,一个定位一个没有定位,那么定位元素覆盖未定位元素
父子关系处理
1.如果父元素z-index有效,那么子元素无论是否设置z-index都和父元素一致,会在父元素上方
2.如果父元素z-index失效(未定位或者使用默认值),那么定位子元素的z-index设置生效
兄弟之间子元素
如果兄弟元素的z-index生效,那么其子元素覆盖关系由父元素决定
谨记
如果用了绝对定位,一般(最好)要给参考点设置position:relative
一般参考点是父元素
网友评论