1.0.2 • Published 1 month ago

@tanzhenxing/zx-floating-bubble v1.0.2

Weekly downloads
-
License
ISC
Repository
-
Last release
1 month ago

zx-floating-bubble 浮动气泡

悬浮在页面边缘的可点击气泡,支持拖拽和磁吸效果。

平台兼容性

H5App小程序

基本使用

通过 icon 属性设置气泡的图标。

<template>
  <zx-floating-bubble icon="chat-o" @click="onClick" />
</template>

<script setup>
const onClick = () => {
  uni.showToast({
    title: '点击气泡',
    icon: 'none'
  });
};
</script>

自由拖拽和磁吸

通过 axis 属性设置拖拽方向,magnetic 属性设置磁吸方向。

  • axis: 可选值为 'x', 'y', 'xy', 'lock'。默认为 'y'
    • 'x': 只能在 x 轴方向拖拽
    • 'y': 只能在 y 轴方向拖拽
    • 'xy': 可以在 x 和 y 轴方向自由拖拽
    • 'lock': 禁止拖拽
  • magnetic: 可选值为 'x', 'y'
    • 'x': 拖拽释放后,自动吸附到 x 轴方向最近的边缘。
    • 'y': 拖拽释放后,自动吸附到 y 轴方向最近的边缘。
<template>
  <zx-floating-bubble
    axis="xy"
    icon="scan"
    magnetic="x"
    @offset-change="onOffsetChange"
  />
</template>

<script setup>
const onOffsetChange = (offset) => {
  console.log(`x: ${offset.x.toFixed(0)}, y: ${offset.y.toFixed(0)}`);
};
</script>

双向绑定 offset

使用 v-model:offset 控制浮动气泡的位置。

<template>
  <zx-floating-bubble v-model:offset="offset" axis="xy" icon="setting-o" />
  <view>当前位置: x: {{ offset.x.toFixed(0) }}, y: {{ offset.y.toFixed(0) }}</view>
  <button @click="resetPosition">重置位置</button>
</template>

<script setup>
import { ref } from 'vue';

const offset = ref({ x: 200, y: 400 });

const resetPosition = () => {
  offset.value = { x: 20, y: 300 };
};
</script>

自定义内容

通过默认插槽自定义气泡显示内容。

<template>
  <zx-floating-bubble axis="xy">
    <view style="font-size: 12px; color: white;">客服</view>
  </zx-floating-bubble>
</template>

API

Props

参数说明类型默认值
v-model:offset控制气泡位置,{ x: number, y: number }。x或y为-1时表示默认右下角Object{ x: -1, y: -1 }
axis拖拽的方向,可选值为 'x', 'y', 'xy', 'lock'String'y'
magnetic自动磁吸的方向,可选值为 'x', 'y'String-
icon气泡图标名称或图片链接,同 zx-iconname 属性String'chat-o'
gap气泡与窗口的最小间距,单位为 px。可为数字或对象{x: number, y: number}Number / Object24
v-model控制气泡的显示与隐藏 (uni-app中通常用 v-modelv-model:visible)Booleantrue

Events

事件名说明回调参数
click点击组件时触发event: MouseEvent
offset-change由用户拖拽导致位置改变后触发offset: { x: number, y: number }
update:offsetv-model:offset 更新时触发offset: { x: number, y: number }
update:modelValuev-model 更新时触发 (用于控制显示隐藏)value: boolean

Slots

名称说明
default自定义气泡显示内容

Methods

通过 ref 获取组件实例后,可以调用以下方法:

方法名说明参数
show显示气泡-
hide隐藏气泡-
toggle切换气泡显隐-
<template>
  <zx-floating-bubble ref="bubbleRef" />
  <button @click="toggleBubble">切换显示</button>
</template>

<script setup>
import { ref } from 'vue';
const bubbleRef = ref(null);

const toggleBubble = () => {
  bubbleRef.value?.toggle();
}
</script>