Skip to content

Bubble 对话气泡 🔥

📌 注意

1.1.6 版本 继承打字器雾化属性。请及时更新尝试

🐵 此温馨提示更新时间:2025-04-13

介绍

Bubble 是一个对话气泡组件,常用于聊天的时候。它可以展示对话内容,支持自定义头像、头部、内容、底部,并且具备打字效果和加载状态展示。该组件内置 Typewriter 打字器组件,能够实现文本的打字动画效果。

代码演示

基本使用

最简化的集成方式。

头像、位置

通过 #avatar 设置自定义头像。通过 placement 属性设置位置,提供了 startend 两个选项值。

💡 提示

😸 内置 element-plus el-avatar 组件。但是为避免属性名重复,例如:el-avatarBubbleshape 属性。你需要用以下属性设置

  1. 属性
  • avatar 设置头像占位图片
  • avatar-size 设置头像占位大小 👉这个属性在 el-avatar组件number类型,这里注意在此组件上是 string类型 以更好自定义样式属性😊
  • avatar-gap 设置头像和气泡之间的距离
  • avatar-shape 设置头像形状
  • avatar-icon 设置头像占位图标
  • avatar-src-set 设置头像图片 srcset 属性
  • avatar-alt 设置头像图片的 alt 属性
  • avatar-fit 设置头像占位图片的填充模式
  1. 事件
  • @avatar-error 当头像加载失败时触发。

头部、底部

加载状态

通过 loading 属性设置加载中状态。支持通过 #loading 插槽自定义加载中状态内容展示。

💌 消息

#loading 插槽 优先级更高,内置的加载中样式将失效。但 loading 属性任然可以控制 加载中状态。

打字器配置

通过设置 typing 属性,开启打字效果。 更新 content 如果是之前的子集,则会继续输出,否则会重新输出。

💌 消息

🙊 当使用 #content 插槽,去自定义内容时。typing 属性将失效。如果你想让你的内容字符串,重新实现打字效果,可以与 Typewriter 打字器 组件 结合使用。

💡 提示

typing 属性接受一个对象,包含以下属性:

  • step: 每次打字的吐字字符数,默认为 2
  • interval: 打字间隔(毫秒),默认为 50
  • suffix: 结尾字符,默认为 |

开启Markdown渲染

通过设置 is-markdown 属性,开启 markdown 文本内容渲染模式。 更新 content 如果是之前的子集,则会继续输出,否则会重新输出。

继承打字器的图表和md样式

通过设置 is-markdown 属性,开启 markdown 文本内容渲染模式。 更新 content 如果是之前的子集,则会继续输出,否则会重新输出。

雾化效果

开启打字器时,继承打字器雾化属性。通过设置 is-fog 属性,开启雾化打字器渲染模式。 兼容 Markdown 样式。注意,开启雾化后,typing 的后缀 suffix 属性将会失效。

is-fog 默认为 false,可以设置为 true 或者 { bgColor: '#f5f5f5', width: '80px' }。设置雾化背景颜色,可以更好的匹配自定义的样式。

自定义内容

通过 #content 插槽,自定义气泡内容。

💌 消息

#content 插槽 优先级更高,content 属性将失效。 no-padding 属性可以禁用气泡内容内边距。

变体和形状

通过 variant 属性设置气泡的填内置样式格式。通过 shape 属性设置气泡的形状。当然你也可以两两结合,搭配使用

💌 消息

默认情况下,variantfilledshaperound

shapecorner 时,placement="end" 会自动将气泡翻转,使得右上角的 弧度针 指向用户。

控制打字

💩 更好的控制中断输出、继续打字和销毁等操作

💡 提示

😸 内置 Typewriter 组件。将 Typewriter 组件内的所有属性方法挂载到 Bubble 组件上,方便在敏捷开发中使用。

💌 消息

🐒 如果你觉得内置的 Typewriter 组件,不能满足你的需求,还可以 使用 #content 插槽对 Bubble 组件进行定制化开发。 使用 #content, 内置的 Typewriter 组件将会失效。在插槽中,你也可以自行和 Typewriter 组合使用,也可以自定义 流式请求流式渲染 等个性化操作。

属性

属性名
类型默认值说明
contentString''气泡内要展示的文本内容
placementString'start'气泡的位置,可选值为 'start''end',分别表示左侧和右侧。
avatarString''气泡头像的图片地址
loadingBooleanfalse是否显示加载状态。为 true 时,气泡内会显示加载状态。
shapeStringnull气泡的形状,可选值为 'round'(圆角)或 'corner'(有角)。
variantString'filled'气泡的样式变体,可选值为 'filled'(填充)、'borderless'(无边框)、'outlined'(轮廓)、'shadow'(阴影)。
noStyleBooleanfalse是否去除样式,为 true 时,将去除气泡内置 padding背景色
isMarkdownBooleanfalse是否将 content 内容作为 Markdown 格式处理。
typingBoolean | Objectfalse是否开启打字效果。若为对象,可设置 step(每次渲染的字符数)和 suffix(打字光标后缀内容)。interval 表示打字间隔时间,单位为 ms
maxWidthString'500px'气泡内容的最大宽度。
avatar-sizeString''设置头像占位大小
avatar-gapString'12px'设置头像和气泡之间的 gap
avatar-shapeString''头像形状,可选值为 'circle'(圆形)或 'square'(方形)。
avatar-iconString''头像图标,优先级高于 avatar,支持传入图标名称,如 'user'
avatar-src-setString''设置头像图片 srcset 属性
avatar-altString''设置头像图片 alt 属性
avatar-fitString'cover'设置头像图片的 object-fit 属性,可选属性值:'cover''contain''fill''none''scale-down'

事件

事件名参数类型描述
@startref 实例Function打字效果开始时触发
@finishref 实例Function打字效果完成时触发
@writingref 实例Function打字中实时触发
@avatarErrorref 实例Function头像加载失败时触发

Ref 实例方法

属性名类型描述
interruptFunction中断打字。
continueFunction继续未完成的打字。
restartFunction重新开始打字。
destroyFunction主动销毁 Bubble 组件。
renderedContentString获取打字组件渲染的内容。
isTypingBoolean是否正在打字。
progressNumber打字进度,取值范围 0 - 100。

插槽

插槽名参数类型描述
#avatar-Slot自定义头像展示内容
#header-Slot自定义气泡顶部展示内容
#content-Slot自定义气泡展示内容
#loading-Slot自定义气泡加载状态展示内容
#footer-Slot自定义气泡底部展示内容

功能特性

  1. 布局方向 - 支持左对齐(start)和右对齐(end)
  2. 内容类型 - 支持纯文本、Markdown、自定义插槽内容
  3. 加载状态 - 内置加载动画,支持自定义加载内容
  4. 视觉效果 - 提供多种形状和变体(圆角/直角、填充/描边/阴影等)
  5. 打字动画 - 支持渐进式文字输出效果
  6. 灵活插槽 - 提供头像、头部、内容、底部、加载状态等插槽