如何使用JavaScript/JQuery以像素为单位打印鼠标拖动距离
How to print out a mouse drag distance in pixels using JavaScript/JQuery
我是JS和JQuery的新手,我正在实现一个简单的web应用程序:我使用16张图片制作地图(4x4网格)。当用户单击或释放鼠标时,控制台打印出鼠标的X和Y位置——我能够做到这一点。
如果用户单击并拖动鼠标,我需要打印出以像素为单位的拖动距离。我做了一些调查,但没能找到一个令人满意的答案。大多数解决方案都涉及对"画布"answers"上下文"的冗长操作,而我对此并不熟悉;JQuery中是否有一个简单的函数,允许您在知道其坐标后更改像素的颜色?否则,我该如何解决这个问题呢?
下面是我的代码:
'use strict';
function printMousePos(e){
var cursorX = e.clientX;
var cursorY = e.clientY;
console.log("X: " + cursorX + " Y: " + cursorY);
}
document.addEventListener("mouseup",printMousePos);
document.addEventListener("mousedown",printMousePos);
body{
margin:0;
}
.map img{
float:left;
width:25%;
}
<!DOCTYPE html>
<html>
<head lang="en">
<link rel="stylesheet" type="text/css" href="map.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.js"></script>
<script type="text/javascript" src="map.js"></script>
</head>
<body>
<div class="map" >
<img src="map_images/1.png">
<img src="map_images/2.png">
<img src="map_images/3.png">
<img src="map_images/4.png">
</div>
<div class="map">
<img src="map_images/5.png">
<img src="map_images/6.png">
<img src="map_images/7.png">
<img src="map_images/8.png">
</div>
<div class="map">
<img src="map_images/9.png">
<img src="map_images/10.png">
<img src="map_images/11.png">
<img src="map_images/12.png">
</div>
<div class="map">
<img src="map_images/13.png">
<img src="map_images/14.png">
<img src="map_images/15.png">
<img src="map_images/16.png">
</div>
</body>
</html>
我建议使用jQuery UI的draggable
函数。这使得实际获取拖动位置变得容易得多。
我只取了你的HTML代码的一个特定部分:
<div class="map" >
<img>1</img>
<img>2</img>
<img>3</img>
<img>4</img>
</div>
和我使用这个JS代码:
$(document).ready(function(e) {
$('.map img').mousedown(function(e) {
var cursorX = e.pageX;
var cursorY = e.pageY;
$('#mouseX').text('mouse x: ' + cursorX);
$('#mouseY').text('mouse y: ' + cursorY);
});
$('.map img').draggable(
{
drag: function(){
var offset = $(this).offset();
var xPos = offset.left;
var yPos = offset.top;
$('#posX').text('drag x: ' + xPos);
$('#posY').text('drag y: ' + yPos);
}
});
});
所以请记住,你需要在标题中包含jQuery和jQuery UI。
查看JSFIDDLE
相关文章:
- 如果宽度是百分比,如何设置以px为单位的图像高度
- 如何将datetime转换为以毫秒为单位的epoch时间javascript
- 每小时倒计时一次,但以30分钟为单位
- 以天为单位计算年龄-Javascript
- 是否可以使用javascript获取以em为单位的窗口宽度
- 获取以屏幕像素为单位的旋转SVG元素的边界
- GridStack项的高度和宽度(以像素为单位)
- 有没有一种方法可以检查javascript以毫秒为单位执行一个函数需要多长时间
- JQPlot's仪表-以针为单位显示值
- Moment.js unix时间戳,以分钟为单位显示以前的时间
- 从Javascript到C#获取正确的日期(以毫秒为单位)
- 远距离变换元素的宽度/高度(以像素为单位)
- 将 JavaScript 变量打印为 HTML 标记中的属性
- 如何在javascript中将字符串打印为html
- 将 JavaScript “for” 生成的数字推送到一个数组中,然后将每个数字打印为 HTML
- jquery匹配以px为单位的样式字体大小的元素
- 以周为单位计算日期差异(Javascript)
- 文本框的值打印为“未定义”
- 打印 3 年日历,以当月开始的月份为单位
- 如何使用JavaScript/JQuery以像素为单位打印鼠标拖动距离