第7课 微信小程序实现图片搜索器案例:

2023-10-27

第7课 微信小程序实现图片搜索器案例:

效果图如下:

在这里插入图片描述

手机运行效果:在这里插入图片描述

来我们来看看代码的全局样式:

首先在app.json内的pages把需要的index1、index2页面注册
之后我们只需写index1、index2两个页面 即可实现图片搜索小案例
在这里插入图片描述

首先我们来看以下index1页面内的代码:

index1.js代码:

// pages/index1/index1.js
Page({
  data: {
    // value: ""
  },
  search(){
    //wx.navigateTo跳转页面方法
    if (this.data.value){
      wx.navigateTo({
        url: `/pages/index2/index2?value=${this.data.value}`,
      })
    }else{
      wx.showToast({
        title: "求输入需要查询的图片名称",
        icon: "none",		//加载旋转icon 可填:loading
        duration: 3000,	//弹窗显示时间
      });
    }
  },
  record(e){
    this.data.value = e.detail.value
  }
})

index1.json代码:

“navigationStyle”: “custom” //页面标题头部隐藏
切记json代码内不能写注解不然报错

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

index1.wxml代码:

<!-- index1.html 内搜索输入 -->
<view class="title">图片搜索</view>
<view class='sous'>
  <view class="btn" bindtap='search'>搜索</view>
  <!-- bindinput:键盘输入时触发  bindconfirm:按下键盘完成按钮时触发 -->
  <input class='input' bindinput="record" bindconfirm="search"></input>
</view>

index1.wxss代码:

