创造一些空白区域占位
用户触发了一个网络请求,可能需要花一段时间才能结束,最好的做法是创造一些空白区域或者展示loading,避免请求结束后的预料之外的布局偏移。如果用户没有意识到正在加载数据,或者不知道资源是否加载完成,他们在等待的过程中会点击某些元素,这些元素后面可能会移动到了下方,就跟文章开头的图一样。
布局偏移如果发生在用户输入之后的500ms内,会有一个 hadRecentInput 的标记,这样就可以被排除在外。
使用真正的骨架屏
1. 如何处理异步模块
功能:加载category
使用skeleton占位
- 没有数据时
这个nav就往左边移动了,导致了向左偏移,会cls. 看样子需要做个兜底处理。
2. 有数据时,因为有占位,固定了宽度,数据返回时,宽度时一致不会造成cls问题。
结论: 没有处理无数据的问题。我们可以使用其他的用来兜底
如何修复:类目保留,更改交互。
优后效果:
2. 如何设置了宽度没有设置高度
左边之前代码和右边修改的代码
没有设置高度下面会产生cls.
设置了高度的时候
其他扩展
图片等媒体元素占位
在图像、视频等媒体资源元素中始终包含宽度和高度大小属性。或用 CSS 中的 min-height、aspect-ratio 或类似的方式保留所需的空间。
aspect-ratio
可以用来直接指定当前元素的比例。