开发预览 更新于 2026-05-10

ImagePreview 图片大图预览

全屏图片查看器,支持滚轮缩放、鼠标拖拽、键盘 +/− / 0 / Esc 控制。

基础用法

通常用一个缩略图触发预览:缩略图设为 cursor: zoom-in,点击时把 open 切到 true

  • 滚轮:缩放
  • 鼠标拖拽:平移
  • 键盘 + / -:缩放
  • 键盘 0:恢复 100%
  • 键盘 Esc:关闭
背景
缩略图
<script setup lang="ts">
import { ref } from 'vue';
import { CfImagePreview, CfButton } from '@chufix-design/vue';

const open = ref(false);
const src = 'https://images.unsplash.com/photo-1503023345310-bd7c1de61c7d?w=1600&h=900&fit=crop';
</script>

<template>
  <div style="display: flex; flex-direction: column; gap: 12px; align-items: flex-start;">
    <img
      :src="src.replace('1600&h=900', '320&h=180')"
      alt="缩略图"
      style="width: 200px; height: auto; border-radius: 8px; cursor: zoom-in;"
      @click="open = true"
    />
    <CfButton size="sm" @click="open = true">点击预览大图</CfButton>
    <CfImagePreview v-model="open" :src="src" alt="示例图" />
  </div>
</template>
<img src={thumbSrc} onClick={() => setOpen(true)} style={{ cursor: 'zoom-in' }} />
<CfImagePreview open={open} onOpenChange={setOpen} src={fullSrc} alt="示例" />

API

属性类型默认值说明
srcstring大图地址
altstring''替代文本
open / modelValueboolean受控显示状态
defaultOpenbooleanfalse非受控初始显示状态

事件:onOpenChange(open) / onClose()

反馈与讨论

ImagePreview 图片大图预览 的讨论

0
0 / 600
一键发送
正在加载评论...