左滑删除 或者 置顶之类的功能我们经常要实现,类似于微信的删除聊天框的结构 我就不贴图了
1-如何在uniapp中实现左滑删除
我使用的是uni-ui中的swiperAction 不得不说 性能还是不错的。大家想自己手动封装这个框架也是可以的,可以下载下来源码看看人家的实现思路,在h5和小程序上主要就是使用touchstart和touchend来监控的
插件地址:uni-swipe-action 滑动操作 - DCloud 插件市场
文档地址:action文档
代码参考:这里演示的是最常用的 可以去官网看看其他内容
<uni-swipe-action>
//right-options 右滑出现的内容。left-options:左滑出现的内容
<uni-swipe-action-item :right-options="options" :left-options="options" @click="onClick" @change="change">
<view>这里是未滑动之前显示的内容</view>
</uni-swipe-action-item>
</uni-swipe-action>
export default {
data(){
return {
options:[
{
text: '取消',
style: {
backgroundColor: '#007aff'
}
}, {
text: '确认',
style: {
backgroundColor: '#dd524d'
}
}
]
}
},
methods:{
onClick(e){
//点击选项按钮时触发事件
//e = {content,index} ,content(点击内容)、index(下标)、position (位置信息)
},
swipeChange(e){
//组件打开或关闭时触发
// left:左侧 ,right:右侧,none:关闭
}
}
}
效果如下
优点:兼容性好跨全端、顺滑、轻量
缺点:只能够设置文字版本、还有比如动画没有回弹之类的
2-如何改造swiper-action 让他能够支持图片
1、首先找到uni-modules下面的swiper-action
大家可以通过搜索right或者left来定义到自己想要修改的部分。因为对于微信小程序和h5 他是使用wxs来实现的,app nvue端使用的是 bindingx 而支持的其他平台使用的是 js
(因为我这里只有小程序和h5的需求因此我只修改了这一部分,大家有其他需求可以按需修改)
通过阅读他的源码不难找出 他的item中只支持文字版本,所以我们只需要添加image标签就可以了,添加代码如下:
首先添加了image标签,并且设置了动态传入的属性,
isImage:代表是否是传入图片 如果是图片则不显示文字部分(当然如果大家需要文字图片同时出现的就可以不添加这个属性)
src:传入图片的地址,这里建议最好使用网络地址,本地地址图片打包的时候容易出现位置错乱找不到图片的问题
imgWidth和imgHeight:就是图片的宽高
<image class="uni-swipe_img" v-if="item.isImage" :src="item.src" :style="{
width:item.style.imgWidth,
height:item.style.imgHeight
}" />
<text v-else class="uni-swipe_button-text"
:style="{color: item.style && item.style.color ? item.style.color : '#FFFFFF',}">{{ item.text }}</text>
做完这一步,option传入内容为
options: [{
isImage: true,
src: './delete.png',//这里只是为了演示,建议使用网络图片
style: {
backgroundColor: '#E02E00',
imgWidth: '64rpx',
imgHeight: '72rpx'
}
}]
}
效果:
大家都要善于使用并且改造轮子哦~加油!
版权归原作者 鱼子酱酱酱 所有, 如有侵权,请联系我们删除。