效果图

代码实现

<template>
<div>
<div style="position: relative;" class="box">
<img @mousemove="updatePositions"
src="https://img.pddpic.com/gaudit-image/2023-07-09/36b632c77506c42d1bc206924a054310.jpeg" alt="" /> <div v-if="moveVisiable" class="move" @mouseout="()=>moveVisiable = false" style="" @mousemove="updatePosition"
:style="draggableStyle"></div>
<div class="preview" v-if="moveVisiable">
<img :style="detailImageStyle"
src="https://img.pddpic.com/gaudit-image/2023-07-09/36b632c77506c42d1bc206924a054310.jpeg" width="800px"
height="800px" alt="" />
</div>
</div>
</div>
</template>
<script>
export default {
components: {},
data() {
return {
top: 0,
left: 0,
offset: {
x: 200,
y: 200
},
moveVisiable: false,
animationFrameId: null,
}
},
computed: {
detailImageStyle() {
return {
transform: `translate(${-this.offset.x}px, ${-this.offset.y}px)`
};
},
draggableStyle() {
return {
transform: `translate(${this.offset.x}px, ${this.offset.y}px)`
};
}
},
methods: {
name() { },
updatePositions(event) {
// console.log('event: ',event);
const {
clientX,
clientY
} = event;
const x = event.clientX - 50;
const y = event.clientY - 50; this.offset = {
x: Math.min(Math.max(x, 0), 300),
y: Math.min(Math.max(y, 0), 300)
};
this.moveVisiable = true;
},
updatePosition(event) {
const {
clientX,
clientY
} = event;
console.log('clientY: ', clientY, 'clientX: ', clientX);
if (!this.animationFrameId) {
this.animationFrameId = requestAnimationFrame(() => {
const x = event.clientX - 50;
const y = event.clientY - 50; this.offset = {
x: Math.min(Math.max(x, 0), 300),
y: Math.min(Math.max(y, 0), 300)
};
// this.offset = {
// x:x<0?0:x,
// y:y>300?300:y
// };
this.animationFrameId = null;
});
}
}
},
}
</script> <style scoped>
.box {
height: 400px;
width: 400px;
} .move {
cursor: move;
width: 100px;
height: 100px;
background-color: #faebd7a1;
position: absolute;
top: 0px;
border: 1px dashed orange;
} .preview {
overflow: hidden;
position: absolute;
width: 600px;
height: 600px;
left: 400px;
top: 0;
}
</style>

