利用element-ui图片查看器el-image实现“点击文字显示放大图片功能“
需求:如图,点击表格中的文件名查看大图查看element-ui的image组件源码,里面有两个文件(image-viewwe.vue和main.vue)el-image-viewer小组件源码其中props参数:props: {urlList: {type: Array,default: () => []},zIndex: {type: Number,default: 2000},on.
·
需求:如图,点击表格中的文件名查看大图
查看element-ui的image组件源码,里面有两个文件(image-viewwe.vue和main.vue)
el-image-viewer小组件源码
其中props参数:
props: {
urlList: {
type: Array,
default: () => []
},
zIndex: {
type: Number,
default: 2000
},
onSwitch: {
type: Function,
default: () => {}
},
onClose: {
type: Function,
default: () => {}
},
initialIndex: {
type: Number,
default: 0
}
}
参数含义:
urlList 绑定的文件列表
zIndex 查看器层级
onSwitch 图片切换事件
onClose 查看器关闭事件
initialIndex 初始化展示哪张图片
看到这,网上很多方式是在需要的地方引入import ElImageViewer from 'element-ui/packages/image/src/image-viewer'
,然后使用就可以;但本人在使用中有bug出现(图片放大查看时,显示两层图片,旋转时明显);故还是采用el-image
<el-table-column
v-for="(item, index) in tableData.formThead"
:key="index"
align="center"
>
<template v-slot:default="scope">
<span
v-if="tableData.formTranslate[index] == '文件名' && tableData.formTheadEn[index] == 'file_url'"
class="file_name"
@click="onPreview(scope.row)"
>{{ scope.row.file_name }}</span>
<el-image
v-if="tableData.formTheadEn[index] == 'file_url'"
ref="preview"
class="hideImgDiv"
:src="defaultImg "
:preview-src-list="scope.row.file_url ? imageUrl : [defaultImg]"
>
</el-image>
</template>
</el-table-column>
data(){
return {
defaultImg: require('@/assets/default.png'),
imageUrl: []
}
},
methods: {
onPreview(row) { // 开启大图查看器
this.imageUrl = []
this.imageUrl.push(row.file_url)
// 调用image组件中的大图浏览图片方法
this.$refs.preview[0].clickHandler()
}
}
<style lang="scss" scoped>
.file_name {
cursor: pointer;
}
.file_name:hover {
color: #1890ff;
}
/*隐藏el-image图片组件中不需要展示的的img标签*/
.hideImgDiv {
/deep/ .el-image__inner {
display: none;
}
}
::v-deep .el-image-viewer__close { //关闭图片按钮
color: #ffffff;
right: 100px;
}
</style>
取经处:https://www.jianshu.com/p/53b2fa92965e
网上看到实现在预览大图时点击遮罩层关闭功能:
let t = this;
this.showViewer = true;
this.$nextTick(() => {
document.querySelector(".el-image-viewer__mask").onclick = function() {
t.showViewer = false;
};
});
更多推荐
已为社区贡献5条内容
所有评论(0)