仿手机相册的微信小程序组件,具备点击图片预览,长按图片出现多选框功能,读者可以根据自己的需求,依据现有数据进行删除等操作。话不多说,先看效果:

初始效果:

 长按效果:

选择效果:

注意:当前只是简单的逻辑,用户注意查看控制台的输出和代码中的注释!!!!!

上代码:

photo-album.wxml

<!-- 相册组件 -->
<view>
<scroll-view scroll-y="true" style="height: {{contentHeigh}}rpx;background-color: orange;">
<checkbox-group bindchange="onCheck">
<view class="scroll-acre">
<view class="pic" wx:for="{{imgList}}" wx:key="index">
<image catchtap="{{onView}}"
data-imglist="{{imgList}}"
data-currenturl="{{item}}"
catchlongpress="longPress"
mode="aspectFill"
src="{{item}}">
</image>
<checkbox hidden="{{!isShow}}" class="checkbox" value="{{index}}"></checkbox>
</view>
</view>
</checkbox-group>
</scroll-view>
</view>

photo-album.wxss

.scroll-acre {
display: grid;
grid-template-columns: repeat(auto-fill, 25%)
} .pic {
width: 200rpx;
height: 200rpx;
border-top: 1rpx solid #ffffff;
border-left: 1rpx solid #ffffff;
border-right: 1rpx solid #ffffff;
} image {
width: 200rpx;
height: 200rpx;
}
.checkbox{
float: left;
margin-top: -206rpx;
margin-left: 140rpx;
opacity: 0.7;
}

photo-album.js

// component/photo-album/photo-album.js
Component({
/**
* 组件的属性列表
*/
properties: {
// 可滚动区域高度
contentHeigh: {
type: Number || String,
value: 800
},
//图片列表
imgList: {
type: Array,
value: [
'http://placekitten.com/500/500',
'http://placekitten.com/200/300',
'http://placekitten.com/200/500',
'http://placekitten.com/600/200',
'http://placekitten.com/600/400',
'http://placekitten.com/600/300',
'http://placekitten.com/500/200',
'http://placekitten.com/400/200',
'http://placekitten.com/700/260',
'http://placekitten.com/400/230',
'http://placekitten.com/100/400',
'http://placekitten.com/300/200',
'http://placekitten.com/400/200',
'http://placekitten.com/700/260',
'http://placekitten.com/400/230',
'http://placekitten.com/100/400',
'http://placekitten.com/300/200',
'http://placekitten.com/400/200',
'http://placekitten.com/700/260',
'http://placekitten.com/400/230',
'http://placekitten.com/100/400',
'http://placekitten.com/300/200',
'http://placekitten.com/400/230',
'http://placekitten.com/100/400',
'http://placekitten.com/300/200',
'http://placekitten.com/400/200',
]
}
}, /**
* 组件的初始数据
*/
data: {
     isShow: false, //是否显示多选框 false:不显示
onView:'onView', //点击预览图片事件,在长按事件触发后,该值为空,用于暂停该事件触发
}, /**
* 组件的方法列表
*/
methods: {
// 图片点击预览事件
onView(options) {
console.log("点击了图片:",options);
let imgUrls = options.currentTarget.dataset.imglist; //全部图片地址列表
let currentUrl = options.currentTarget.dataset.currenturl; //当前点击的图片地址
wx.previewImage({
urls: imgUrls,
current:currentUrl,
showmenu:true
})
},
//图片长按事件,触发显示多选框和删除按钮
longPress() {
console.log("长按了图片");
this.setData({
isShow: true,
onView:''
})
},
    //选择框选择事件
onCheck(e) {
let checkList = e.detail.value
console.log("选择的图片序列:", checkList);
} }, })

photo-album.json

{
"component": true,
"usingComponents": {}
}

以上便是全部代码,接下来给读者看一下文件结构:

最后,记得这是个组件哦,要在页面引入才可以看到效果哈

小程序自定义组件参考文档:自定义组件 | 微信开放文档 (qq.com)

自定义组件 | 微信开放文档:  https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/

