Vue项目中常见问题(35)放大镜操作完整

本文介绍了在Vue项目中如何实现放大镜效果,包括通过样式改变、事件绑定以及利用全局事件总线$bus进行组件间通信。详细讲解了放大镜功能的各个业务需求,如小图轮播、高亮显示、鼠标移动跟踪以及限制遮罩层范围等,并提供了关键代码示例。
摘要由CSDN通过智能技术生成

目录

gitee仓库地址:https://gitee.com/CMD-UROOT/sph-project/commits/master

业务需求1:

业务需求2:

 业务需求3:

 第一种方法:通过样式来改变

 第二种方法:

业务需求4:

业务需求5:

业务需求6:

 业务需求7:


gitee仓库地址:https://gitee.com/CMD-UROOT/sph-project/commits/master

大家根据上传历史进行查找你需要的代码

业务需求1:

完成小图的轮播图切换

 

<template>
  <div class="swiper-container" ref="cur">
    <div class="swiper-wrapper">
      <div class="swiper-slide" v-for="(slide,index) in skuImageList" :key="slide.id">
        <img :src="slide.imgUrl">
      </div>
    </div>
    <div class="swiper-button-next"></div>
    <div class="swiper-button-prev"></div>
  </div>
</template>

<script>

  import Swiper from 'swiper'
  export default {
    name: "ImageList",
    props:['skuImageList'], //接收父组件Detail传过来的数据
    watch:{
      //监听数据:可以保证数据一定ok,但是不能保证v-for遍历结构是否完事
      skuImageList(newValue,oldValue) {
        //nextTick:在下次DOM更新 循环结束之后 执行延迟回调。在修改数据之后 立即使用这个方法,获取更新后的 DOM。
        this.$nextTick(()=>{
          //当你执行这个回调的时候,保证服务器数据回来了,v-for执行完毕了[一定轮播图的结构有了]
              var mySwiper = new Swiper(this.$refs.cur, {
              // 如果需要前进后退按钮
              navigation: {
                  nextEl: '.swiper-button-next',
                  prevEl: '.swiper-button-prev',
              },
          });
        })
      }
    }
  }
</script>

<style lang="less" scoped>
  .swiper-container {
    height: 56px;
    width: 412px;
    box-sizing: border-box;
    padding: 0 12px;

    .swiper-slide {
      width: 56px;
      height: 56px;

      img {
        width: 100%;
        height: 100%;
        border: 1px solid #ccc;
        padding: 2px;
        width: 50px;
        height: 50px;
        display: block;

        &.active {
          border: 2px solid #f60;
          padding: 1px;
        }

        &:hover {
          border: 2px solid #f60;
          padding: 1px;
        }
      }
    }

    .swiper-button-next {
      left: auto;
      right: 0;
    }

    .swiper-button-prev {
      left: 0;
      right: auto;
    }

    .swiper-button-next,
    .swiper-button-prev {
      box-sizing: border-box;
      width: 12px;
      height: 56px;
      background: rgb(235, 235, 235);
      border: 1px solid rgb(204, 204, 204);
      top: 0;
      margin-top: 0;
      &::after {
        font-size: 12px;
      }
    }
  }
</style>

上面的代码写完后,我们会发现,每次只能显示一张轮播图,我们需要一次显示三张轮播图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值