今天遇到一个新的需求,点击按钮查看图片,且图片能放大缩小。如下图:
想到了使用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 }, }
因为我是只要按钮展示点击的那行的图片,所以这样就可以完美实现我的需求啦~~
记录分享下