<template>
<div>
<button-new>
<template v-slot:default="slotProps">
<div>我是第一种作用域插槽-------{{slotProps}}</div>
</template>
<template #header="headerProps">我是命名插槽 {{headerProps}}</template>
</button-new>
<div class="node" ref="node">
大家好呀
<div>wewe</div>
传&输
<div>大家伙
<div>12</div>
</div>
</div>
<div class="lazy-load" v-scroll="scrollFun" ref="list">
<div class="scroll-container" ref="container">
<div class="infinite-list-phantom" :style="{height:listHeight+'px'}"></div>
<div class="container-list" :style="{ transform: getTransform }">
<div v-for="(item,index) in visibleData" :key="index" class="item">
<h2>{{item}}</h2>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import buttonNew from '../components/button.vue'
export default {
data(){
return {
name:'我是数据',
name2:'我是数据2',
listData:[],
start:0,
end:0,
totalpage:0,
oldTop:0,
curTotal: 20,
startOffset:0,
itemSize:30
}
},
created(){
this.listData = Array(1000).fill(0).map((item,index)=>index+1)
},
mounted(){
this.scrollFun()
},
computed:{
listHeight(){
// 当前总的列表高度
return this.listData.length*this.itemSize
},
//相对向上偏移的数量
getTransform(){
return `translate3d(0,${this.startOffset}px,0)`
},
//获取真实显示列表数据
visibleData(){
return this.listData.slice(this.start, Math.min(this.end,this.listData.length));
}
},
methods:{
scrollFun(el){
//当前滚动位置
let scrollTop = this.$refs.list.scrollTop;
//此时的开始索引
this.start = Math.floor(scrollTop / this.itemSize);
//此时的结束索引
this.end = this.start + 20;
console.log(scrollTop % this.itemSize)
//此时的偏移量
this.startOffset = scrollTop - 10;
}
},
components:{
buttonNew
},
directives:{
scroll:{
bind(el,binding){
console.log(binding)
el.addEventListener('scroll',()=>{
binding.value(el)
})
}
}
}
}
</script>
<style lang="less">
// https://cloud.tencent.com/developer/article/1533206
.lazy-load {
position: relative;
width: 400px;
height:600px;
overflow: auto;
margin: auto;
border:1px solid rgb(136, 44, 44);
.item {
height:30px;
}
.container-list {
position:absolute;
top:0;
}
}
</style>
长列表懒加载
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 最近接到一个需求,实现起来很简单,但是考虑到性能问题,需要花一些技巧。 页面性能优化,分别应用到:事件委托、动态数...
- 需求:h5页面非常长,如果一次性全部渲染,用户分分钟就关闭页面了。所以打算考虑动态打包组件,另外还需要考虑用户刷新...