zoukankan      html  css  js  c++  java
  • vue select自定义组件

    自定义select组件

    相信大家很多时候都有这样一种需求,不能用Ui框架,要自己手写一个select组件之类的需求,当然我今天也遇到了。于是自己动手弄了一个非常简单的select组件,但是这个却是有一个问题,后面再来讲问题是什么。

    <template>
      <div class="xbsjselect">
        <div class="xbsjselect-selectdiv" @click="selectClick">
          <span class="xbsjselect-selectText">{{currentValue}}</span>
          <button class="xbsjselect-selectButton"></button>
        </div>
        <ul class="xbsjselect-selectOption" v-show="selectshow">
          <li v-for="(ct,index) in listdata" :key="index" @click="selectName(ct)">
            <span>{{ ct }}</span>
          </li>
        </ul>
      </div>
    </template>
    
    <script>
    export default {
      props: {
        list: {
            type:Array,
            default:[]
        },
        value:''
      },
      data() {
        return {
          selectshow: false,
          currentValue:this.value
        };
      },
      computed: {
        listdata() {
          return this.list;
        }
      },
      methods: {
        selectClick() {
          this.selectshow = !this.selectshow;
        },
        selectName(value) {
          this.currentValue = value;
          this.selectshow = false;
        }
      },
      watch: {
        currentValue(val, old) {
            this.$emit("input",val);
        }
      }
    };
    </script>
    
    <style scoped>
    .xbsjselect {
      position: relative;
       100%;
    }
    .xbsjselect-selectdiv {
      display: inline-block;
       100%;
      background: rgba(0, 0, 0, 0.4);
      height: 28px;
      position: relative;
      text-align: left;
      line-height: 28px;
      cursor: pointer;
      padding-left: 13px;
      left: -2px;
      top: 2px;
      border-radius: 3px;
    }
    .xbsjselect-selectText {
      font-size: 12px;
    }
    .xbsjselect-selectButton {
       12px;
      height: 10px;
      border: none;
      background: url(../../../images/titles-select.png) no-repeat;
      background-size: contain;
      cursor: pointer;
      float: right;
      margin-right: 20px;
      margin-top: 10px;
      outline: none;
    }
    .xbsjselect-selectOption {
       100%;
      height: 80px;
      background: rgba(138, 138, 138, 1);
      border-radius: 0px 0px 4px 4px;
      list-style: none;
      overflow: auto;
      z-index: 1;
      position: absolute;
    }
    
    .xbsjselect-selectOption li {
       100%;
      height: 20px;
      font-size: 14px;
      color: rgba(221, 221, 221, 1);
      line-height: 20px;
      cursor: pointer;
    }
    .xbsjselect-selectOption li span {
      display: inline-block;
      height: 20px;
      position: relative;
      left: 11px;
    }
    .xbsjselect-selectOption li:hover {
      background: rgba(107, 107, 107, 1);
    }
    </style>
    

    这里引用了一个图片。是一个小三角,需要可自行替换。

  • 相关阅读:
    八进制转换成十进制(你会明白的,呵呵)
    从键盘读取7个数(150)的整数值,每读一个值打印出该值个数的*号.
    两个字符串的连接程序
    判断一个素数能被几个9整除.
    809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。
    一个偶数总能表示为两个素数的和.
    07所能组成的奇数的个数
    asp.net .ashx文件使用Server.MapPath解决方法
    MVC常见问题小总结
    amcharts_2.6.13左上角的广告咱去掉
  • 原文地址:https://www.cnblogs.com/justyouadmin/p/11121501.html
Copyright © 2011-2022 走看看