uniapp中uview组件库的Search 搜索 的用法

本文详细介绍了u-Search组件的使用方法,包括设置输入框样式、双向数据绑定、清除控件、右边控件、自定义样式以及API和事件。通过实例展示了如何配置各种参数和监听相应事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

基本使用

#设置输入框形状

#是否开启清除控件

#是否开启右边控件

#自定义样式

API

#Props

#Events


基本使用

  • 通过placeholder参数设置占位内容
  • 通过v-model双向绑定一个变量值,设置初始化时搜索框的值,如果初始内容为空,那么请绑定一个值为空字符的变量。

说明: 因为是双向绑定的,所以当组件内容输入框内容变化时,也会实时的反映到绑定的keyword变量,这意味着,您无需监听change事件, 也能实时的得知输入框的内容。

<template>
	<u-search placeholder="日照香炉生紫烟" v-model="keyword"></u-search>
</template>

<script>
	export default {
		data() {
			return {
				keyword: '遥看瀑布挂前川'
			}
		}
	}
</script>

#设置输入框形状

通过shape设置输入框两端的形状,square-方形带圆角,round(默认)-半圆形

<u-search shape="round"></u-search>

copy

#是否开启清除控件

clearabled(默认为true)设置为true的话,输入框有内容时,右边会显示一个清除的图标

<u-search :clearabled="true"></u-search>

#是否开启右边控件

该控件为类似按钮形式,可以设置为"搜索"或者"取消"等内容,如果开启动画效果,用户确认搜索后,该控件会自动消失

  • showAction配置是否开启右边按钮控件
  • actionText配置控件内容
  • animation(默认为false)设置为true的话,失去焦点,或者点击控件按钮时,控件自动消失,并且带有动画效果

说明

  1. 如果不想点击右侧控件时自动消失,请把animation设置为false
  2. 右侧控件的默认文字为"搜索"(它本意为控件,碰巧内容为"搜索"二字,并非说它就是一个搜索按钮),点击它的时候触发的是custom事件,而不是search事件
<u-search :showAction="true" actionText="搜索" :animation="true"></u-search>

#自定义样式

  • 通过inputAlign设置输入框内容的对其方式,和css的text-align同理
  • 通过borderColor设置整个搜索组件的边框,只要配置了颜色,才会出现边框
  • 通过height设置组件高度
  • 通过disabled设置是否禁用输入框
  • 通过bgColor设置是搜索组件背景颜色
<u-search inputAlign="center" height="70"></u-search>

API

#Props

参数说明类型默认值可选值
v-model双向绑定输入框搜索值String--
shape搜索框形状,round-圆形,square-方形Stringroundsquare
bgColor搜索框背景颜色String#f2f2f2-
placeholder占位文字内容String请输入关键字-
clearabled是否启用清除控件Booleantruefalse
focus是否自动获得焦点Booleanfalsetrue
showAction是否显示右侧控件(右侧的"搜索"按钮)Booleantruefalse
actionStyle右侧控件的样式,对象形式Object--
actionText右侧控件文字String搜索-
inputAlign输入框内容水平对齐方式Stringleftcenter / right
inputStyle自定义输入框样式,对象形式Object--
disabled是否启用输入框Booleanfalsetrue
borderColor边框颜色,配置了颜色,才会有边框Stringtransparent-
searchIconColor搜索图标的颜色,默认同输入框字体颜色String#909399-
searchIconSize搜索图标的大小Number22-
color输入框字体颜色String#606266-
placeholderColorplaceholder的颜色String#909399-
searchIcon输入框左边的图标,可以为uView图标名称或图片路径Stringsearch-
margin组件与其他上下左右元素之间的距离,带单位的字符串形式,如"30rpx"、"30rpx 20rpx"等写法String0-
animation是否开启动画,见上方说明Booleanfalsetrue
value输入框初始值String--
maxlength输入框最大能输入的长度,-1为不限制长度String | Number-1-
height输入框高度,单位rpxString | Number64-
label搜索左侧文本信息String | Number--

#Events

您可以通过监听change事件,在回调中将返回的结果绑定一个变量去获得用户的输入内容。
但如"基本使用"中的说明一样,您双向绑定了一个变量后,无需监听change事件也是可以的。

