badge标记

作者: 小困的被窝 | 来源:发表于2018-03-08 17:52 被阅读0次

    源码

    mian.vue

    <template>
      <div class="el-badge">
        <slot></slot>
        <transition name="el-zoom-in-center">
          <sup  
            v-show="!hidden && ( content || isDot )"
            v-text="content"
            class="el-badge__content"
            :class="{ 'is-fixed': $slots.default, 'is-dot': isDot }">
          </sup>
        </transition>
      </div>
    </template>
    
    <script>
    export default {
      name: 'ElBadge',
    
      props: {
        value: {},
        max: Number,
        isDot: Boolean,
        hidden: Boolean
      },
    
      computed: {
        content() {
          if (this.isDot) return; // 如果isDot为true,显示为点,直接return undefined;
    
          const value = this.value;
          const max = this.max;
    
          if (typeof value === 'number' && typeof max === 'number') {   // 如果value和max的类型为number才进行比较
            return max < value ? `${max}+` : value;   // 显示不大于max的value,或者max
          }
      
          return value;  // 如果value或者max的类型不是number,直接返回value
        }
      }
    };
    </script>
    

    需要注意的地方:

    1. <sup>标签:定义了一个文本区域,出于排版的原因,与主要的文本相比,应该展示得更高并且更小
      详情点这里
    <p>This text is <sup>superscripted</sup></p>
    

    以上代码显示:


    1. :class="{ 'is-fixed': $slots.default, 'is-dot': isDot }"
      以上代码还有两点知识:
      第一是slot,vue.$slots用来访问插槽内容,vue.$slots.slot_name用来访问插槽名为slot_name的插槽的节点,vue.$slot.default 为未包含在具名插槽中的节点。
      第二是class的对象语法,'is_fixed'这个class是否存在,决定于$slot.default的truthiness
      Truthy(真值)指的是在Boolean上下文中转换后的值为真的值。上面$slot.default为类数组,转换为boolean后为true。
      所以在<el-badge>标签内有元素,比如<el-button>标记会在右上角;如果没有元素,则显示在旁边,如下图。

      评论按钮的代码:<el-badge :value="12" class="item"><el-button size="small">评论</el-button></el-badge>
      评论下拉框的代码: <el-dropdown-item class="clearfix">评论<el-badge class="mark" :value="12" /></el-dropdown-item>

    相关文章

      网友评论

        本文标题:badge标记

        本文链接:https://www.haomeiwen.com/subject/yrpyfftx.html