Vue实现商品详情鼠标移动+放大显示图片细节的更多相关文章

  1. AntDesign vue学习笔记(六)Table 显示图片

    AntDeign官网上没有table动态绑定显示图片的示例,baidu上搜索出来的大部分都是React语法,无法使用. 经过摸索,实现方法如下:以显示一个图片,一个按钮为例(picurl是返回的jso ...

  2. WPF通过鼠标滑轮缩放显示图片

    如果你使用WinForm比较难实现通过滚动鼠标滑轮来对图片进行缩放显示,那么,你应该考虑一下使用WPF,既然是下一代Windows客户端开发平台,明显是有一定优势的,不然,MS是吃饱了撑着.   首先 ...

  3. 整合GreyBox放大显示图片

    <s:iterator value="#request.photoList" id="photo" status="stu"> ...

  4. Js图片缩放代码 鼠标滚轮放大缩小 图片向右旋转

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 用js原生加jquery实现下拉跳转至商品详情页,上拉回到商品简介

    在做一个商城的项目时,做到商品详情页的时候需要实现这种下拉跳转到商品详情页加载许多图片,上拉回到商品简介的效果,并且需要用户在滑动时有一种费力的感觉.最初是通过iscroll插件实现的,但这个插件在使 ...

  6. Vue框架H5商城类项目商品详情点击返回弹出推荐商品弹窗的实现方案

    需求场景: 非推荐商品详情页返回的时候弹出弹窗推荐商品,点击弹窗按钮可以直接访问推荐商品: 只有直接进入商品详情页返回才会弹出推荐商品弹窗: 每个用户访问只能弹一次(除非清除缓存). 需求分析: 1. ...

  7. 基于css3的鼠标经过动画显示详情特效

    之前为大家分享过一款基于jquery的手风琴显示详情,今天给大家分享基于css3的鼠标经过动画显示详情特效.这款实例鼠标经过的时候基于中间动画放大,效果非常不错,效果图如下: 在线预览   源码下载 ...

  8. Ecshop商品详情页显示当前会员等级价格

    会员登录状态下,在ECSHOP商品详情页的本店售价中显示当前登录会员对应的等级价格,在未登录状态下,则还默认显示原来的本店售价. 解决方法: 这个需要修改ECSHOP程序代码来实现. 打开文件 /in ...

  9. ecshop 商品详情页显示同类别下的推荐商品

    1.打开goods.php文件找到下面代码 $smarty->assign('goods_rank', get_goods_rank($goods_id)); // 商品的销售排名 在上面的代码 ...

  10. 在ecshop商品详情页显示供货商

    好久没写文章了,隐约记得前几天有人问到这个问题:[如何在ecshop商品详情页面显示该商品的供货商?] 今天有时间整理下,分享给大家. 注:以下修改适用于ecshop2.7.2,其他版本未做测试. 1 ...

随机推荐

  1. Visual Studio 2022插件的安装及使用 - 编程手把手系列文章

    这次开始写手把手编程系列文章,刚写到C#的Dll程序集类库的博文,就发现需要先介绍Visual Studio 2022的插件的安装及使用,因为在后面编码的时候会用到这些个插件,所以有必要先对这个内容进 ...

  2. 预约直播|3月30日下周四,应用促活大揭秘,快速提升DAU

    [导读] 日常运营过程中,消息推送是App触达用户的常用手段,无论是新功能的通知,还是活动的提醒,都可以通过推送告知用户.千人千面的个性化推送,对于提升用户粘性.用户转化等指标都具有明显正向效果.越来 ...

  3. openGauss/MogDB-3.0.0 dcf测试(非om安装)

    openGauss/MogDB-3.0.0 dcf 测试(非 om 安装) 本文出处:https://www.modb.pro/db/402037 IP 地址 ... LERDER ... FOLLO ...

  4. 本周三晚19:00Hello HarmonyOS应用篇第7课—分布式应用开发

    6月15日19:00 Hello HarmonyOS系列应用篇迎来的本系列直播课的最后一课,将会有怎样的精彩呈现呢?   万物互联的时代已经来临,如果你想运用过往的技术,开发一个有"跨设备操 ...

  5. 重新点亮linux 命令树————rpm软件包管理[十一七]

    前言 简单介绍一下软件管理 正文 软件包管理器 rpm 包和rpm 命令 yum 仓库 源代码编译安装 内核升级 grub配置文件 软件包管理器: 包管理器是为了方便软件安装.卸载,解决软件依赖关系的 ...

  6. Vue3实现图片滚轮缩放和拖拽

    在项目开发中遇到一个需求: 1:用鼠标滚轮可对图片进行缩放处理 2:点击按钮可对图片进行缩放处理 3:可对图片进行拖拽处理 我在开发中通过自己实现与百度查看优秀的铁子进行了两种类型的使用 <te ...

  7. Hologres如何支持超高基数UV计算(基于roaringbitmap实现)

    简介: 本文将会介绍Hologres基于roaringbitmap实现超高基数的UV计算 RoaringBitmap是一种压缩位图索引,RoaringBitmap自身的数据压缩和去重特性十分适合对于大 ...

  8. Django之路由层、视图层、模板层介绍

    一.Django请求生命周期 1.路由层urls.py Django 1.11版本 URLConf官方文档 1.1 urls.py配置基本格式 from django.conf.urls import ...

  9. Dubbo SPI-Wrapper

    前言 在Dubbo SPI中是通过Wrapper实现AOP,对于AOP相信大家都不陌生,这里不做的过多的介绍,我们主要来了解Dubbo SPI中是如何使用Wrapper类以及实现的细节. 使用场景 D ...

  10. Higress 基于自定义插件访问 Redis

    简介 基于 wasm 机制,Higress 提供了优秀的可扩展性,用户可以基于 Go/C++/Rust 编写 wasm 插件,自定义请求处理逻辑,满足用户的个性化需求,目前插件已经支持 redis 调 ...