vue.js - 如何将y和x坐标绑定到vue中的图像?
问题描述
我想用鼠标点击移动图像。我已经设置x
和y
鼠标移动了,但是我不知道如何将这些坐标绑定到图像上。
谁能帮我?我在用VUE.JS
解决方案
一种解决方案是绑定设置绝对位置的内联样式<img>
:
创建
<img>
标签:<img class="my-img">
对其进行样式设置,使其绝对定位:
.my-img { position: absolute; }
将其绑定
style
到设置top
(Y 坐标)和left
(X 坐标)的对象。在下面的示例中,我们绑定top
到一个名为的数据字段imgTop
和left
一个名为的数据字段imgLeft
。当我们的组件设置imgTop
时,<img>
'stop
将被设置为相同的值;同样对于left
和imgLeft
。稍后我们将添加imgTop
和imgLeft
数据字段。<img class="my-img" :style="{ top: imgTop, left: imgLeft }">
创建一个
<div>
以包含<img>
. 这个容器将代表可点击的区域,<img>
可以在其中移动。<div class="container"> <img class="my-img"> </div>
-
.container { width: 100vw; height: 100vh; }
在容器上设置
click
-event 处理程序。我们v-on:EVENT=METHOD
用来分配一个处理事件的方法(还有一个简写语法 --@EVENT=METHOD
)。我们稍后会添加该onClick
方法。<div class="container" @click="onClick">
在您的组件中创建
imgTop
andimgLeft
字段data
:extern default { data: () => ({ imgLeft: null, imgTop: null, }), }
在组件的
methods
.MouseEvent.clientX
请注意,处理程序将and格式化MouseEvent.clientY
为像素长度(追加px
),并将结果分配给imgLeft
andimgTop
。extern default { methods: { onClick(e) { this.imgLeft = `${e.clientX}px`; this.imgTop = `${e.clientY}px`; } } }
演示:
new Vue({
el: '#app',
data: () => ({
imgLeft: null,
imgTop: null,
}),
methods: {
onClick(e) {
this.imgLeft = `${e.clientX}px`;
this.imgTop = `${e.clientY}px`;
}
}
})
.container {
width: 100vw;
height: 100vh;
}
.img {
position: absolute;
}
<script src="https://unpkg.com/vue@2.5.17"></script>
<div id="app">
<div class="container" @click.stop="onClick">
<img class="img"
src="//placekitten.com/100/100"
width="100"
alt="kitty"
:style="{top: imgTop, left: imgLeft}">
</div>
</div>
推荐阅读
- c# - 通过 Project Interop 或 MPXJ 在 MPP 中过滤列
- pytorch - 100% CPU 和在 CPU 上运行 TorchScript 模块的计算机崩溃?
- java - 当我使用@ManyToMany 时如何获得另一个类的价值
- pyspark - 打印 RDD / Dataframe 的特定分区
- amazon-web-services - 通过控制台创建的“事物”的 aws iot mqtt 客户端 ID
- c++ - 在 VSCode 的输出视图中断开 CMake/Build 输出的行
- node.js - Cookie 发送到 localhost 但不发送到 https 域
- angular - Angular Material - 自定义列过滤器和默认过滤器不能一起工作
- c# - 如何使用 ASP.Net MVC 显示文件的文件名和下载链接?
- mongodb - 在 MongoDB 查询中仅对几个字段进行分组和保留