vue implements image preview function and displays it at the top of the pop-up window
1. Incomponents
Create a new folderImagePreview
Use preview-teleported to achieve image penetration function and let the previewed image be displayed at the top
The code is as follows:
<template> <el-image :src="`${realSrc}`" fit="cover" :style="`width:${realWidth};height:${realHeight};`" :preview-src-list="realSrcList" preview-teleported > <template #error> <div class="image-slot"> <el-icon><picture-filled /></el-icon> </div> </template> </el-image> </template> <script setup> import { isExternal } from "@/utils/validate"; const props = defineProps({ src: { type: String, default: "" }, width: { type: [Number, String], default: "" }, height: { type: [Number, String], default: "" } }); const realSrc = computed(() => { if (!) { return; } let real_src = (",")[0]; if (isExternal(real_src)) { return real_src; } return .VITE_APP_BASE_API + real_src; }); const realSrcList = computed(() => { if (!) { return; } let real_src_list = (","); let srcList = []; real_src_list.forEach(item => { if (isExternal(item)) { return (item); } return (.VITE_APP_BASE_API + item); }); return srcList; }); const realWidth = computed(() => typeof == "string" ? : `${}px` ); const realHeight = computed(() => typeof == "string" ? : `${}px` ); </script> <style lang="scss" scoped> .el-image { border-radius: 5px; background-color: #ebeef5; box-shadow: 0 0 5px 1px #ccc; :deep(.el-image__inner) { transition: all 0.3s; cursor: pointer; &:hover { transform: scale(1.2); } } :deep(.image-slot) { display: flex; justify-content: center; align-items: center; width: 100%; height: 100%; color: #909399; font-size: 30px; } } </style>
2. InRegister components within
import ImagePreview from "@/components/ImagePreview" // Global component mount('ImagePreview', ImagePreview)
3. Use on the page
<image-preview :src="images" style="height: 60px;width:60px;" />
This is the article about implementing the image preview function based on vue and displayed at the top of the pop-up window. For more related vue image preview content, please search for my previous articles or continue browsing the related articles below. I hope everyone will support me in the future!