swiper数量达到大约400+时候会出现明显滑动卡顿,渲染慢的问题,达到1000+时候需要几十秒时间,或者可能导致渲染失败。
配置 circular="true" 属性开启衔接滑动,即播放到末尾后重新回到开头。然后固定用于展示的swiper-item只设置3个,当滑动时候去替换展示的数据。这种方法可以展示几千万的数据展示都没问题。
//页面源码
1、swiper-item的key一定要设置,并且用 index 。
2、如果只有一张情况,不想让它来回滚动。可以设置 circular ,但是 circular 无法直接动态设置,我们可以使用 computed 来设置
>
微信小程序怎样实现页面向上滑,动态加载数据的功能
在H5中,当把页面向上滑动时,可以发起ajax请求动态加载数据。在小程序中可以么实现么
目前在文档中,只看到有向下拉实现动态加载数据的组件
可以bindscrolltoupper是滚动到顶部/左边事件,bindscrolltolower滚动到底部/右边事件
利用"onPullDownRefresh"和"onReachBottom"方法
在js文件里直接写"onPullDownRefresh"和"onReachBottom"方法即可;
文档地址:>
组件说明:
可滚动视图区域。
组件用法:
纵向滚动用法
Tip:
使用竖向滚动时,需要给一个固定高度,通过 WXSS 设置 height,否则无法滚动。
当滚动到顶部时会触发bindscrolltoupper事件(具体可留意GIF输出)
当滚动到底部时会触发bindscrolltolower事件(具体可留意GIF输出)
效果图:
wxml
<scroll-view scroll-y="true" style="height: 200px;" bindscrolltoupper="upper" bindscrolltolower="lower" bindscroll="scroll" scroll-into-view="{{toView}}" scroll-top="{{scrollTop}}">
<view id="green" class="scroll-view-item bc_green"></view>
<view id="red" class="scroll-view-item bc_red"></view>
<view id="yellow" class="scroll-view-item bc_yellow"></view>
<view id="blue" class="scroll-view-item bc_blue"></view>
</scroll-view>
<view class="btn-area">
<button size="mini" bindtap="tap">click me to scroll into view </button>
<button size="mini" bindtap="tapMove">click me to scroll</button>
</view>
js
var order = ['red', 'yellow', 'blue', 'green', 'red']
Page({
data: {
toView: 'green',
scrollTop: 100,
scrollLeft: 0
},
//滚动条滚到顶部的时候触发
upper: function(e) {
consolelog(e)
},
//滚动条滚到底部的时候触发
lower: function(e) {
consolelog(e)
},
//滚动条滚动后触发
scroll: function(e) {
consolelog(e)
},
//点击按钮切换到下一个view
tap: function(e) {
for (var i = 0; i < orderlength; ++i) {
if (order[i] === thisdatatoView) {
thissetData({
toView: order[i + 1]
})
break
}
}
},
//通过设置滚动条位置实现画面滚动
tapMove: function(e) {
thissetData({
scrollTop: thisdatascrollTop + 10
})
}
})
css
scroll-view_H{
white-space: nowrap;
}
scroll-view-item{
height: 200px;
}
scroll-view-item_H{
display: inline-block;
width: 100%;
height: 200px;
}
横向滚动用法
Tip:
横向滚动无法使用scroll-into-view属性。
当滚动到最左边时会触发bindscrolltoupper事件(具体可留意GIF输出)
当滚动到最右边时会触发bindscrolltolower事件(具体可留意GIF输出)
效果图:
wxml
<scroll-view class="scroll-view_H" scroll-x="true" style="width: 100%" bindscrolltoupper="upper" bindscrolltolower="lower" bindscroll="scroll" scroll-left="{{scrollLeft}}">
<view id="green" class="scroll-view-item_H bc_green"></view>
<view id="red" class="scroll-view-item_H bc_red"></view>
<view id="yellow" class="scroll-view-item_H bc_yellow"></view>
<view id="blue" class="scroll-view-item_H bc_blue"></view>
</scroll-view>
js
var order = ['red', 'yellow', 'blue', 'green', 'red']
Page({
data: {
toView: 'green',
scrollTop: 100,
scrollLeft: 0
},
//滚动条滚到顶部的时候触发
upper: function(e) {
consolelog(e)
},
//滚动条滚到底部的时候触发
lower: function(e) {
consolelog(e)
},
//滚动条滚动后触发
scroll: function(e) {
consolelog(e)
},
//点击按钮切换到下一个view
tap: function(e) {
for (var i = 0; i < orderlength; ++i) {
if (order[i] === thisdatatoView) {
thissetData({
toView: order[i + 1]
})
break
}
}
},
//通过设置滚动条位置实现画面滚动
tapMove: function(e) {
thissetData({
scrollLeft: thisdatascrollLeft + 10
})
}
})
wxss
scroll-view_H{
white-space: nowrap;
}
scroll-view-item{
height: 200px;
}
scroll-view-item_H{
display: inline-block;
width: 100%;
height: 200px;
}
主要属性:
属性类型默认值描述
scroll-xBooleanfalse允许横向滚动
scroll-yBooleanfalse允许纵向滚动
upper-thresholdNumber50距顶部/左边多远时(单位px),触发 scrolltoupper 事件
lower-thresholdNumber50距底部/右边多远时(单位px),触发 scrolltolower 事件
scroll-topNumber设置竖向滚动条位置
scroll-leftNumber设置横向滚动条位置
scroll-into-viewString值应为某子元素id,则滚动到该元素,元素顶部对齐滚动区域顶部
bindscrolltoupperEventHandle滚动到顶部/左边,会触发 scrolltoupper 事件
bindscrolltolowerEventHandle滚动到底部/右边,会触发 scrolltolower 事件
bindscrollEventHandle滚动时触发,eventdetail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}
需求: 当滚动到某个view的时候将view置顶 当滚动条回到view开始的位置下面时再回到原位置
效果:
实现: 使用 onPageScroll 方法首先检测到滚动的位置 escrollTop 在滚动的同时来获取view与顶部的距离,因为这个view 上面的view 是不固定的可以减少 或者增多所以要时时来检测变化的高度
判断 如果离顶部距离 为0 时 将view置顶 使用动态样式来判断
同时在检测顶部距离为0的时候记录一下高度 然后当滚动高度等于记录的高度的时候再讲view 返回
备注 条条大路通罗马 小弟浅见
以上就是关于uni-app swiper数量过多时卡顿优化方案,微信小程序swiper优化全部的内容,包括:uni-app swiper数量过多时卡顿优化方案,微信小程序swiper优化、微信小程序模态框textarea能滚动的问题、微信小程序怎样实现页面向上滑,动态加载数据的功能等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)