小程序样例2:简单图片分类查看

基本功能:

1、根据分类展示图片,点击类目切换图片:

2、点击分类编辑,编辑分类显示:

3、点击某个分类,控制主页该分类显示和不显示:

类目2置灰后,主页不再显示

4、点击分类跳转到具体的分类目录

5、点击二级分类,预览图片

源码实现

主页index:

获取类目数据,选择某个类目时,获取对应类目下的图片列表。

因为有类目编辑,数据会发生变化,某个类目显示和隐藏后,主页要重新获取数据;

index.js

//index.js
//获取应用实例
var app = getApp()Page({data: {contentList:[], // 当前类目图片列表currentType:wx.getStorageSync('currentType'),types:[]},onShow() {// types 会发生变化,放在onload中不合适console.log("onShow")let types = wx.getStorageSync("types");console.log(types)if (!types) {types = app.globalData.types;} console.log(types)this.setData({types: types})if(!this.data.currentType){let that = thistypes.every(function(item){if(item.is_show){wx.setStorageSync('currentType', item.value)that.setData({currentType:item.value})return false}else{return true}})}if(this.data.currentType){this.getList(this.data.currentType)}},onLoad:function(){},getList:function(type){// 获取不同类型的图片console.log(type)let list = app.globalData.contentList1;if (type == 'leimu1') {list = app.globalData.contentList1;} else if (type == 'leimu2') {list = app.globalData.contentList2;} else if (type == 'leimu3') {list = app.globalData.contentList3;}this.setData({contentList: list});},//点击某一个title条changeType:function(e){var type = e.currentTarget.dataset.valueif(type == this.data.currentType){return;}this.setData({currentType:type})app.globalData.currentType = typethis.getList(type)},gotoTypeEdit:function(e){wx.navigateTo({url: '../types/types',})},gotoAlbum:function(e){console.log("gotoAlbum");let param = e.currentTarget.dataset, title = param.title, id=param.id.replace(/[^0-9]/ig,"")console.log("param: " + param);console.log("title: " + title);console.log("id: " + id);var url = "../album/album?title="+title+"&id="+id;console.log("ready");wx.navigateTo({url:url,success: function(res){console.log('跳转到news页面成功')// success},fail: function() {console.log('跳转到news页面失败')  // fail},complete: function() {console.log('跳转到news页面完成') // complete}})}
})

index.wxml

<!--index.wxml-->
<view class="container"><!--nav  bar--><view class="nav_bar"><scroll-view class="nav_bar_scroll" scroll-x="true"><block wx:for="{{types}}" wx:key="title" wx:for-item="type"><block wx:if="{{type.is_show}}"><view bindtap="changeType" class="{{type.value == currentType ? 'current' : ''}} scroll_item" data-value="{{type.value}}">{{type.title}}</view></block></block></scroll-view><view class="edit_nav_bar" bindtap="gotoTypeEdit"><image class="edit_nav_bar_btn" src="/image/nav_bar_edit.png"></image>  </view></view><!--beauty list content--><view class="content"><block wx:for="{{contentList}}" wx:key="href"><view class="beauty_item" data-id="{{item.href}}" data-title="{{item.title}}" bindtap="gotoAlbum"><image src="{{item.thumbSrc}}" mode="aspectFit"></image><text>{{item.title}}</text></view></block></view></view>

index.wxss

.nav_bar{box-sizing:border-box;position: fixed;top: 0px;left:0px;width: 100%;border-bottom: 1px solid #D5D5D5;display: flex;background-color: #ffffff;z-index: 1000;
}
.nav_bar_scroll{flex:1;font-size:30rpx;width: 100rpx;height: 90rpx;box-sizing: border-box;white-space: nowrap;
}
.scroll_item{display: inline-block;padding: 0 20rpx;line-height:90rpx;
}
.nav_bar_scroll .current{color:#BE304D;
}
.edit_nav_bar{margin: 20rpx 0 0 0;height: 50rpx;width:70rpx;border-left:1px solid #ccc;display: flex;justify-content: center;align-items: center;
}
.edit_nav_bar_btn{width: 50rpx;height: 50rpx;
}
.content{margin: 90rpx 0 0 0;padding: 20rpx;display: flex;justify-content: space-between;flex-wrap:wrap;
}
.beauty_item{display: flex;flex-direction: column;align-items: center;width:345rpx;margin: 0 0 20rpx 0;
}
.beauty_item image{width: 100%;height: 450rpx;
}
.beauty_item text{display: block;font-size:28rpx;color:#000000;line-height: 40rpx;height: 80rpx;overflow: hidden;
}

类目编辑types:

types.js

var app = getApp()Page({data:{types: app.globalData.types},onLoad:function(){if (wx.getStorageSync('types')) {this.setData({types: wx.getStorageSync('types')})} },changeTypeStatus:function(e){var value = e.currentTarget.dataset.valuevar currentType = wx.getStorageSync('currentType') var showCount = 0, isCurrentHide = falsevar types = this.data.types.map(function(item){if(item.value == value){item.is_show = !item.is_showif(value == currentType && !item.is_show){isCurrentHide = true;}}if(item.is_show){showCount++;}return item})//当前选中的被隐藏了if(showCount < 1){wx.showToast({title: "不能全部隐藏", icon:"none",})return;}if(isCurrentHide){types.every(function(item){if(item.is_show){wx.setStorageSync('currentType', item.value)return false}else{return true}})}this.setData({types:types})app.globalData.types = types;wx.setStorageSync("types", types)}
})

types.wxml

<view class="container"><view class="tips">点击可切换标签状态[深色显示,灰色为隐藏]</view><view class="type-content"><block wx:for="{{types}}" wx:for-item="type" wx:key="title"><view data-value="{{type.value}}" class="type-item {{type.is_show ? 'type-item-show' : 'type-item-hide'}}" bindtap="changeTypeStatus">{{type.title}}</view></block></view>
</view>

types.wxss

.tips{box-sizing: border-box;background-color: #E6E6E6;line-height: 80rpx;font-size:30rpx;padding: 0 20rpx;width: 750rpx;
}
.type-content{padding: 25rpx 25rpx;display: flex;flex-flow:row wrap;
}
.type-item{width:155rpx;text-align: center;font-size:30rpx;line-height: 80rpx;margin: 20rpx 10rpx;
}
.type-item-show{background-color: #BE304D;color:#ffffff;
}
.type-item-hide{background-color: #E6E6E6;color:#C4C4C4;
}

类目详情album:

album.js

var app = getApp()Page({data:{album:[],albumUrlList: [], // 点击预览的图片列表 每个分类图片不同需要设置数据imgObjList:app.globalData.imgList,total:0,albumCount: 0,title:'',id:'',countShow:true,currentIndex:1},onLoad:function(options){console.log(this.data.imgObjList)this.setData({title: options.title,total: this.data.imgObjList.length})},onReady:function(){wx.setNavigationBarTitle({title:this.data.title})},imageload:function(e){// 图片加载预处理},preiviewwImage(e){console.log(e.currentTarget.dataset)let albumUrlList = e.currentTarget.dataset.item.albumUrlListwx.previewImage({current:albumUrlList[0],urls:albumUrlList})},hideCount:function(){this.setData({countShow:false})}
})

album.wxml

<view class="container"><scroll-view scroll-y="true" class="image-list-wrap"><block wx:for="{{imgObjList}}" wx:key="id" wx:item="{{item}}"><view><image bindtap="preiviewwImage" mode="aspectFit" src="{{item.imgSrc}}" data-item="{{item}}" data-index="{{index}}" style="width:{{item.w}}rpx;height:{{item.h}}rpx"/></view></block>
</scroll-view><!--图片数目--><block wx:if="{{countShow}}"><view class="albumCount" bindtap="hideCount">{{total}}</view></block>
</view>

album.wxss

.image-list-wrap{width: 100%;
}
.albumCount{width: 120rpx;height:120rpx;border-radius: 50%;background-color: #BE304D;color:#ffffff;position: fixed;right:30rpx;top:30rpx;font-size:35rpx;display: flex;justify-content: center;align-items: center;
}

全局数据:

app.js

//app.js
App({onLaunch: function () {},getUserInfo:function(cb){var that = thisif(this.globalData.userInfo){typeof cb == "function" && cb(this.globalData.userInfo)}else{//调用登录接口wx.login({success: function () {wx.getUserInfo({success: function (res) {that.globalData.userInfo = res.userInfotypeof cb == "function" && cb(that.globalData.userInfo)}})}})}},globalData:{api:{listBaseUrl:"https://route.showapi.com/959-1?showapi_appid=25744&showapi_sign=f3807528bd5d4a4ea6b2027e8286e0dc&type=",albumBaseurl:"https://route.showapi.com/959-2?id=%id%&showapi_appid=25744&showapi_sign=f3807528bd5d4a4ea6b2027e8286e0dc",meizhiurl:"http://meizhitu.applinzi.com/",},currentType:'',types:[{title:"类目1",value:"leimu1",is_show:true},{title:"类目2",value:"leimu2",is_show:true},{title:"类目3",value:"leimu3",is_show:true}],contentList1:[{'href':'001','title':'pic01','thumbSrc':'https://img1.baidu.com/it/u=1626917682,1417287895&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'},{'href':'002','title':'pic02','thumbSrc':'https://img95.699pic.com/xsj/0s/o9/53.jpg%21/fw/700/watermark/url/L3hzai93YXRlcl9kZXRhaWwyLnBuZw/align/southeast'},{'href':'003','title':'pic03','thumbSrc':'https://t8.baidu.com/it/u=3762038486,3670950445&fm=193'},{'href':'004','title':'pic04','thumbSrc':'https://img95.699pic.com/xsj/0c/sn/m6.jpg%21/fw/700/watermark/url/L3hzai93YXRlcl9kZXRhaWwyLnBuZw/align/southeast'}],contentList2:[{'href':'001','title':'pic01','thumbSrc':'https://img2.baidu.com/it/u=3727720492,1405473130&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'},{'href':'002','title':'pic02','thumbSrc':'https://img01.jituwang.com/161108/257309-16110Q5444017.jpg'},{'href':'003','title':'pic03','thumbSrc':'https://img95.699pic.com/xsj/18/jv/lk.jpg%21/fw/700/watermark/url/L3hzai93YXRlcl9kZXRhaWwyLnBuZw/align/southeast'},{'href':'004','title':'pic04','thumbSrc':'https://img95.699pic.com/xsj/0s/a1/fc.jpg%21/fw/700/watermark/url/L3hzai93YXRlcl9kZXRhaWwyLnBuZw/align/southeast'}],contentList3:[{'href':'001','title':'pic01','thumbSrc':'https://img95.699pic.com/xsj/06/ok/x7.jpg%21/fw/700/watermark/url/L3hzai93YXRlcl9kZXRhaWwyLnBuZw/align/southeast'},{'href':'002','title':'pic02','thumbSrc':'https://img95.699pic.com/xsj/0s/o9/53.jpg%21/fw/700/watermark/url/L3hzai93YXRlcl9kZXRhaWwyLnBuZw/align/southeast'},{'href':'003','title':'pic03','thumbSrc':'https://img95.699pic.com/xsj/0b/3p/uu.jpg%21/fw/700/watermark/url/L3hzai93YXRlcl9kZXRhaWwyLnBuZw/align/southeast'},{'href':'004','title':'pic04','thumbSrc':'https://img95.699pic.com/xsj/1l/ys/dz.jpg%21/fw/700/watermark/url/L3hzai93YXRlcl9kZXRhaWwyLnBuZw/align/southeast'}],imgList: [{'id':1,'imgSrc':'https://t7.baidu.com/it/u=3797771203,3932368528&fm=193&f=GIF',w:750,h:375,albumUrlList: ['https://t7.baidu.com/it/u=2340400811,4174965252&fm=193&f=GIF', 'https://t7.baidu.com/it/u=3379862688,946992288&fm=193&f=GIF']},{'id':2,'imgSrc':'https://t7.baidu.com/it/u=1522757721,1408622889&fm=193&f=GIF',w:750,h:375,albumUrlList: ['https://t7.baidu.com/it/u=613125779,842332090&fm=193&f=GIF', 'https://t7.baidu.com/it/u=2784816167,2846782825&fm=193&f=GIF']},{'id':3,'imgSrc':'https://t7.baidu.com/it/u=3929020656,3513462146&fm=193&f=GIF',w:750,h:375,albumUrlList: ['https://t7.baidu.com/it/u=1395795138,3058754288&fm=193&f=GIF', 'https://t7.baidu.com/it/u=4022230151,492212515&fm=193&f=GIF']}],}})

app.json

{"pages":["pages/index/index","pages/album/album","pages/types/types"],"window":{"backgroundTextStyle":"light","navigationBarBackgroundColor": "#BE304D","navigationBarTitleText": "图片查看","navigationBarTextStyle":"white"},"debug":false
}

app.wxss

/**app.wxss**/
page{height: 100%;
}
.container {min-height: 100%;box-sizing: border-box;position: relative;
} 

图片都是从百度图片地址,实际以项目后台接口返回为准。

个人小程序创业项目   #小程序://朋友圈子/VMEWRjrOTum4Soa  有想法的朋友可以一起交流下~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/637017.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue记录

vue2、vue3记录 vue2记录 经典vue2结构 index.vue&#xff1a; <template><div>...</div> </template><script>import method from "xxx.js"import component from "xxx.vue"export default {name: "ComponentName&…

typing python 类型标注学习笔记

在Python 3.5版本后引入的typing模块为Python的静态类型注解提供了支持。这个模块在增强代码可读性和维护性方面提供了帮助。 目录 简介为什么需要 Type hints typing常用类型typing初级语法typing基础语法默认参数及 Optional联合类型 (Union Type)类型别名 (Type Alias)子类型…

Redis 面试题 | 02.精选Redis高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【Linux】第三十一站:管道的一些应用

文章目录 一、我们之前的|(竖划线)管道二、自定义shell三、使用管道实现一个简易的进程池1.详解2.代码3.一个小bug4.最终代码 一、我们之前的|(竖划线)管道 cat test.txt | head -10 | tail -5如上代码所示&#xff0c;是我们之前所用的管道 我们拿下面这个举个例子 当我们用…

【Linux】安装n卡驱动以及可能遇到的问题

文章目录 1.换源以及更新2.安装依赖3. 安装n卡驱动独显与核显切换nvidia-settings消失忘记安装依赖无法进入图形化界面的急救命令行无响应办法 1.换源以及更新 目前&#xff0c;换源完全只需要鼠标点点点就可以完成了&#xff0c;打开应用列表里的Software & Updates&…

Spring DI

目录 什么是依赖注入 属性注入 构造函数注入 Setter 注入 依赖注入的优势 什么是依赖注入 依赖注入是一种设计模式&#xff0c;它通过外部实体&#xff08;通常是容器&#xff09;来注入一个对象的依赖关系&#xff0c;而不是在对象内部创建这些依赖关系。这种方式使得对象…

macOS修改默认时区显示中国时间

默认时区不是中国,显示时间不是中国时间 打开终端 ,删除旧区,并复制新时区到etcreb sudo -rm -rf /etc/localtime sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 重启系统后时间显示为中国时间

SQL语句的执行顺序

查询语句语法&#xff1a; SELECT字段列表 FROM表名字段 WHERE条件列表 GROUP BY分组字段列表 HAVING分组后的条件列表 ORDER BY排序字段列表 LIMIT分页参数 执行顺序 #先找到表格 FROM表名字段 WHERE条件列表 GROUP BY分组字段列表 HAVING分组后的条件列表 SELECT字段列表 …

4.C语言——数组

数组 1.什么是数组2.一维数组1.数组定义2.数组赋值3.数组的使用4.数组的存储地址 3.二维数组1.数组定义2.数组赋值3.数组的使用4.数组的存储地址 4.数组名5.数组越界 1.什么是数组 数组是用来存储一系列数据&#xff0c;但它往往被认为是一系列相同类型的变量 所有的数组都是由…

【网站项目】329网月科技公司门户网站

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

正则表达式初版

一、简介 REGEXP&#xff1a; Regular Expressions&#xff0c;由一类特殊字符及文本字符所编写的模式&#xff0c;其中有些字符&#xff08;元字符&#xff09;不表示字符字面意义&#xff0c;而表示控制或通配的功能&#xff0c;类似于增强版的通配符功能&#xff0c;但与通…

什么是技术架构?架构和框架之间的区别是什么?怎样去做好架构设计?(二)

什么是技术架构?架构和框架之间的区别是什么?怎样去做好架构设计?(二)。 技术架构是对某一技术问题(需求)解决方案的结构化描述,由构成解决方案的组件结构及之间的交互关系构成。广义上的技术架构是一系列涵盖多类技术问题设计方案的统称,例如部署方案、存储方案、缓存…

Arduino开发实例-INA219 电流传感器驱动

INA219 电流传感器驱动 文章目录 INA219 电流传感器驱动1、INA219 电流传感器介绍2、硬件准备及接线3、代码实现1、INA219 电流传感器介绍 INA219 模块用于同时测量电流和电压。 该模块使用 I2C 通信传输电压和电流数据。 其他特性: 测量精度:1%最大测量电压:26V最大测量电…

Spring:StopWatch

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 一、输出总耗时 二、输出所有任务的耗时和占比 总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、输出总耗时 public void stopWatc…

C++---判断闰年

一.闰年的定义 闰年是指在公历中&#xff0c;年份可以被4整除但不能被100整除的年份&#xff0c;或者可以被400整除的年份。简单来说&#xff0c;闰年是一个比平年多出一天的年份&#xff0c;即2月有29天。闰年的目的是校准公历与地球公转周期的差异&#xff0c;确保时间计算的…

自然语言推断:注意力之注意(Attending)

注意&#xff08;Attending&#xff09; 第一步是将一个文本序列中的词元与另一个序列中的每个词元对齐。假设前提是“我确实需要睡眠”&#xff0c;假设是“我累了”。由于语义上的相似性&#xff0c;我们不妨将假设中的“我”与前提中的“我”对齐&#xff0c;将假设中的“累…

ARM体系架构

1. 计算机组成 交叉开发: 程序的编写 编译 在 PC机上(宿主机) 但 运行在 开发板(目标机) 嵌入式开的的特点: 开发环境的不同: 交叉开发环境 以应用为中心, 围绕实际功能设计 软件和硬件 量体裁衣 1.1 计算机的基本组成部分: 输入设备 输出设备 存储器 运算器 控制器 总…

为什么 HTTPS 协议能保障数据传输的安全性?

HTTP 协议 在谈论 HTTPS 协议之前&#xff0c;先来回顾一下 HTTP 协议的概念。 HTTP 协议介绍 HTTP 协议是一种基于文本的传输协议&#xff0c;它位于 OSI 网络模型中的应用层。 HTTP 协议是通过客户端和服务器的请求应答来进行通讯&#xff0c;目前协议由之前的 RFC 2616 拆…

SpringBoot整合Dubbo和Zookeeper分布式服务框架使用的入门项目实例

文章目录 SpringBoot整合Dubbo和Zookeeper分布式服务框架使用的入门项目实例Dubbo定义其核心部分包含: 工作原理为什么要用dubbo各个节点角色说明&#xff1a;调用关系说明&#xff1a; dubbo为什么需要和zookeeper结合使用&#xff0c;zookeeper在dubbo体系中起到什么作用&…

谷歌浏览器通过network模拟HTTP中的GET/POST请求获取response

1、F12打开network选中需要模拟的方法Copy->Copy as fetch 2、通过AI帮你进行转换一下调用格式 原代码 fetch("https://mp.amap.com/api/forward/aggregate?mtop.alsc.kbt.intergration.toolkit.call.queryCallBlockInfo", {"headers": {"acce…