diff --git a/components/content/ProseImg.vue b/components/content/ProseImg.vue index b2f5af5..809a127 100644 --- a/components/content/ProseImg.vue +++ b/components/content/ProseImg.vue @@ -5,17 +5,91 @@ const props = defineProps<{ }>() const route = useRoute() +const isZoomed = ref(false) const resolvedSrc = computed(() => { if (!props.src) return '' - // 绝对路径直接用 if (props.src.startsWith('/') || props.src.startsWith('http')) return props.src - // 相对路径:基于当前路由拼接 const base = route.path.replace(/\/$/, '') return `${base}/${props.src}` }) + +function open() { + isZoomed.value = true +} + +function close() { + isZoomed.value = false +} + +function onKeydown(e: KeyboardEvent) { + if (e.key === 'Escape') close() +} + +onMounted(() => document.addEventListener('keydown', onKeydown)) +onUnmounted(() => document.removeEventListener('keydown', onKeydown)) + +