<template>
<div class="image-container">
<div v-for="(key, value) in props.data" :key="value" class="image-wrapper">
<div class="tdesign-demo-image-viewer__base">
<t-image-viewer :images="[key]">
<template #trigger="{ open }: any">
<div class="tdesign-demo-image-viewer__ui-image">
<img alt="test" :src="String(key)" class="tdesign-demo-image-viewer__ui-image--img" />
<div class="tdesign-demo-image-viewer__ui-image--hover" @click="open">
<span><browse-icon size="1.4em" /> 预览</span>
</div>
</div>
</template>
</t-image-viewer>
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { BrowseIcon } from 'tdesign-icons-vue-next';
const props = defineProps({
data: {
type: Array,
default: () => {
[];
},
},
});
</script>
<style scoped>
.image-container {
display: flex;
}
.image-wrapper {
display: inline-block;
margin-right: 10px;
}
.userProfile_image {
width: 100px;
height: 100px;
}
.tdesign-demo-image-viewer__ui-image {
width: 100%;
height: 100%;
display: inline-flex;
position: relative;
justify-content: center;
align-items: center;
border-radius: var(--td-radius-small);
overflow: hidden;
}
.tdesign-demo-image-viewer__ui-image--hover {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
position: absolute;
left: 0;
top: 0;
opacity: 0;
background-color: rgba(0, 0, 0, 0.6);
color: var(--td-text-color-anti);
line-height: 22px;
transition: 0.2s;
}
.tdesign-demo-image-viewer__ui-image:hover .tdesign-demo-image-viewer__ui-image--hover {
opacity: 1;
cursor: pointer;
}
.tdesign-demo-image-viewer__ui-image--img {
width: auto;
height: auto;
max-width: 100%;
max-height: 100%;
cursor: pointer;
position: absolute;
}
.tdesign-demo-image-viewer__ui-image--footer {
padding: 0 16px;
height: 56px;
width: 100%;
line-height: 56px;
font-size: 16px;
position: absolute;
bottom: 0;
color: var(--td-text-color-anti);
background-image: linear-gradient(0deg, rgba(0, 0, 0, 0.4) 0%, rgba(0, 0, 0, 0) 100%);
display: flex;
box-sizing: border-box;
}
.tdesign-demo-image-viewer__ui-image--title {
flex: 1;
}
.tdesign-demo-popup__reference {
margin-left: 16px;
}
.tdesign-demo-image-viewer__ui-image--icons .tdesign-demo-icon {
cursor: pointer;
}
.tdesign-demo-image-viewer__base {
width: 160px;
height: 160px;
margin: 10px;
border: 4px solid var(--td-bg-color-secondarycontainer);
border-radius: var(--td-radius-medium);
}
</style>
vue3+tdesign组件实现图片渲染
于 2023-07-05 11:01:02 首次发布
这是一个使用Vue.js和TDesign组件库创建的图像查看器组件示例。模板中展示了如何遍历数据,显示图片并添加预览功能。点击图片时,会弹出一个预览窗口,该窗口由`t-image-viewer`组件提供。样式定义了图像容器和触发预览的hover效果。
摘要由CSDN通过智能技术生成