zoukankan      html  css  js  c++  java
  • vue.js 回车生成label标签组件

    效果图:

    示例代码如下:

    <template>
      <div>
        <!-- <label class="labelname">{{labelname}}</label> -->
        <div class="inputbox">
          <div class="arrbox">
            <div v-for="(item,index) in labelarr" :key="index" class="spanbox">
              <span>{{item}}</span>
              <i class="spanclose" @click="removeitem(index,item)"></i>
            </div>
            <input
              placeholder="输入后回车"
              size="5"
              v-model="currentval"
              @keyup.enter="addlabel"
              class="input"
              type="text"
            />
          </div>
        </div>
    
        <!-- 常用label展示 -->
        <div></div>
      </div>
    </template>
    
    <script>
    export default {
      name: 'enterlabel',
      props: {
        parentarr: {
          type: Array,
          default () {
            return []
          }
        }
      },
      data () {
        return {
          currentval: '',
          labelarr: []
        }
      },
      watch: {
        labelarr (old, cur) {
          this.$emit('on-change', this.labelarr)
        },
        parentarr () {
          if (this.parentarr.length > 0) {
            this.labelarr = []
            for (let i = 0; i < this.parentarr.length; i++) {
              this.labelarr.push(this.parentarr[i])
            }
          } else {
            this.labelarr = []
          }
        }
      },
      methods: {
        // 移除标签
        removeitem (index, item) {
          this.labelarr.splice(index, 1)
        },
        // input回车加入labelarr中
        addlabel () {
          let count = this.labelarr.indexOf(this.currentval)
          if (count === -1) {
            this.labelarr.push(this.currentval)
          }
          this.currentval = ''
        }
      }
    }
    </script>
    
    <style>
    .inputbox {
      background-color: white;
      font-size: 12px;
      border: 1px solid #dcdee2;
      border-radius: 6px;
      margin-bottom: 18px;
      padding: 6px 1px 1px 6px;
      text-align: left;
      font-size: 0;
      margin-bottom: 0;
    }
    .input {
      font-size: 14px;
      border: none;
      box-shadow: none;
      outline: none;
      background-color: transparent;
      padding: 0;
      margin: 0;
       auto !important;
      max- inherit;
      min- 80px;
      vertical-align: top;
      height: 30px;
      color: #34495e;
      margin: 2px;
      line-height: 30px;
    }
    .arrbox {
      border-radius: 6px;
      margin-bottom: 10px;
      padding: 6px 1px 1px 6px;
      text-align: left;
      font-size: 0;
    }
    .spanbox {
      line-height: 30px;
      margin: 2px;
      padding: 0 10px;
      background-color: #1abc9c;
      color: white;
      border-radius: 4px;
      font-size: 13px;
      cursor: pointer;
      display: inline-block;
      position: relative;
      vertical-align: middle;
      overflow: hidden;
      transition: 0.25s linear;
    }
    .spanbox:hover {
      padding: 0px 17px 0 3px;
    }
    .spanclose {
      color: white;
      padding: 0 10px 0 0;
      cursor: pointer;
      font-size: 12px;
      position: absolute;
      right: -3px;
      text-align: right;
      text-decoration: none;
      top: 0;
       100%;
      bottom: 0;
      z-index: 2;
      opacity: 0;
      filter: "alpha(opacity=0)";
      transition: opacity 0.25s linear;
      font-style: normal;
    }
    .spanbox:hover .spanclose {
      padding: 0 10px 5px 0;
      opacity: 1;
      -webkit-filter: none;
      filter: none;
    }
    .spanclose:after {
      content: "x";
      -webkit-font-smoothing: antialiased;
      -moz-osx-font-smoothing: grayscale;
      line-height: 27px;
    }
    </style>
    
    

    功能比较简单,需要的同学可以在这基础上再改改。
    随便只记录自己平时遇到的一些需求的解决方法,下次遇到了可以直接用或者不断的改进。

  • 相关阅读:
    HttpClient post封装
    UGUI 自动布局的重叠BUG
    什么时候必须使用UI相机? 多个相机的作用原理?
    UGUI BUG
    C# StopWatch的BUG????
    TrinityCore3.3.5编译过程-官方指导-踩坑总结
    C# unsafe模式内存操作深入探索
    C++提高编译与链接速度的资料
    C++复习笔记
    WOW研究资料收集
  • 原文地址:https://www.cnblogs.com/justyouadmin/p/11398998.html
Copyright © 2011-2022 走看看