程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 快速入手

  • 基础组件

  • 表单组件

  • 数据展示组件

    • 表格(Table)
    • 表格 (curd) 封装
    • Tag (标签)
    • 进度条(Progress)
    • 树形控件(Tree)
    • 分页组件 (Pagination)
    • 标记组件 (Badge)
      • 1. 基本用法
        • Badge 属性
        • 示例:显示小圆点
        • 示例:最大值显示
      • 2. 与图标结合使用
        • 示例:隐藏 Badge
      • 3. 设置标记颜色
      • 4. 结合 Slot 使用
      • 5. 标记实战示例
        • 1. 聊天应用示例
        • 2. 评论系统示例
    • 头像组件(Avatar)
    • 骨架屏组件 (Skeleton)
    • 空状态组件 (Empty)
    • 描述列表组件 (Descriptions)
    • 结果组件 (Result)
    • 统计数值组件 (Statistic)
  • 反馈组件

  • 导航组件

  • 其他组件

  • Element-UI
  • 数据展示组件
scholar
2024-08-12
目录

标记组件 (Badge)

# 标记组件 (Badge)

Element UI 的 Badge 组件用于在按钮、图标或文字旁展示一个数字或状态标记,通常用于提示未读消息、任务数量等信息。

提示

Badge 标记组件官方文档:https://element.eleme.cn/#/zh-CN/component/badge (opens new window)

# 1. 基本用法

基本语法:Badge 组件通过 value 属性设置显示的数值或文本,可以用于展示未读消息数量或其他提示信息。

<template>
  <el-badge :value="12">
    <el-button>评论</el-button>
  </el-badge>
</template>
1
2
3
4
5

在这个示例中,Badge 组件的 value 属性设置为 12,会在按钮旁边显示一个数字 12 的标记。

image-20240810054538604

# Badge 属性

参数 说明 类型 可选值 默认值
value 显示的值,可以是数字或字符串 string, number — —
max 最大值,超过此值会显示 {max}+,需 value 为 Number 类型 number — —
is-dot 是否只显示一个小圆点,而不是具体的数字 boolean — false
hidden 隐藏 Badge,不会显示任何标记 boolean — false
type Badge 的类型,用于设置不同的颜色和样式 string primary / success / warning / danger / info —
  • value:表示在标记中显示的内容,可以是数字或字符串。
  • max:当 value 超过这个数值时,显示为 {max}+,如设置为 99,value 为 100 时显示 99+。
  • is-dot:如果设置为 true,则不会显示具体的数字,只会显示一个小圆点。
  • hidden:设置为 true 时,标记会被隐藏。
  • type:Badge 的类型,可以设置为 primary、success、warning、danger、info,决定标记的颜色和样式。

# 示例:显示小圆点

<template>
  <el-badge is-dot>
    <el-button>消息</el-button>
  </el-badge>
</template>
1
2
3
4
5

在这个示例中,Badge 设置了 is-dot 属性,会在按钮旁显示一个红色的小圆点,而不是具体的数字。

image-20240810055119672

# 示例:最大值显示

    <el-badge :value="200" :max="99" class="item">
      <el-button size="small">评论</el-button>
    </el-badge>
    <el-badge :value="100" :max="10" class="item">
      <el-button size="small">回复</el-button>
    </el-badge>
1
2
3
4
5
6

在这个示例中,Badge 的 value 设置为 120,max 设置为 99,会显示为 99+;max 设置为 10,会显示为 10+,

image-20240810054916592

# 2. 与图标结合使用

Badge 可以和图标结合使用,展示更丰富的信息。

<template>
  <el-badge :value="3">
    <i class="el-icon-chat-dot-round"></i>
  </el-badge>
</template>
1
2
3
4
5

在这个示例中,Badge 包裹了一个图标,显示一个数字 3 的标记。

image-20240810053828917

# 示例:隐藏 Badge

<template>
  <el-badge :value="100" hidden>
    <el-button>隐藏标记</el-button>
  </el-badge>
</template>
1
2
3
4
5

通过设置 hidden 属性为 true,可以隐藏 Badge 标记。

image-20240810053914823

# 3. 设置标记颜色

通过 type 属性可以设置 Badge 的颜色和样式。

