前端的列表中遇到的滚动白屏问题

问题描述:

你是不是有遇到过列表页面滚动的时候页面白屏的问题?


原因分析:

如果你使用的是MVC模式,由服务端渲染页面,那应该不会存在该类问题,如果你是跑单页面应用,前后端分离,由浏览器端渲染,那快速滚动的时候你就会看到白屏现象,样式越复杂,白屏效果越明显,根本原因是因为浏览器在渲染树的时候,是

构建dom树=》构建render树=》布局render树=》渲染render树

1、你可以简单的这样理解,服务器解析html的时候,就像画画一样,首先他把标签转换为内容树中的dom节点,这步就类似于画画中的线稿,就是初稿;
2、然后初稿画完了,得上色吧?上色之前得准备好颜料吧?这时候就需要拿另一张纸,将需要的颜料准备好,这步就是构建render树,它需要把相关的css样式以正确的顺序显示在浏览器上;
3、这会儿,颜料也准备好了,那就开始将颜料按照你的线稿的着色区域开始进行涂抹,也就是上色。这步就是布局render树,它将你的css样式精确的落在dom树的对应坐标上;
4、最后,就是将两张画(线稿和色稿)重叠在一起,就是一幅有色彩的幅画了,这步就是绘制render树了。
值得注意的是,这个过程是逐步完成的,为了更好的用户体验,渲染引擎将会尽可能早的将内容呈现到屏幕上,并不会等到所有的html都解析完成之后再去构建和布局render树。它是解析完一部分内容就显示一部分内容,同时,可能还在通过网络下载其余内容。
所以,个人认为问题就出现在这一步上,因为你在列表中上下滚动内容的时候,浏览器是在不断的重绘和重排,这时候就导致了列表里的内容都要被重新绘制一遍(因为列表里的内容的位置已经变了),所以这不断重绘重排的时间过程,就是你看到的空白屏的过程。


解决方案:

解决方式的话有几种,限制滚动条的滚动速度,或者使用虚拟列表(只能轻微减缓),其他的方式还在找寻的过程中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 白屏时间是指用户在打开网页后,直到看到页面内容之间的时间间隔。要减少白屏时间,可以采用以下方法:1.减少图像文件的大小;2.使用 CDN 加速;3.优化 JavaScript 和 CSS 代码;4.使用浏览器缓存;5.对网页进行懒加载等。 ### 回答2: 前端性能优化是指通过一系列的调整和优化,提高网页的加载速度和响应速度,提升用户体验。其减少白屏时间是一项重要的优化目标。 白屏时间是指页面打开后用户看到内容的时间间隔。通常情况下,用户打开页面后,由于网络请求、资源加载等原因,会有一段时间页面处于空白状态,这段时间即为白屏时间。减少白屏时间可以提升用户的感知速度,使用户更快地看到页面内容。 减少白屏时间的方法有以下几种: 1. 减少页面的加载时间:通过优化页面结构、合理使用CSS和JavaScript等前端技术,减少页面的大小和请求个数,从而加快页面加载速度。 2. 预加载关键资源:提前加载页面需要的关键资源,比如CSS、JavaScript、图片等,可以通过使用预加载的方式,使这些资源在页面打开前就开始加载,从而减少白屏时间。 3. 使用缓存:利用浏览器的缓存机制,将页面需要的静态资源缓存到本地,下次访问时可以直接从缓存获取,减少网络请求的时间。 4. 懒加载:仅加载当前可见区域内的内容,延迟加载其他内容,在用户滚动页面时再加载。这样可以减少页面首次加载的资源量,提高页面加载速度。 5. 提前获取数据:如果页面需要从后端获取数据,可以在页面加载时就开始请求数据,然后在渲染页面时直接使用已获取的数据,减少用户等待数据响应的时间,缩短白屏时间。 综上所述,通过适当的优化措施,可以有效减少白屏时间,提升前端性能,提高用户体验。 ### 回答3: 前端性能优化是指通过各种方法和技术来提高网页加载和交互的速度和效率,其之一就是减少白屏时间。 白屏时间是指用户在打开网页时,页面内容出现之前的等待时间。在这个过程,用户会感觉到页面没有任何反应,导致用户体验下降。 为了减少白屏时间,我们可以采取以下几种策略: 1. 压缩和合并资源文件:将CSS和JavaScript文件进行压缩和合并,减少HTTP请求和传输时间,从而提高加载速度。 2. 使用浏览器缓存:合理设置缓存策略,使相同的资源可以从缓存获取,避免重复请求,减少加载时间。 3. 异步加载资源:将非关键资源(如广告、统计代码等)的加载放在页面内容加载完毕后进行,以保证页面内容的快速呈现。 4. 延迟加载图片:将页面上的图片设置为延迟加载,只有在用户滚动到可见范围时才进行加载,避免一次性请求过多的图片,提高加载速度。 5. 使用CDN加速:将静态资源部署到全球各地的CDN节点上,利用就近访问的优势,减少网络延迟,加快资源加载速度。 6. 懒加载:只加载当前可见区域的内容,将其他内容延迟加载,延迟加载可以提高页面的加载速度,减少白屏时间。 7. 优化首屏渲染:将关键资源和内容放在页面的最前面,提高首屏的加载速度,使用户能够更快地看到页面内容。 通过以上的优化策略,可以有效地减少白屏时间,提高网页的加载速度和用户的体验。但需要注意的是,在优化的过程,要综合考虑兼容性、用户体验等因素,避免影响网页的功能和可用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值