文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

vue3怎么使用useMouseInElement实现图片局部放大预览效果

2023-07-05 13:46

关注

本文小编为大家详细介绍“vue3怎么使用useMouseInElement实现图片局部放大预览效果”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue3怎么使用useMouseInElement实现图片局部放大预览效果”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

1、首先要安装@vueuse/core

npm i @vueuse/core

2、实现过程如下:

<template>  <div class="goods-image">    <!-- 大图 -->    <div v-show="show" class="large" :></div>    <!-- 中图 -->    <div class="middle" ref="target">      <img :src="images[currIndex]" alt="">      <!-- 遮罩色块 -->      <div v-show="show" class="layer" :></div>    </div>    <!-- 小图 -->    <ul class="small">      <li v-for="(img,i) in images" :key="img" :class="{active:i===currIndex}">        <img @mouseenter="currIndex=i" :src="img" alt="">      </li>    </ul>  </div></template><script>import { reactive, ref, watch } from 'vue'import { useMouseInElement } from '@vueuse/core'export default {  name: 'HelloWorld',  props: {    images: {      type: Array,      default: () => ['https://file.lsjlt.com/upload/202307/04/duq0tz5tv0a.jpg',        'https://file.lsjlt.com/upload/202307/04/tizgml3yma3.jpg',        'https://file.lsjlt.com/upload/202307/04/mxq5pqj0nfs.jpg',        'https://file.lsjlt.com/upload/202307/04/3xoxsnhn3gd.jpg',        'https://file.lsjlt.com/upload/202307/04/a1iqcfcnwpw.png',]    }  },  setup (props) {    // 当前预览图的索引    const currIndex = ref(0)    // 1. 是否显示遮罩和大图    const show = ref(false)    // 2. 遮罩的坐标(样式)    const layerPosition = reactive({      left: 0,      top: 0    })    // 3. 大图背景定位(样式)    const largePosition = reactive({      backgroundPositionX: 0,      backgroundPositionY: 0    })    // 4. 使用useMouseInElement得到基于元素左上角的坐标和是否离开元素数据    const target = ref(null)    const { elementX, elementY, isOutside } = useMouseInElement(target)    watch([elementX, elementY, isOutside], () => {      // 5. 根据得到数据设置样式数据和是否显示数据      show.value = !isOutside.value      // 计算坐标      const position = { x: 0, y: 0 }      if (elementX.value < 100) position.x = 0      else if (elementX.value > 300) position.x = 200      else position.x = elementX.value - 100      if (elementY.value < 100) position.y = 0      else if (elementY.value > 300) position.y = 200      else position.y = elementY.value - 100      // 给样式赋值      layerPosition.left = position.x + 'px'      layerPosition.top = position.y + 'px'      largePosition.backgroundPositionX = -2 * position.x + 'px'      largePosition.backgroundPositionY = -2 * position.y + 'px'    })    return { currIndex, show, layerPosition, largePosition, target }  }}</script><style scoped lang="less">.goods-image {  width: 480px;  height: 400px;  position: relative;  display: flex;  z-index: 500;  .large {    position: absolute;    top: 0;    left: 412px;    width: 400px;    height: 400px;    box-shadow: 0 0 10px rgba(0,0,0,0.1);    background-repeat: no-repeat;    background-size: 800px 800px;    background-color: #f8f8f8;  }  .middle {    width: 400px;    height: 400px;    background: #f5f5f5;    position: relative;    cursor: move;    img{      width: 100%;      height: 100%;    }    //cursor: pointer;    .layer {      width: 200px;      height: 200px;      background: rgba(0,0,0,.2);      left: 0;      top: 0;      position: absolute;    }  }  .small {    width: 80px;    li {      width: 68px;      height: 68px;      margin-left: 12px;      margin-bottom: 15px;      cursor: pointer;      img{        width: 100%;        height: 100%;      }      &:hover,&.active {        border: 2px solid #27BA9B;      }    }  }}</style>

3、使用:在其他的.vue文件中导入组件即可使用

例如:

import HelloWorld from "@/components/HelloWorld.vue";<HelloWorld ></HelloWorld>

读到这里,这篇“vue3怎么使用useMouseInElement实现图片局部放大预览效果”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