vue实现点击图片放大显示功能_厦门子豪的博客-CSDN博客_vue 点击查看大图
vue 实现点击图片放大_qq_36320160的博客-CSDN博客_vue点击图片放大
使用element的:
element-ui Image组件中的隐藏功能el-image-viewer组件的使用_element ui el-image实现el-image-viewer功能-CSDN博客 巧用element-ui自带隐藏的图片查看器el-image-viewer浏览图片(附兼容IE骚操作)-CSDN博客
想通过点击这个按钮,显示大图预览
urlList 绑定的文件列表
zIndex 查看器层级
onSwitch 图片切换事件
onClose 查看器关闭事件
initialIndex 初始化展示哪张图片
:url-list="[url]" 一个图片数组的url可以写成这样的
<el-image> 可通过 previewSrcList
开启预览大图的功能。
<template>
<div class="wscn-http404-container">
<el-button @click="handlePreview">预览</el-button>
<el-image-viewer
v-if="isShowPics"
:on-close="closeViewer"
:url-list="srcList"
/>
</div>
</template>
<script>
import ElImageViewer from "element-ui/packages/image/src/image-viewer";
export default {
name: "Page404",
data() {
return {
srcList: [
"https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg",
"https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg",
],
isShowPics: false,
};
},
components: { ElImageViewer },
methods: {
handlePreview() {
this.isShowPics = true;
},
onPreview() {
this.isShowPics = true;
},
// 关闭查看器
closeViewer() {
this.isShowPics = false;
},
},
};
</script>
<style lang="scss" scoped></style>
以上方法不兼容IE!!!因为element没有将此组件暴露出去并经过webpack打包,直接引入该组件的话IE有兼容性问题,大多数网上的都是上面的方法。
第二种:这里我们利用已经暴露的Image组件包含的el-image-viewer来重新实现我们的目的,它由于暴露出来并经过webpack打包编译
因此以下方法是兼容IE的(推荐使用此方法,也无须再引入任何组件!):
调用Image 的源码中的image-viewer里面的方法,然后生成预览图片的框,然后通过查看按钮 将预览图片的数据拿到,再调用image-viewer中的clickHandler内置方法,该方法会将image-viewer中的是否显示的标识置为ture
<el-image> 可通过 previewSrcList
开启预览大图的功能。
<template>
<div>
<el-button @click="onPreview">预览</el-button>
<!-- 图片查看器(兼容ie) -->
<el-image
ref="preview"
class="hideImgDiv"
:src="url"
:preview-src-list="[url]"
></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>
父组件:
<template>
<div>
<!-- imgBaseUrl为图片URL-->
<!-- <img v-if="imgBaseUrl" style="width:100%" :src="imgBaseUrl" @click.self="showBigImage(imgBaseUrl)">
-->
<img
@click.self="showBigImage($event)"
src="~@/assets/img/liaojiewt/202141.png"
alt=""
/>
//显示放大图片的组件
<BigImg :visible="photoVisible" :url="bigImgUrl" @closeClick="()=>{photoVisible=false}"></BigImg>
</div>
</template>
import BigImg from "./BigImg.vue";
export default {
data() {
return {
photoVisible: false,
bigImgUrl: "",
}
},
methods: {
showBigImage(e) {//点击图片函数,点击后,把photoVisible设置成true
if (e != "") {
this.photoVisible = true;
this.bigImgUrl = e.currentTarget.src;
}
},
components: {
BigImg,
},
}
其他方法↓:
子组件:
<template>
<div v-show="visible" @click="closeClick" class="showPhoto">
<img class="img" :src="url" alt="图片加载失败" />
</div>
</template>
<script>
export default {
props: {
url: {
type: String,
default: "",
},
visible: {
type: Boolean,
default: false,
},
},
methods: {
closeClick() {
//子组件可以使用 $emit 触发父组件的自定义事件
this.$emit("closeClick");
},
},
};
</script>
<style lang="css" scoped>
.showPhoto {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.5);
z-index: 99999;
display: flex;
align-items: center;
justify-content: center;
}
.showPhoto .img {
display: block;
margin: auto 0;
max-width: 100%;
text-align: center;
}
</style>
点击按钮查看图片弹窗
百度的:
<el-image> 可通过 previewSrcList
开启预览大图的功能。
<template>
<div>
<!-- 按钮,点击后触发showImageDialog方法 -->
<el-button @click="showImageDialog">查看图片</el-button>
<!-- 图片弹窗 -->
<el-dialog
:visible.sync="dialogVisible"
title="图片展示"
:before-close="handleClose">
<!-- 使用el-image组件展示图片 -->
<el-image
style="width: 100%; height: 100%"
:src="imageUrl"
fit="contain"></el-image>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
// 图片URL imageUrl:'https://cbu01.alicdn.com/img/ibank/O1CN01ihj8QW1Em2cAGrjH4_!!2211281850393-0-cib.jpg',
// 控制弹窗显示的布尔值
dialogVisible: false
};
},
methods: {
// 显示图片弹窗的方法
showImageDialog() {
this.dialogVisible = true;
},
// 关闭弹窗前的回调,可以在这里编写清理操作
handleClose(done) {
this.dialogVisible = false;
done();
}
}
};
</script>
第二种:element 点击button弹出图片 运用自带隐藏的图片查看器el-image-viewer浏览图片_element 弹窗图片-CSDN博客
第三种:点击按钮(文字)调起elementUI大图预览_element点击按钮查看大图-CSDN博客
Element-UI的点击按钮实现图片预览功能_javascript_不一般的菜瓜-Vue
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>