vue实现点击图片放大显示功能

此文章转载于福建开源社区http://www.fjkysq.com/blog/130.html

在使用VUE开发时,可能会遇到这么一个需求,第一个界面会出现小图片,用户可以点击小图片进入查看放大的图片。这种需求最容易出现在公众号上,毕竟手机屏幕太小,在展现文字及图片时,图片显示的空间就有限了,这个时候如果你可以点击这个图片,图片能放大到全屏,是否就可以满足这个需求了呢?那以下就是使用VUE完成这个功能,以下代码可做参考

 

父组件:

<template>
  <div >
//imgBaseUrl为图片URL
<img v-if="imgBaseUrl" style="width:100%" :src="imgBaseUrl"  @click.self="showBigImage(imgBaseUrl)">
//显示放大图片的组件
<ShowPhoto :visible="photoVisible" :url="bigImgUrl" @closeClick="()=>{photoVisible=false}"></ShowPhoto>
  </div>
</template>

export default {
  data() {
    return {
      photoVisible: false
          }
        },
  methods: {
  showBigImage(imgUrl) {//点击图片函数,点击后,把photoVisible设置成true
    if (imgUrl != "") {
      this.photoVisible = true;
      this.cacheInfo()
    }
  }
  }

 

子组件

<template>
    <div v-show="visible" @click="closeClick" class="showPhoto">
        <img class="img" :src="url" alt="图片加载失败">
    </div>
</template>

<script>
import {MessageBox} from 'mint-ui'
export default {
    props:{
        url: {
            type: String,
            default: ''
        },
        visible : {
            type: Boolean,
            default: false
        },
    },
    methods:{
        closeClick(){//子组件可以使用 $emit 触发父组件的自定义事件
            this.$emit('closeClick')
        }
    }
  }
</script>
<style lang="stylus" scoped>
.showPhoto
    position:fixed
    top:0
    left:0
    width: 100%
    height: 100%
    background: rgba(0,0,0,0.5)
    z-index: 999
    display: flex
    .img
        display: block
        margin: auto 0
        width 100%
        text-align: center;
</style>

 

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值