微信小程序_搜索图片功能实现

简介: 微信小程序_搜索图片功能实现

@[TOC]

⭐ 前言

大家好,我是yma16,不止前端,本文将介绍微信小程序 制作表情包的实现。

⭐ 后端实现

使用django的request抓取百度表情包实现,我在2021年的接口现在还能用

传送门:web站点搜索图片看冰冰

⭐ 页面排版布局

元素:输入框、搜索框、图片展示
点击图片可以保存。
image.png

点击图片保存
image.png

页面布局

view视图

<!--pages/imgs/imgs.wxml-->
<view class="container">
  <view class="container-header">
    {
   
   {
   
   config.title}}
  </view>
  <view class="container-content">
    <view class="container-content-top">
      <view class="container-content-left">
        <input class="weui-input" bindinput="bindKeyInput" value="{
   
   {searchVal}}" Loading="{
   
   {loading}}" placeholder="{
   
   {config.searchPlaceholder}}" />
      </view>
      <view class="container-content-right">
        <button class="mini-btn" type="primary" size="mini"
        bindtap="searchImg"
        >{
   
   {
   
   config.searchText}}</button>
      </view>
    </view>
    <view class="imgs-list">
      <view class="imgs-list-content" wx:for="{
   
   {imgsArray}}" wx:for-item="item" wx:key="index">
        <view class="img_title">{
   
   {
   
   item.text}}</view>
        <view class="img-box">
          <image class="img-content" mode="{
   
   {item.mode}}" src="{
   
   {item.src}}" data-url="{
   
   {item.src}}" bindtap="previewImage"></image>
        </view>
      </view>
    </view>
  </view>
</view>

样式

/* pages/imgs/imgs.wxss */
.container {
   
   
  position: relative;
  width: 100vw;
  height: 90vh;
  background: rgba(255, 255, 255, 0.8);
  overflow: hidden;
}

.container-header {
   
   
  background: rgba(16, 116, 187);
  width: 100%;
  text-align: center;
  height: 40px;
  line-height: 40px;
  font-weight: bold;
}

.container-content {
   
   
  position: relative;
  width: 100%;
  text-align: center;
}

.container-content-top {
   
   
  position: relative;
  padding: 10px 2px;
  display: flex;
}

.imgs-list{
   
   
  padding: 5px 5px;
  max-height: calc( 100vh - 165px);
  overflow: auto;
}

.img-box{
   
   
  display: inline;
}
.weui-input{
   
   
  position: relative;
  border: 1px solid rgba(16, 116, 187,.2);
  color: #333;
  height: 32px;
  line-height: 32px;
  width: 100%;
}
.mini-btn{
   
   
  background:rgba(16, 116, 187) !important;
  color: #fff;
  border-radius: 5px;
  width: 100%;
}
.container-content-left{
   
   
  margin-left: 20px;
  width: 80%;
}
.container-content-right{
   
   
  width: 20%;
  margin-left: 2px;
  line-height: 32px;
}
.img-content{
   
   
  width: 200px;
  height: 100px;
  margin-bottom: 5px;
}

逻辑实现

js逻辑
包括事件绑定