<template>
  <el-badge :value="3" type="primary">
    <el-button>消息</el-button>
  </el-badge>
  <el-badge :value="5" type="success">
    <el-button>成功</el-button>
  </el-badge>
  <el-badge :value="7" type="warning">
    <el-button>警告</el-button>
  </el-badge>
  <el-badge :value="9" type="danger">
    <el-button>危险</el-button>
  </el-badge>
  <el-badge :value="2" type="info">
    <el-button>信息</el-button>
  </el-badge>
</template>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

这个示例展示了 Badge 的五种类型(primary、success、warning、danger、info),每种类型会有不同的颜色。

image-20240810054448944

# 4. 结合 Slot 使用

Badge 组件支持 slot,可以将标记应用到自定义内容上。

<template>
  <el-badge :value="newMessages">
    <span>未读消息</span>    <!-- 插槽 -->
  </el-badge>
</template>

<script>
export default {
  data() {
    return {
      newMessages: 5
    };
  }
};
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

这个示例将标记应用到了一个 span 元素上,展示未读消息数量。

image-20240810054627331

总结

  • 多种样式与类型:通过 type 属性可以设置不同的样式,适用于各种场景。
  • 灵活使用:支持与按钮、图标、文本等元素结合使用,可以应用在页面的各个部分。
  • 动态控制:可以使用 hidden 属性来动态控制 Badge 的显示与隐藏。

# 5. 标记实战示例

# 1. 聊天应用示例

  • 数据绑定:chatList 是一个数组,包含了所有的聊天会话信息,每个会话有 id、name 和 unread 字段,其中 unread 表示未读消息数量。
  • 未读消息显示:使用 el-badge 组件来显示未读消息的数量,当数量超过 99 时会显示为 99+。
  • 标记为已读:点击 “标记所有为已读” 按钮后,markAllAsRead 方法将所有会话的 unread 字段设置为 0,并显示提示信息。
<template>
  <div>
    <h3>聊天应用</h3>
    <el-menu>
      <el-menu-item v-for="chat in chatList" :key="chat.id">
        <el-badge :value="chat.unread" :max="99">
          <span>{{ chat.name }}</span>
        </el-badge>
      </el-menu-item>
    </el-menu>
    <div style="margin-top: 20px;">
      <el-button type="primary" @click="markAllAsRead">标记所有为已读</el-button>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      chatList: [
        { id: 1, name: 'Alice', unread: 5 },
        { id: 2, name: 'Bob', unread: 0 },
        { id: 3, name: 'Charlie', unread: 12 }
      ]
    };
  },
  methods: {
    markAllAsRead() {
      this.chatList.forEach(chat => {
        chat.unread = 0; // 将所有聊天的未读消息数量设置为 0
      });
      this.$message.success('所有消息已标记为已读');
    }
  }
};
</script>

<style scoped>
/* 样式根据需求调整 */
</style>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

# 2. 评论系统示例

  • 数据绑定:posts 是一个数组,包含了所有的文章信息,每篇文章有 id、title 和 newComments 字段,其中 newComments 表示新评论的数量。
  • 新评论显示:使用 el-badge 组件来显示新评论的数量,同样超过 99 时会显示为 99+。
  • 查看评论:点击 “查看评论” 按钮后,viewComments 方法会弹出提示信息,表示正在查看该文章的评论,同时将 newComments 设置为 0,清除新评论标记。
<template>
  <div>
    <h3>评论系统</h3>
    <el-list>
      <el-list-item v-for="post in posts" :key="post.id">
        <el-badge :value="post.newComments" :max="99" type="primary">
          <span>{{ post.title }}</span>
        </el-badge>
        <el-button type="text" @click="viewComments(post.id)">查看评论</el-button>
      </el-list-item>
    </el-list>
  </div>
</template>

<script>
export default {
  data() {
    return {
      posts: [
        { id: 1, title: '文章一', newComments: 3 },
        { id: 2, title: '文章二', newComments: 0 },
        { id: 3, title: '文章三', newComments: 15 }
      ]
    };
  },
  methods: {
    viewComments(postId) {
      const post = this.posts.find(p => p.id === postId);
      if (post) {
        this.$message.info(`正在查看 "${post.title}" 的评论`);
        post.newComments = 0; // 清除新评论标记
      }
    }
  }
};
</script>

<style scoped>
/* 样式根据需求调整 */
</style>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08
分页组件 (Pagination)
头像组件(Avatar)

← 分页组件 (Pagination) 头像组件(Avatar)→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式