Vue 组件封装之 Search 搜索

一、Search 组件

组件说明:
实现搜索功能。

效果展示:
input 输入框背景铺满的效果
在这里插入图片描述
input 输入框未铺满的效果
在这里插入图片描述

二、使用案例

<template>
<el-search placeholder="请输入省市区关键字"  @on-click="queryByKey" ref="search">
</template>
<script>
 export default{
    data(){
      return{},
    }
    methods:{
      queryByKey(val){
     }
    }
}
</script>

三、API 使用指南

属性说明类型默认值
placeholder输入框的提示文字string“”
className输入框背景样式,值为 default 时是默认的背景色,不传该参数则默认没有背景色的效果string“”
on-click点击键盘搜索时触发点击按钮的回调函数(e: Object): void

四、源代码

Search.vue

<template>
  <div>
<div :class="className=='default'?'search-warp search-default-bg':className+' search-warp'" v-if="className">
  <div class="search-content">
    <img src="../images/search.png" alt="" class="search-icon">
    <form action="javascript:return true;" class="search-width-fill">
    <input type="search"
           :placeholder="placeholder"
           @keyup.13="searchByKey($event)"
           class="search-input"
           ref="input"
           @input="change($event)"
    >
    </form>
    <img src="../images/clear.png" alt="" class="search-clear" @click="clear" v-if="isShow">
  </div>
</div>
  <div class="search-warp" v-if="!className">
    <div class="search-content">
      <img src="../images/search.png" alt="" class="search-icon">
      <form action="javascript:return true;" class="search-width-fill">
      <input type="search"
             :placeholder="placeholder"
             @keyup.13="searchByKey($event)"
             class="search-input-gray"
             ref="input"
             @input="change($event)">

      </form>
      <img src="../images/clear.png" alt="" class="search-clear" @click="clear" v-if="isShow">
    </div>
  </div>
  </div>
</template>
<script>
  export default {
    name: "ElSearch",
    data(){
      return {
         isShow:false
      }
    },
    props:{
      placeholder: {
        type: String,
        default: ""
      },
      className:{
        type:String,
        default: ""
      },
    },
    methods:{
      change(e){
          if(e.target.value){
            this.isShow = true;
          }else {
            this.isShow = false;
          }
      },
      searchByKey(e){
        this.$refs.input.blur();
        this.$emit('on-click',this.$refs.input.value);//将点击搜索的事件暴露给父组件
      },
      clear(){
        this.$refs.input.value = "";
        this.isShow = false;
      }
    }

  }
</script>
<style scoped>
  input[type="search"]{
    -webkit-appearance:none;
  }
  input::-webkit-search-cancel-button {display: none;}
  .search-warp{
    padding: 0 10px;
  }
  .search-default-bg{
    background: #005398;
  }
  .search-input{
    background: #fff;
    width: 100%;
    height: 35px;
    padding: 10px 10px 10px 35px;
    border-radius: 10px;
    margin:10px 0;
    font-size: 14px;
  }
  .search-input-gray{
    background: #eee;
    width: 100%;
    height: 35px;
    border-radius: 10px;
    padding: 10px 10px 10px 35px;
    margin:10px 0;
    font-size: 14px;
  }
  .search-input::-webkit-input-placeholder{
   color: #bbbbbb;
  }
  .search-content{
    position: relative;
    display: flex;
    align-items: center;
  }
  .search-icon{
    width: 15px;
    position: absolute;
    left: 10px;
  }
  .search-clear{
    width: 20px;
    position: absolute;
    right: 10px;
  }
  .search-width-fill{
    width: 100%;
  }
</style>

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值