在小程序中打造和微信app原生搜索框一致的交互体验
发布于 2 年前 作者 ryin 3661 次浏览 来自 分享

搜索框是再常见不过的组件了。但是有些细节,不知道大家注意到了吗?

请大家体验一下以下几个搜索组件吧,进行简单的操作:输入内容,然后清空,再输入内容。
1、微信app原生搜索
2、美团外卖小程序中的搜索
3、贝壳找房小程序中的搜索

在输入内容之后,点击清除图标进行清空内容,
微信原生搜索的软键盘是一直显示的,一直保持聚焦状态。
美团小程序中是先失焦,软键盘收起,然后再自动聚焦,弹出软键盘。
而贝壳找房小程序在清空输入内容后就完全失焦,收起软键盘了。

这三种交互方式,显而易见是微信原生的最友好。
因为我们在进行清除内容的操作之后,大概率会再进行重新输入。
如果直接给失焦,收起软键盘,用户再次输入,还要多一次点击聚焦,显然不友好。
而软键盘收起再自动弹出的迂回方式,是可以接受的。
那么能不能在微信小程序中达到微信app原生搜索一样的体验呢?是可以的。
请体验微盟小程序组件库中的搜索组件(文章末尾有入口)

实现的关键点:
1、catch:touchstart替换bind:tap
2、清除按钮在touchstart之后立即隐藏(这点正好符合交互习惯,即内容为空的时候不显示清空按钮)

以下是代码部分:代码片段

// wxml
<view class="search">
    <input placeholder="搜索框" value="{{value}}" type="text" bindinput="bindKeyInput"/>
    <span class="btn" wx:if="{{ showClear }}" catch:touchstart="clear">清除</span>
</view>
// js
const app = getApp()

Page({
    data: {
        value: '',
        showClear: false
    },
    bindKeyInput(e) {
        this.setData({ value: e.detail.value, showClear: e.detail.value.length > 0})
    },
    clear() {
        this.setData({ value: '',  showClear: false})
    }
}
// wxss
.search {
    border: 1px solid red;
    display: flex;
    align-items: center;
}
input {
    flex: 1;
}
.btn {
   background-color: aqua;
}

微盟移动端组件库官网:http://titian.design.weimob.com
组件库示例小程序码:

回到顶部