前言
隨着版本的更新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; } }