vue 实现点击图片放大

分手后的思念是犯贱 2023-06-03 04:58 96阅读 0赞

作者QQ:1095737364 QQ群:123300273 欢迎加入!

1.建立子组件,来实现图片方法功能: BigImg.vue

  1. <template>
  2. <!-- 过渡动画 -->
  3. <transition name="fade">
  4.    <div class="img-view" @click="bigImg">
  5.      <!-- 遮罩层 -->
  6.      <div class="img-layer"></div>
  7.      <div class="img">
  8.        <img :src="imgSrc">
  9.      </div>
  10.   </div>
  11.   </transition>
  12. </template>
  13. <script>   export default {     props: ['imgSrc'],//接受图片地址
  14.     methods: {       bigImg() {       // 发送事件
  15.         this.$emit('clickit')       }     }   } </script>
  16. <style scoped>
  17.   /*动画*/   .fade-enter-active,   .fade-leave-active {     transition: all .2s linear;     transform: translate3D(0, 0, 0);   }   .fade-enter,   .fade-leave-active {     transform: translate3D(100%, 0, 0);   }   /* bigimg */   .img-view {     position: inherit;     width: 100%;     height: 100%;   }   /*遮罩层样式*/   .img-view .img-layer {     position: fixed;     z-index: 999;     top: 0;     left: 0;     background: rgba(0, 0, 0, 0.7);     width: 100%;     height: 100%;     overflow: hidden;   }   /*不限制图片大小,实现居中*/   .img-view .img img {     max-width: 100%;     display: block;     position: absolute;     left: 0;     right: 0;     margin: auto;     z-index: 1000;   } </style>

2.在父类中使用子组件:

  1. <template xmlns:v-on="http://www.w3.org/1999/xhtml">
  2.   <div class="contents">
  3.     <div class="group">
  4.       <div class="special">
  5.         <span v-text="pagedata.subtitle"></span>
  6.       </div>
  7.       <span class="text-muted" v-text="pagedata.headline"></span>
  8.       <div class="group_img">
  9.         <!-- 放大图片 -->
  10.         <big-img v-if="showImg" @clickit="viewImg" :imgSrc="imgSrc"></big-img>
  11.   
  12.         <div class="text" v-text="pagedata.article"></div>
  13.         <img id="smallImg" :src="pagedata.imgurl" @click="clickImg($event)">
  14.       </div>
  15.     </div>
  16.   </div>
  17. </template>
  18. <script> import BigImg from '../../index/moduleStyles/BigImg.vue'; export default {   data () {     return {       showImg:false,       imgSrc: ''     }   },   props: ['pagedata'],   computed: {},   components: { 'big-img':BigImg},   methods: {     clickImg(e) {       this.showImg = true;       // 获取当前图片地址
  19.       this.imgSrc = e.currentTarget.src;     },     viewImg(){       this.showImg = false;     },   },   watch: {}, } </script>
  20. <style>
  21. </style>

更多专业前端知识,请上 【猿2048】www.mk2048.com

发表评论

表情:
评论列表 (有 0 条评论,96人围观)

还没有评论,来说两句吧...

相关阅读