page{
  background: linear-gradient(to bottom right,#f829ff, #09cff7)
}
.title{
  margin-top: 30vh;
  padding-bottom: 20px; 
  color: #fff;
  font-size: 40px;
  text-align: center;
}
.sous{
  width: 80vw;
  height: 30px;
  margin: auto;
  border-radius: 15px; 
  border: 1px solid #fff;
}
.btn{
  float: right;
  width: 20vw;
  height: 30px;
  line-height: 30px;
  border-left: 1px solid #fff;
  color: #fff;
  text-align: center;
  font-size: 1rem;
  box-sizing: border-box;
}
.input{
  width: 60vw;
  height: 30px;
  padding-left: 1rem; 
  color: #fff;
  box-sizing: border-box;
}

我们来看以下index2的代码:

index2.js代码:

// pages/index2/index2.js
Page({
  data: {
    value: "",  //存放需要查询的内容
    picList: [] //存放图片数据
  },
  //onLoad生命周期函数 options:跳转传递过来的value参数
  onLoad: function (options){
    if (options.value){
      this.data.value = options.value;  //数据不需要渲染页面就不必this.setData
    }
    wx.showLoading({
      title: '加载中',
    }),
    //请求 后台 服务器发送请求获取数据
    wx.request({
      url: `https://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&word=${this.data.value}&pn=90&rn=10`,//请求地址
      success:(res)=>{  //请求成功的回调
        this.setData({
          picList: res.data.data
        })
        wx.hideLoading()
      },
      fail(){  //请求失败的回调
        //uni.showToast弹窗
        wx.showToast({
          title: "当前网络不给力,请检查网络设置",
          icon: "none",		//加载旋转icon 可填:loading
          duration: 3000,	//弹窗显示时间
        });
      },
      complete() { //请求无论成功与失败都会执行的回调

      }
    })
  },
  //点击图片预览
  preview(e){
    //图片浏览方法
    wx.previewImage({
      urls: this.data.picList.map(i=>i.middleURL),
      current: e.target.dataset.src
    })
  },
  //点击按钮下载图片
  download(e){
    let url = e.currentTarget.dataset.src
    //将图片下载
    wx.downloadFile({
      url: url,
      success(res) {
        //将图片保存到图库
        wx.saveImageToPhotosAlbum({
          filePath: res.tempFilePath,
        })
      }
    })
  }
})

index2.json代码:

{
  "navigationBarTitleText": "图片",
  "usingComponents": {},
  "backgroundTextStyle": "light",
  "enablePullDownRefresh": true
}

index2.wxml代码:

<!-- pages/index2/index2.wxml -->
<view class='list-item' wx:for="{{picList}}">
  <view>
    <!-- bindtap设置点击事件 lazy-load='true'开启懒加载 data-src设置data的src属性 -->
    <image bindtap='preview' mode="widthFix" src="{{item.middleURL}}" 
    lazy-load='true' data-src="{{item.middleURL}}"></image>
    <view class='download' data-src="{{item.middleURL}}" bindtap='download'>
      <image src='/sourse/icon/xz.png'></image>
    </view>
  </view>
</view>

index2.wxss代码:

/* pages/index2/index2.wxss */
.list-item{
  position: relative;
}
image{
  width: 100vw;
}
.download{
  position: absolute;
  right: 20px;
  bottom: 20px;
  width: 100rpx;
  height:100rpx;
  background-color: #fff;
  border-radius: 50%;
  overflow: hidden;
  box-shadow: 0 2px 5px 0 #777;
}
.download>image{
  width: 80rpx;
  height:80rpx;
  margin: 10rpx;
}

把以上代码都复制到index1与index2两个页面即可实现效果图效果的搜索案例!

简单教你学微信小程序!

有疑问可以评论留言哦,作者将第一时间解答!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第7课 微信小程序实现图片搜索器案例: 的相关文章

  • IDEA插件系列(10):Statistic插件——统计代码行数

    1 插件介绍 显示项目统计信息 此插件显示按扩展名排序的文件 以及大小 行数LOC等 2 安装方式 第一种安装方式是使用IDEA下载插件进行安装 第二种方式是使用离线插件进行安装 插件下载地址 http plugins jetbrains
  • W. Richard Stevens Unix网络编程 作品集

    W Richard Stevens 写的那三卷书以怎样的顺序看是比较好的 按我的经验来看先粗略的看一遍卷一 然后再结合卷一看卷二 卷二要看几遍 每遍都会有收获 然后卷三大概看看就行 之后就是看源码 看bsd lite的 在最后就是看linu
  • svn客户端Tortoise SVN使用方法

    svn客户端Tortoise SVN使用方法 转载自 http www cnblogs com armyfai p 3985660 html 该博主介绍比较详细 这里只转载其中svn客户端使用部分 1 首先我们需要下载 svn小乌龟 后 进
  • Webservice实践(二)Webservice 客户端开发

    现在我们首先进行客户端开发的实践 从客户端实践来了解一下webservice的应用场景 比如说现在已经有一个webservice服务 提供的翻译方面的功能服务 主要是免费的webservice接口现在很多都被封了 我们需要编写一个客户端来使
  • Caffe中计算图像均值的实现(cifar10)

    在深度学习中 在进行test时经常会减去train数据集的图像均值 这样做的好处是 属于数据预处理中的数据归一化 降低数据间相似性 可以将数值调整到一个合理的范围 以下code是用于计算cifar10中训练集的图像均值 include fu

随机推荐

  • 代码越写越乱?那是因为你没用责任链

    路人 Java充电社 2022 08 04 08 06 发表于上海 收录于合集 java充电社244个 大家好 我是路人 最近 我让团队内一位成员写了一个导入功能 他使用了责任链模式 代码堆的非常多 bug 也多 没有达到我预期的效果 实际
  • springboot-单点登录

    单点登录 第一节 简介 1 1 什么是单点登陆 单点登录 Single Sign On 简称为 SSO 是目前比较流行的企业业务整合的解决方案之一 SSO的定义是在多个应用系统中 用户只需要登录一次就可以访问所有相互信任的应用系统 较大的企
  • 2023年美赛C题思路复盘

    论文标题 Riddle of Wordle Mining the Secret of Number Scores Solution Words Wordle之谜 挖掘数字得分和解字词的秘密 文章目录 前言 一 题目重述 拟解决的问题 我们的
  • mybatis异常:Could not find result map XXXX

    在使用mybatis框架 报这个错误时 是mapper文件中 查询语句的返回类型写错了 即该用resultType用成了resultMap 如果你要返回基本类型 或者返回已存在的pojo对象 用resultType修饰 如果要使用resul
  • Android ImageLoader用法总结

    前言 imageloader作为一个开源的框架被广泛的使用 尤其对于新手而言 更是如此 本人在项目中每当用到imageloader的时候都是从网上百度然后复制粘贴 现在觉得那样没得意义 因此写此博客 当作以后发复习资料 同时稍微研究下ima
  • springboot依赖

  • 三层架构:界面层、业务逻辑层、数据访问层

    进行用户的插入操作 1 spring会接管三层架构中的那些对象的创建 2 非spring接管下的三层项目构建 从下往上 1 实体类 com bjpowernode pojo Users package com bjpowernode poj
  • 【web开发】扩展与全面接管springmvc

    1 扩展springmvc 方法 编写一个配置类 Configuration 实现WebMvcConfigurer接口 不能标注 EnableWebMvc 特点 既保留了springboot所有的自动配置 也能用我们扩展的配置 示例 pom
  • 数据结构和算法(压缩矩阵和队列模拟)

    具体思路和分析放在末尾 稀疏矩阵的处理方法是 1 记录矩阵一共有几行几列 有多少个不同的值 2 把具有不同值的元素的行列和值记录都在一个小规模的矩阵中 从而缩小程序的规模 原始矩阵转换稀疏矩阵的思路 1 遍历原始的二维数组 得到有效数据的个
  • vue 的表单验证

    1 使用
  • zlib库各历史版本下载网址

    https zlib net fossils
  • Element——el-table给所有的row和column数据加上索引

    问题场景 开发中发现el table在使用cell style时无法获取row column的索引信息 解决思路 在其他可以获取到行列索引的方法中对行列数据添加索引属性 解决方法 利用el table的cell class name配置 以
  • 【Detectron2】详解Detectron2中Mask RCNN的部分代码

    整体来说 Backbone RPN和Fast RCNN是三个相对独立的模块 Backbone对每张图片产生5 level的特征 并送入RPN RPN对送入的特征 首先经过3x3卷积 随后用sibling 1x1卷积产生分类和bbox信息 分
  • Java类的封装

    目录 1 什么是类的封装 2 如何实现类的封装 1 private操作符 2 get与set 1 语法格式 2 封装演示 1 什么是类的封装 隐藏对象的属性和实现细节 仅对外提供公共访问方式 类的封装可以让使用者使用更加简单 数据也会更加安
  • 华为OD机试 Java 实现【密码验证合格程序】【牛客练习题 HJ20】,附详细解题思路

    一 题目描述 密码要求 长度超过8位 包括大小写字母 数字 其它符号 以上四种至少三种 不能有长度大于2的包含公共元素的子串重复 注 其他符号不含空格或换行 二 输入描述 一组字符串 三 输出描述 如果符合要求输出 OK 否则输出NG 四
  • Vcpkg 的安装与使用

    Vcpkg 的安装与使用 欢迎大家来我的博客逛逛 hauhau cn 需求 先确保你已经安装了 Windows7 及以上的版本 Git Visual Studio 2015 Update 3 及以上的版本 关于美化 Windows Term
  • 避免Flex RSL重复load 提高module加载性能

    本文编译后的补丁下载链接 http download csdn net source 1908278 多模块应用 每加载一个模块都会重复加载模块所使用的RSL 现在增加一个 private static var loadedRSLs Dic
  • golang实战-数字签名与认证

    一 数字签名 设想一个场景 Alice 给 Bob 发送了一段消息 明天我请你吃饭 该消息使用 Bob 的公钥加密 公钥加密才能确保消息被截获后也只有 Bob 本人能用自己的私钥解密 但是由于 Bob 的公钥可能其他人也有 Tom 也可以使
  • 搭建个人图床

    前言 在编写markdown文档的过程中 免不了插入一些图片 但是在分享的时候 这些带有图片资源的markdown就显得十分麻烦了 同时我也有写博客的习惯 hexo等用md转前端页面的项目在处理图片时也会遇到各种不舒服的操作 因此搭建自己的
  • 第7课 微信小程序实现图片搜索器案例:

    第7课 微信小程序实现图片搜索器案例 效果图如下 手机运行效果 来我们来看看代码的全局样式 首先在app json内的pages把需要的index1 index2页面注册 之后我们只需写index1 index2两个页面 即可实现图片搜索小