前言
隨着版本的更新Element UI新增了新的組件,例如:Image,這是官方文檔中有寫的


但我的需求並不是展示圖片后再點擊圖片打開大圖瀏覽,需求可能是一個文字,點擊后查看大圖,但又不想引入其他npm插件,例如這樣:

使用方法
通過翻看Image組件源碼,發現大圖預覽是一個小組件el-image-viewer
<template>
<div>
<el-button @click="onPreview">預覽</el-button>
<el-image-viewer v-if="showViewer" :on-close="closeViewer" :url-list="[url]" />
</div>
</template>
<script>
// 導入組件
import ElImageViewer from 'element-ui/packages/image/src/image-viewer'
export default {
name: 'Index',
components: { ElImageViewer },
data() {
return {
showViewer: false, // 顯示查看器
url:'https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg'
}
},
methods: {
onPreview() {
this.showViewer = true
},
// 關閉查看器
closeViewer() {
this.showViewer = false
}
}
</script>
值得注意的是,如果el-image-viewer組件在el-dialog里面,el-dialog的層級是優先的,因此我們需要屬性z-index去更改el-image-viewer組件樣式的層級:
<!-- 圖片查看器 -->
<el-image-viewer v-if="showViewer" :on-close="closeViewer" :url-list="[url]" index="9999"/>
補充:
以上方法不兼容IE!!!因為element沒有將此組件暴露出去並經過webpack打包,直接引入該組件的話IE有兼容性問題,大多數網上的都是上面的方法。
這里我們利用已經暴露的Image組件包含的el-image-viewer來重新實現我們的目的,它由於暴露出來並經過webpack打包編譯
因此以下方法是兼容IE的(推薦使用此方法,也無須再引入任何組件!):
<template>
<div>
<el-button @click="onPreview">預覽</el-button>
<!-- 圖片查看器(兼容ie) -->
<el-image
ref="preview"
class="hideImgDiv"
:src="url"
:preview-src-list="[url]"
z-index="9999"
></el-image>
</div>
</template>
<script>
export default {
name: 'Index',
data() {
return {
url:'https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg'
}
},
methods: {
onPreview() {
//調用image組件中的大圖瀏覽圖片方法
this.$refs.preview.clickHandler();
},
}
</script>
css:
/*隱藏el-image圖片組件中不需要展示的的img標簽*/ .hideImgDiv { /deep/ .el-image__inner { display: none; } }
