小程序实现悬浮搜索框

 更新时间:2019年07月12日 16:49:46   作者:_学而时习之_  
这篇文章主要为大家详细介绍了小程序实现悬浮搜索框,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

本文实例为大家分享了小程序实现悬浮搜索框的具体代码,供大家参考,具体内容如下

悬浮搜索框是当数据界面不断滚动时,搜索框始终悬浮在最上方。来看一下效果图

UI代码

 <view class="search-wrapper">
  <view class="search-panel">
   <view class="search-section">
    <view class="search-button-wrapper">
     <image class="search-button" src="http://9i0i.com/pic.php?p=/images/scan.png" bindtap="scan"></image>
    </view>
    <view class="search-input-wrapper ">
     <input bindinput="bindBarcodeInput" bindconfirm="query" bindfocus="bindBarcodeFocus" bindblur="bindBarcodeBlur" class="search-input" placeholder="扫描或者手动输入条码" value="{{barcode}}" confirm-type="search" />
    </view>
    <view class="search-button-wrapper">
     <image class="search-button" src="http://9i0i.com/pic.php?p=/images/search.png" bindtap="query"></image>
    </view>
   </view>
  </view>
  <view class="search-demo" hidden="{{hiddenDropdown}}">
   <button size="mini" bindtap="setDemoData">示例</button>
   <button size="mini" bindtap="clear" style="margin-left:10px;">清空</button>
  </view>
 </view>

样式

.search-wrapper {
 position: fixed;/*悬停搜索框的关键样式*/
 top: 0px;
 left: 0;
 width: 100%;
 z-index: 999;
}
 
.search-panel {
 background-color: #f50;
}
 
.search-section {
 padding: 5px 0px;
 display: flex;
 flex-direction: row;
}
 
.search-demo {
 padding: 5px;
 flex-direction: row;
 background-color: #eee;
 padding-left:42px;  
 align-items: flex-start;
}
 
.search-input-wrapper {
 flex: 8;
 padding: 5px;
 background-color: #eee;
 border-radius: 3px;
}
 
.search-input {
 padding-top: 5px;
}
 
.search-clear {
 float: right;
 width: 32px;
 height: 32px;
 z-index: 998;
}
 
.search-button-wrapper {
 padding-left: 5px;
 padding-right: 5px;
 padding-top:5px; 
}
 
.search-button {
 flex: 1;
 border: none !important;
 color: white !important;
 width: 32px;
 height: 32px;
}

JS代码

//获取应用实例
var app = getApp()
Page({
  data: {
    barcode: "",
    hiddenLoading: true,
    hiddenData: true,
    hiddenDropdown: true,
    hiddenClear:true,
    demoData: 'XXXX',
    Product: {},
  },
  bindBarcodeInput: function (e) {
    this.setData({
      barcode: e.detail.value
    })
  },
  bindBarcodeFocus: function (e) {
    this.setData({
      hiddenDropdown: false,
      hiddenClear:false
    })
  },
  bindBarcodeBlur: function (e) {
    this.setData({
      hiddenDropdown: true,
      hiddenClear:true
    })
  },
  scan: function (e) {
    var that = this;
    wx.scanCode({
      success: function (res) {
        that.setData({
          barcode: res.result
        });
        that.query(e);
      },
      fail: function () {
        that.setData({
          barcode: "",
          hiddenData: true
        });
      },
      complete: function () {
        // complete
      }
    })
  },
  setDemoData: function (e) {
    this.setData({
      barcode: this.data.demoData
    });
  },
  clear: function (e) {
    this.setData({
      barcode: "",
      hiddenData: true
    });
  },
  query: function (e) {
    var url = "https://www.xxx.com/query";//查询数据的URL
    var that = this;
    if (that.data.barcode == undefined
      || that.data.barcode == null
      || that.data.barcode.length <= 0) {
      that.setData({ hiddenData: true });
      wx.showToast({
        title: '请输入条码',
        image: '/images/fail.png',
        duration: 2000
      });
      return;
    }
    wx.request({
      url: url,
      data: { barcode: that.data.barcode },
      method: 'GET',
      success: function (res) {
        var result = res.data;
        if (result.Status != 0) {
          that.setData({ hiddenData: true });
          wx.showToast({
            title: result.Message,
            image: '/images/fail.png',
            duration: 2000
          })
          return;
        }
        that.setData({ Product: result.Data, hiddenData: false });
        wx.showToast({
          title: "获取数据成功",
          image: '/images/ok.png',
          duration: 2000
        })
      },
      fail: function (e) {
        var toastText = '获取数据失败' + JSON.stringify(e);
        that.setData({
          hiddenLoading: !that.data.hiddenLoading,
          hiddenData: true
        });
        wx.showToast({
          title: toastText,
          icon: '',
          duration: 2000
        })
      },
      complete: function () {
        // complete
      }
    })
  }
})

用到的几个图片

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持程序员之家。

相关文章

  • 用canvas 实现个图片三角化(LOW POLY)效果

    用canvas 实现个图片三角化(LOW POLY)效果

    这篇文章主要介绍了用canvas 实现个图片三角化(LOW POLY)效果 的相关资料,需要的朋友可以参考下
    2016-02-02
  • javascript高级的文件目录排序代码

    javascript高级的文件目录排序代码

    这几天在做一个文件管理的模块,里面有排序的功能,产品经理看了说希望能做出更加智能的文件排序功能,就像是win7的名称排序一样,主要就是文件名中的数字会按大小排序,而不是直接按ascii码 ,这两天晚上没事,就先写了这个排序方法,下个版本中就可以用上了
    2010-08-08
  • 配置eslint规范项目代码风格

    配置eslint规范项目代码风格

    这篇文章主要介绍了配置eslint规范项目代码风格,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • 利用JS实现AI自动玩贪吃蛇

    利用JS实现AI自动玩贪吃蛇

    这篇文章主要为大家详细介绍了如何利用JS实现AI版自动玩贪吃蛇小游戏,文中的示例代码讲解详细,对我们学习JS游戏开发有一定帮助,需要的可以参考一下
    2022-06-06
  • JS实现关键词高亮显示正则匹配

    JS实现关键词高亮显示正则匹配

    这篇文章主要介绍了JS实现关键词高亮显示正则匹配功能,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-06-06
  • 快速理解 JavaScript 中的 LHS 和 RHS 查询的用法

    快速理解 JavaScript 中的 LHS 和 RHS 查询的用法

    本篇文章主要介绍了快速理解 JavaScript 中的 LHS 和 RHS 查询的用法,有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • JSP基于Bootstrap分页显示实例解析

    JSP基于Bootstrap分页显示实例解析

    这篇文章主要为大家详细介绍了JSP基于Bootstrap分页显示实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • JAVASCRIPT IE 与 FF中兼容问题小结

    JAVASCRIPT IE 与 FF中兼容问题小结

    在不同浏览器中对于一些属性的支持也不一样,下面是对ie和firefox的一些小结。
    2009-02-02
  • Webpack处理js资源(Eslint、Babel)

    Webpack处理js资源(Eslint、Babel)

    Webpack对js处理是有限的,只能编译js中ES模块化语法,不能编译其他语法,导致js不能在IE等浏览器运行,本文主要介绍了Webpack处理js资源,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • JavaScript?映射器?array.flatMap()

    JavaScript?映射器?array.flatMap()

    这篇文章主要介绍了JavaScript?映射器?array.flatMap(),array.flatMap()是一个映射函数,它接收一个数组和一个映射函数,然后返回一个新的映射数组,下面进入文章了解具体内容
    2022-02-02

最新评论

?


http://www.vxiaotou.com