巧用element-ui自帶隱藏的圖片查看器el-image-viewer瀏覽圖片


前言

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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM