zoukankan      html  css  js  c++  java
  • 小程序开发系列(五)悬浮搜索框

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


    UI代码

     <view class="search-wrapper">
        <view class="search-panel">
          <view class="search-section">
            <view class="search-button-wrapper">
              <image class="search-button" src="/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="/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;
       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;
       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;
       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
                }
            })
        }
    })
    用到的几个图片




    转载请注明出处

  • 相关阅读:
    FZU OJ 1056 :扫雷游戏
    HPU 1166: 阶乘问题(一)
    常用的一些模板
    PAT天梯:L1-019. 谁先倒
    HPU 1437: 王小二的求值问题
    《编程珠玑》阅读小记(7) — 代码调优与节省空间
    《编程珠玑》阅读小记(6) — 算法设计技术
    《编程珠玑》阅读小记(5) — 编程小事
    《编程珠玑》阅读小记(4) — 编写正确的程序
    《C/C++专项练习》— (1)
  • 原文地址:https://www.cnblogs.com/sparkleDai/p/7604892.html
Copyright © 2011-2022 走看看