事件名说明回调参数版本
change输入框内容发生变化时触发value:输入框的值-
search用户确定搜索时触发,用户按回车键,或者手机键盘右下角的"搜索"键时触发value:输入框的值-
custom用户点击右侧控件时触发value:输入框的值-
blur输入框失去焦点时触发value:输入框的值-
focus输入框获得焦点时触发value:输入框的值-
clear配置了clearabled后,清空内容时会发出此事件--
clickdisabledtrue时,点击输入框,发出此事件,用于跳转搜索页--
clickIcon左侧icon点击时候时触发--
onReachBottom触底函数用这个但是无法保证搜索框和u-tabs标签页是吸顶的,该怎么解决?<template> <view class="deliveryOrder"> <u-toast ref="uToast"></u-toast> <view class="searchBtn"> <u-search placeholder="订单号" :showAction="true" v-model="orderValue" shape="round" actionText="查询" :animation="true" @search="searchClick()" @custom="searchClick()"></u-search> <text class="screening" @click="handleScreening">筛选</text> </view> <view class="tabsBox"> <u-sticky bgColor="#fff"> <u-tabs :list="list" :is-scroll="false" :current="current" bar-width="50" active-color="orange" @change="change"> </u-tabs> <view v-if="current===0"> <scroll-view @scrolltolower="lowerBottom" @refresherrefresh="getFresh" :refresher-enabled="true" :refresher-triggered="triggered" scroll-y="true" class="scrollHeight"> <view class="scrolllist" v-if="allList&&allList.length>0"> <view class="orderscrollItem" v-for="(item,index) in allList" :key="index" @click="toDetail(item)"> <view class="itemTitle"> {{item}} </view> </view> <view class="more_text" v-if="showMoreData"> 没有更多数据了... </view> </view> <view v-else class="empty_box"> <u-empty mode="order" icon="http://cdn.uviewui.com/uview/empty/car.png" > </u-empty> </view> </scroll-view> </view> <view v-if="current===1"> 待配送 </view> <view v-if="current===2"> 配送中 </view> <view v-if="current===3"> 待签收 </view> <view v-if="current===4"> 已完成 </view> </u-sticky> </view> <u-popup :show="showPopup" :round="10" mode="top" @close="showPopup=false"> <view class="popup"> <text class="popupTitle">筛选条件</text> <view class="formBox"> <u--form :model="form" ref="uForm" labelWidth="90px"> <u-form-item label="时间范围" prop="timeValue" borderBottom @click="showCalendar=true"> <u-input v-model="form.timeValue" :disabled="true" r
03-28
<think>好的,用户的问题是在使用onReachBottom触底加载时,搜索框和u-tabs标签页无法保持吸顶效果。我需要根据提供的引用和知识库来找到解决方法。 首先,引用[4]提到,当body的overflow属性设置为scroll时,sticky吸顶可能会失效。用户可能遇到了类似的问题。需要检查页面或父容器的overflow设置,确保不是hidden或auto,可以尝试设为visible。 然后,引用[2]和[3]讨论了使用vant的sticky属性时的问题。虽然用户使用的是u-tabs,但可能原理类似。确保组件正确应用了sticky属性,可能需要调整z-index,防止被其他元素覆盖。 另外,触底加载时页面内容增加,可能导致布局变化,影响吸顶效果。需要确认吸顶元素在动态内容加载后仍然位于正确的位置。可能需要强制重新计算布局,比如使用nextTick或在加载完成后触发重绘。 还有,引用[3]提到最后一个van-tab可能影响布局,用户可能需要检查是否有类似的结构问题,比如最后一个标签导致布局溢出,从而影响吸顶。确保标签结构正确,没有多余的元素干扰。 最后,可能需要使用fixed定位替代sticky,但要注意兼容性和滚动处理。同时,检查父容器高度和滚动区域,确保吸顶元素在正确的容器内,避免滚动嵌套问题。</think>### 解决方案:保持吸顶效果的实现方法 #### 1. 检查父容器布局和样式 - **禁用父容器overflow属性**:若父容器(如外层`<view>`或页面容器)设置了`overflow: scroll`或`overflow: auto`,会导致`sticky`失效。需将其改为`overflow: visible`[^4]。 ```css .container { overflow: visible; /* 避免滚动容器干扰吸顶效果 */ } ``` #### 2. 确保吸顶组件层级正确 - **添加z-index层级**:吸顶元素需要设置较高`z-index`(建议≥100),避免被列表内容覆盖。 ```html <u-search :fixed="true" :sticky="true" style="z-index: 100;"></u-search> <u-tabs :sticky="true" :offset-top="搜索框高度" style="z-index: 99;"></u-tabs> ``` #### 3. 动态内容加载后的布局修复 - **触底后强制重绘**:在`onReachBottom`加载数据后,调用`this.$nextTick`等待渲染完成,再通过修改`key`强制组件重置。 ```javascript onReachBottom() { this.loading = true; this.fetchData().then(() => { this.loading = false; this.$nextTick(() => { this.tabsKey = Date.now(); // 强制u-tabs重新渲染 }); }); } ``` #### 4. 使用替代方案兼容特殊场景 - **手动实现吸顶效果**:若框架原生`sticky`不生效,改用`position: fixed`并动态计算位置: ```javascript onPageScroll(e) { const scrollTop = e.scrollTop; const searchHeight = 50; // 搜索框高度 this.isSticky = scrollTop > searchHeight; } ``` ```html <u-search :fixed="true"></u-search> <u-tabs :style="isSticky ? 'position: fixed; top: 50px; z-index: 100;' : ''"></u-tabs> ``` #### 5. 验证组件兼容性 - **检查u-tabs版本**:确认使用的UI库版本是否支持`sticky`属性,更新至最新版本或查看官方文档的已知问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TechWhiz-晓同

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值