轮播图放大预览效果的实现
前言
最近小编又惹火上身了,作为一个后端开发的小白,公司居然让我去试水小程序,说实话,如果你学过vue的话,小程序还是很容易上手的,对于小编这种360度都会骚操作的人,简单上岸还是可以的,图片全屏预览,玩过快手,短视频都会时常刷到这么个效果,以及微信朋友圈的朋友们的狗粮图,我们总是猝不及防的放大,废话不多说,操作起来。
一、wx.previewImage接口API
官方介绍:
wx.previewImage(Object object, boolean showmenu),在新页面中全屏预览图片。预览的过程中用户可以进行保存图片、发送给朋友等操作。
代码示例:
wx.previewImage({
current: '', // 当前显示图片的http链接
urls: [] // 需要预览的图片http链接列表
})
current:当前图片的地址(注意:线上地址),urls:图片数组(注意:必须写)
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
二、图片全屏预览
1.效果展示
全屏预览:
2.编码
img.wxml
<view>
<image src="{{imgList[0]}}" bindtap="prclick" data-src="{{imgList[0]}}"></image>
<image src="{{imgList[1]}}" bindtap="prclick" data-src="{{imgList[1]}}"></image>
<image src="{{imgList[2]}}" bindtap="prclick" data-src="{{imgList[2]}}"></image>
</view>
img.js
/**
* 页面的初始数据
*/
data: {
imgList: [
"http://ydfblog.cn/dfs/group1/M00/00/16/rBghtmASfZCACqBwACKYFW6g2Ws043.jpg",
"http://ydfblog.cn/dfs/group1/M00/00/16/rBghtmASfZ-AdRHEACpLMa4xENk303.jpg",
"http://ydfblog.cn/dfs/group1/M00/00/15/rBghtmASfXyAN-QlABGmOyJVT68055.jpg"
]
},
//预览图片,放大预览
prclick(e) {
console.log(e.currentTarget.dataset.src)
let currentUrl = e.currentTarget.dataset.src
wx.previewImage({
current: currentUrl, // 当前显示图片的http链接
urls: this.data.imgList // 需要预览的图片http链接列表
})
},
img.wxss
image{
width: 100% !important;
}
三、轮播图全屏预览
1、效果展示
全屏预览:
2、编码
img.wxml
重点部分:
<image bindtap="swipclick" data-list="{{article.medias}}" data-src="{{resUrl+item.url1}}" src='{{resUrl+item.url1}}' mode='aspectFill'></image>
自定义属性传递参数:data-list 图片数组,data-src 当前图片地址,bindtap绑定单击事件。
img.js
//预览图片,放大预览
swipclick(e) {
var currentSrc = e.currentTarget.dataset.src; //获取当前图片地址
var imgList = e.currentTarget.dataset.list; //获取图片的数组
var arrUrls = new Array();
for (var i = 0; i < imgList.length; i++) {
arrUrls[i] = this.data.resUrl + imgList[i].url1;
}
console.log(arrUrls)
wx.previewImage({
current: currentSrc,
urls: arrUrls
})
},
arrUrls[i] = this.data.resUrl + imgList[i].url1; 服务器IP地址 + 数据库存储的图片地址
会遇到的问题:
由于是轮播图,可能image 的 bindtap绑定事件失效,触发无效,不要给image标签添加该属性:
pointer-events: none; //元素永远不会触发点击事件,会冒泡的下去
这里我们可以手动测试一下:
总结
以上就是今天要分享的内容,pointer-events: none; 元素的坑,我花了一个多小时才找到,在微信小程序中需要注意的是不能放置再组件中使用 pointer-events: none,但是我们可以在组件中设置 pointer-event: auto; 这是不影响bindtap绑定的。