生成可自定义样式和带 Logo 的二维码,支持状态显示和下载功能。
<script setup lang="ts">
const qrValue = ref('https://example.com')
</script>
<template>
<FmQrcode :value="qrValue" :size="200" />
</template>| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
value | string | - | 必需。二维码内容 |
size | number | 200 | 二维码尺寸 (px) |
errorCorrectionLevel | 'L' | 'M' | 'Q' | 'H' | 'H' | 容错级别,越高可添加的 Logo 越大 |
logo | string | - | Logo 图片 URL(支持本地和网络图片) |
logoSize | number | 0.2 | Logo 相对二维码的比例(0-1) |
logoBackgroundColor | string | '#ffffff' | Logo 背景颜色 |
foregroundColor | string | '#000000' | 二维码前景色 |
backgroundColor | string | '#ffffff' | 二维码背景色 |
status | string | - | 状态:loading / expired / scanned / error 等 |
class | HTMLAttributes['class'] | - | 自定义 CSS 类 |
| 名称 | 说明 |
|---|---|
statusRender | 自定义状态渲染,slot props: { status: string } |
| 事件名 | 参数 | 说明 |
|---|---|---|
statusRender | status: string | 状态变化时触发 |
| 方法名 | 参数 | 说明 |
|---|---|---|
download | filename?: string | 下载二维码图片,默认文件名 qrcode.png |
<FmQrcode :value="'https://example.com'" :size="200" /><script setup lang="ts">
import logoSvg from '@/assets/images/logo.svg'
</script>
<template>
<!-- 本地图片 Logo -->
<FmQrcode :value="url" :size="200" :logo="logoSvg" />
<!-- 网络图片 Logo -->
<FmQrcode :value="url" :size="200" logo="https://example.com/logo.png" />
</template><FmQrcode
:value="url"
foreground-color="#1890ff"
background-color="#f0f2f5"
/><FmQrcode
:value="url"
:logo="logo"
:logo-size="0.3"
logo-background-color="#fff"
/><!-- 加载中状态 -->
<FmQrcode :value="url" status="loading" />
<!-- 已过期状态 -->
<FmQrcode :value="url" status="expired" />
<!-- 自定义状态渲染 -->
<FmQrcode :value="url" status="scanned">
<template #statusRender="{ status }">
<span v-if="status === 'scanned'">已扫描</span>
</template>
</FmQrcode><script setup lang="ts">
const qrRef = ref<InstanceType<typeof FmQrcode>>()
function downloadQr() {
qrRef.value?.download('my-qrcode.png')
}
</script>
<template>
<FmQrcode ref="qrRef" :value="url" />
<FmButton @click="downloadQr">下载二维码</FmButton>
</template>容错级别选择:
'H'(最高容错)'M' 或 'Q'Logo 图片:
尺寸设置:
size 控制显示尺寸状态遮罩:
status 后会显示半透明遮罩层loading 状态有旋转动画