// pages/imgs/imgs.js
Component({
   
   
  /**
   * 继承父级样式
   */
  options: {
   
   
    addGlobalClass: true,
  },

  /**
   * 组件的属性列表
   */
  properties: {
   
   

  },

  /**
   * 组件的初始数据
   */
  data: {
   
   
    title: '表情包',
    loading: false,
    searchVal: '二次元',
    baseUrl: 'https://ip',
    config: {
   
   
      title: '表情包搜索',
      searchPlaceholder: '输入搜索图片',
      searchText: '查询'
    },
    imgsArray: []
  },
  lifetimes: {
   
   
    // 生命周期函数,可以为函数,或一个在 methods 段中定义的方法名
    attached: function () {
   
   
      console.log('获取attached')
      this.searchImg()
    },
    moved: function () {
   
    },
    detached: function () {
   
   
      console.log('detached')
    },
  },

  /**
   * 组件的方法列表
   */
  methods: {
   
   
    bindKeyInput(e) {
   
   
      this.setData({
   
   
        searchVal: e.detail.value
      })
    },
    previewImage(e) {
   
   
      console.log('click png', e)
      const url = e.target.dataset.url
      wx.previewImage({
   
   
        current: url, // 当前显示图片的http链接
        urls: [url] // 需要预览的图片http链接列表
      })
    },
    searchImg() {
   
   
      this.setData({
   
   
        loading: true
      })
      const prefix = 'path' + this.data.searchVal
      const remotePath = this.data.baseUrl + prefix
      const thisBack = this
      wx.request({
   
   
        url: remotePath,
        method: 'GET',
        success: (res) => {
   
   
          console.log('res', res)
          let imgData = []
          if (res.data) {
   
   
            const {
   
    data } = res.data
            imgData = data.map(item => {
   
   
              return {
   
   
                mode: 'aspectFill',
                title: '图片',
                src: item
              }
            })
          }
          thisBack.setData({
   
   
            loading: false,
            imgsArray:imgData
          })
        },
        fail: () => {
   
   
          thisBack.setData({
   
   
            loading: false,
            imgsArray: []
          })
        }
      })
    }
  }
})

⭐ 结束

感谢阅读,如有问题欢迎指正!
image.png

目录
相关文章
|
6天前
|
小程序 机器人 开发者
QQ 小程序已发布,但无法被搜索的解决方案
我的 QQ 小程序在 2024 年 8 月就已经审核通过,上架后却一直无法被搜索到。打开后,再在 QQ 上下拉查看 “最近使用”,发现他出现一下又马上消失。
15 2
|
14天前
|
小程序 数据挖掘 UED
开发1个上门家政小程序APP系统,都有哪些功能?
在快节奏的现代生活中,家政服务已成为许多家庭的必需品。针对传统家政服务存在的问题,如服务质量不稳定、价格不透明等,我们历时两年开发了一套全新的上门家政系统。该系统通过完善信用体系、提供奖励机制、优化复购体验、多渠道推广和多样化盈利模式,解决了私单、复购、推广和盈利四大痛点,全面提升了服务质量和用户体验,旨在成为家政行业的领导者。
|
29天前
|
存储 自然语言处理 小程序
微信小程序多语言切换神器:简繁体切换功能完全指南
随着全球化的发展,支持多种语言的应用程序愈发重要。本文介绍了如何在微信小程序中实现简体与繁体字体之间的切换功能,以满足不同地区用户的需求。通过创建utils文件夹并编写相应的转换函数,开发者可以方便地实现语言切换,从而提升用户体验。文章中还附带了示例代码和效果图,帮助读者更好地理解和应用这一功能。
80 0
微信小程序多语言切换神器:简繁体切换功能完全指南
|
1月前
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
502 0
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
|
1月前
|
小程序 Linux Python
查找首字母与Python相关的的英文词汇小程序的续篇---进一步功能完善
查找首字母与Python相关的的英文词汇小程序的续篇---进一步功能完善
|
2月前
|
小程序
小程序消除图片下边距的三个方法
小程序消除图片下边距的三个方法
48 11
|
2月前
|
算法 JavaScript 前端开发
切西瓜法实现微信抢红包功能
该文章介绍了使用“切西瓜法”和“栅栏法”两种算法来模拟微信抢红包的随机分配机制,并通过具体的JavaScript代码实现了红包金额的公平随机分配过程。
切西瓜法实现微信抢红包功能
|
1月前
|
算法 小程序 Java
java制作海报三:获取微信二维码详情,并改变大小,合成到海报(另一张图片)上
这篇文章介绍了如何使用Java获取微信小程序的二维码,并将其调整大小后合成到海报(另一张图片)上。
38 0
|
2月前
|
人工智能 前端开发 JavaScript
MacTalk 测评通义灵码,实现“微信表情”小功能
墨问西东创始人池建强分享了团队使用通义灵码的经验。
|
2月前
|
小程序 API 开发工具
使用python 实现微信签到提醒功能
【9月更文挑战第4天】使用python 实现微信签到提醒功能
69 2

热门文章

最新文章