微信小程序仿手机相册组件——简单版的更多相关文章

  1. [小程序开发] 微信小程序audio音频播放组件+api_wx.createAudioContext

    引言: audio是微信小程序中的音频组件,可以轻松实现小程序中播放/停止音频等自定义动作. 附上微信小程序audio组件的相关属性说明:https://mp.weixin.qq.com/debug/ ...

  2. 微信小程序--仿微信小程序朋友圈Pro(内容发布、点赞、评论、回复评论)

    微信小程序--仿微信小程序朋友圈Pro(内容发布.点赞.评论.回复评论) 项目开源地址M朋友圈Pro 求个Star 项目背景 ​ 基于原来的开源项目 微信小程序仿朋友圈功能开发(发布.点赞.评论等功能 ...

  3. 微信小程序与手机APP区别

    微信小程序与手机APP区别 ------------------<><><><>------------------ 微信小程序自去年年初,张小龙放话要 ...

  4. 解决微信小程序安卓手机访问不到图片,无法显示图片

    关于微信小程序不显示图片 通病可能有以下几个可能性: 非本地图片:确定图片资源存在,copy 图片url再浏览器打开,确定图片资源存在且能正常访问 本地图片:确定相对路径或者绝对路径正确 微信小程序图 ...

  5. 微信小程序页面调用自定义组件内的事件

    微信小程序页面调用自定义组件内的事件 page page.json { "usingComponents": { "my-component": ". ...

  6. 微信小程序仿朋友圈功能开发(发布、点赞、评论等功能)

    微信小程序仿朋友圈功能开发(发布.点赞.评论等功能) 1.项目分析 项目整体分为三个部分 发布 展示 详情页 graph LR 朋友圈发布 --内容发布--> 内容展示 内容展示 --点击展示卡 ...

  7. 微信小程序(二十)-UI组件(Vant Weapp)-01按装配置

    1.官网 https://vant-contrib.gitee.io/vant-weapp/#/intro https://gitee.com/vant-contrib/vant-weapp 2.按装 ...

  8. 1个多商户、多平台版 微信小程序(多商户、多平台版),影城行业、影业连锁 多商户、多平台版微信小程序。(基于多平台版,支持在业务上 可给 每个单独影城 分发定制单独的小程序版本)

    1个 影城行业 微信小程序(多商户.多平台版), 影业连锁 多商户.多平台版微信小程序.(基于多平台版,支持在业务上 可给 每个单独影城 分发定制单独的小程序版本) 资讯QQ: 876635409  ...

  9. 微信小程序开发—快速掌握组件及API的方法

    微信小程序框架为开发者提供了一系列的组件和API接口. 组件主要完成小程序的视图部分,例如文字.图片显示.API主要完成逻辑功能,例如网络请求.数据存储.音视频播放控制,以及微信开放的微信登录.微信支 ...

随机推荐

  1. [java]基础学习HELLOWORLD系列

    (一)手把手教你做JDK环境变量配置 步骤 1 : 首先看配置成功后的效果 点WIN键->运行(或者使用win+r) 输入cmd命令 输入java -version 注: -version是小写 ...

  2. 【java】学习路径23-拆箱与装箱

    拿Integer类型和int类型来举例子. 装箱,基本给引用.下面的代码相当于Integer i_test = Integer.valueOf("100"); 注意!过程是自动的. ...

  3. 【java】学习路径19-Math类、BigDecimal的使用

    1--Math类简单的东西 //一些常数 show(Math.PI); show(Math.E); //四舍五入 show(Math.round(3.4)); show(Math.round(3.6) ...

  4. 食之无味?App Startup 可能比你想象中要简单

    请点赞关注,你的支持对我意义重大. Hi,我是小彭.本文已收录到 GitHub · AndroidFamily 中.这里有 Android 进阶成长知识体系,有志同道合的朋友,关注公众号 [彭旭锐] ...

  5. Kingbase V8R6集群安装部署案例---脚本在线一键扩容

    案例说明: KingbaseES V8R6支持图形化方式在线扩容,但是在一些生产环境,在服务器不支持图形化界面的情况下 ,只能通过脚本命令行的方式执行集群的部署或在线扩容. Tips: Kingbas ...

  6. springboot 集成 docsify 实现随身文档

    需求分析 文档可以和项目一起进行版本管理 文档可以在线访问 文档可以与springboot项目集成,不需要分开部署 MarkDown支持 文档跟随,打包jar也可以访问 技术选型 对于网上已有的方案, ...

  7. JS数据结构之 Map

    JS数据结构之 Map Map介绍 Map(映射)是ES6引入的一种数据结构.这是一种存储键值对列表很方便的方法,类似于其他编程语言的哈希表. HashMap(哈希表),也叫做散列表.是根据关键码值 ...

  8. Traefik SRE 之使用 Prometheus 进行监控报警

    当我们使用 Traefik 作为 Kubernetes 的 Ingress 控制器的时候,我们自然也非常有必要对其进行监控.本文我们将探讨如何使用 Prometheus 和 Grafana 从 Tra ...

  9. shell下cat EOF中变量$处理

    在使用cat EOF中出现$变量通常会直接被执行,显示执行的结果.若想保持$变量不变需要使用 \ 符进行注释 [root@localhost ~]# cat >> aa.txt <& ...

  10. Fluentd直接传输日志给MongoDB (standalone)

    官方文档地址:https://docs.fluentd.org/output/mongo td-agent版本默认没有包含out_mongo插件,需要安装这个插件才能使用 使用的是td-agent,安 ...