今天遇到一個新的需求,點擊按鈕查看圖片,且圖片能放大縮小。如下圖:

想到了使用element-ui的el-image組件,官網示例:
<div class="demo-image__preview">
<el-image
style="width: 100px; height: 100px"
:src="url"
:preview-src-list="srcList">
</el-image>
</div>
<script>
export default {
data() {
return {
url: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
srcList: [
'https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg',
'https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg'
]
}
}
}
</script>
但該組件是點擊圖片實現的預覽,那怎么用按鈕觸發呢?
方法:給el-image標簽加上ref屬性
<span v-for="(img, index) in item.imgs" :key="index">
<button @click="previewPic(index)">點擊預覽</button> -->
<el-image
style="width: 100px; height: 100px"
:src="img"
:preview-src-list="item.imgs">
ref="previewImg"
</el-image>
</span>
methods內:
// 點擊按鈕預覽圖片
previewPic(index) {
this.$refs.preview[index].showViewer = true
}

這個組件用來實現類似上圖的圖片預覽,確實很好用
but。。這樣雖然可以實現預覽,但當頁面有多張圖片的時候,this.$refs.previewImg獲取到的是當前頁面所有的圖片,那么顯示預覽就會有問題
so,針對這種一個頁面多個圖片的問題,想要實現我一開始的需求,可以使用el-image-viewer(圖片查看器),話不多說,直接上代碼
<button @click="onPreview(img)">預覽</button>
<el-image-viewer
v-if="showViewer"
:on-close="closeViewer"
:url-list="[url]"
/>
<script>
// 導入組件
import ElImageViewer from 'element-ui/packages/image/src/image-viewer'
</script>
export default {
components: {
ElImageViewer
},
data() {
return {
showViewer: false, // 顯示查看器
url: ''
}
},
methods(){
// 點擊按鈕預覽圖片
onPreview(img) {
this.url = img
this.showViewer = true
},
// 關閉查看器
closeViewer() {
this.showViewer = false
},
}
因為我是只要按鈕展示點擊的那行的圖片,所以這樣就可以完美實現我的需求啦~~
記錄分享下
