滑动页面时,元素闪现、隐藏、空白、消失问题分析与定位

1,065 阅读1分钟

关键词:

页面滑动、滚动,元素闪现、消失、隐藏、空白,css样式position: relative;,z-index

发现问题:

滑动页面时,页面元素闪现、隐藏、空白、消失

元素消失问题.gif

定位:

通过safari浏览器开发者链接手机页面,定位发现被隐藏的元素中都有position: relative; css样式

将该样式取消后发现页面恢复正常

查找问题根源:

根据该属性查找定义:developer.mozilla.org/zh-CN/docs/…

发现其中有这么一段描述:

relative

该关键字下,元素先放置在未添加定位时的位置,再在不改变页面布局的前提下调整元素位置(因此会在此元素未添加定位时所在位置留下空白)。position:relative 对 table-*-group, table-row, table-column, table-cell, table-caption 元素无效。

可知在某些页面布局调整情况下,元素所在位置会留下空白。

解决过程与方案:

1、删除relative会导致它的position:absolute; 子元素定位出现问题,所以需要寻找其他方式

2、我们知道relative定位和z-index的关系,即relative属性会使该元素创建一个子空间,也就是层级上下文,所以怀疑与z-index有关

3、通过设置z-index为1发现,页面恢复正常

4、通过设置z-index为0、-1,发现问题出现,所以推断在设置了position: relative;样式的情况下,元素在页面布局发生变化时,或者说定义中”元素先放置在未添加定位时的位置“的时机,元素的z-index可能处于0或-1的状态,验证一下

截图.png

发现zindex是空,和推断不一致。。(只是个探索~~ , 解决方案请看3)