问题复现:
代码结构如下,最外层container设置了纵向滚动条,但是当list的数据较多,渲染内容超过一屏时,加载数据完成后,会页面闪烁,然后过段时间再正常显示。
<template> <div class="container" align="center"> <div v-for="(item,i) in list" class="list-item d-flex" align="left"> <div>xxxx</div> <div>xxxxxxx</div> </div> </div> </template> <style scoped> .container{ padding: 0; display: flex; flex-direction: column; align-items: center; overflow-y: scroll; .list-item{ width: 80%; } } </style>
经过研究,是最外层滚动条导致,解决方案如下:
取消最外层滚动条,在container下再包裹一层,在这一层设置滚动条,既满足滚动需要,又不会导致闪烁。
<template> <div class="container" align="center"> <div class="containerDiv"> <div v-for="(item,i) in list" class="list-item d-flex" align="left"> <div>xxxx</div> <div>xxxxxxx</div> </div> </div> </div> </template> <style scoped> .container{ padding: 0; display: flex; flex-direction: column; align-items: center; .containerDiv{ height: calc(100vh - 3.5vw) !important; overflow-y: scroll } .list-item{ width: 80%; } } </style>
发表评论