gpt4 book ai didi

javascript 鼠标坐标与 Canvas 和 css

转载 作者:行者123 更新时间:2023-11-28 02:03:54 27 4
gpt4 key购买 nike

好吧,现在我正在尝试学习如何在 html 上使用 canvas 标签,但是当我将 css 应用于文档时,我在处理鼠标事件时遇到了麻烦。

当我移动包含 Canvas 的 div 并将其置于页面中心时,问题就开始了, Canvas 的第一个 poing 不会是 0,因为它居中并且出于某种原因 0,0 将是屏幕的开始而不是 Canvas 的开头,我觉得这很奇怪,因为我直接将事件监听器添加到 Canvas 。

代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test</title>

<style type="text/css">
body {
font: 100%/1.4 Verdana, Arial, Helvetica, sans-serif;
background: #42413C;
margin: 0;
padding: 0;
color: #000;
}
#divId {
width: 800px;
height: 600px;
text-align:center;
margin: 20px auto;
background-color:#0099FF;
}
</style>

<script>
window.onload = function () {

var canvas = document.getElementById('canvasId');
var c = canvas.getContext('2d');
alert("lol");
canvas.addEventListener('mousedown', hmd, false);

function hmd(e) {
alert ("x: " + e.clientX + " y: " + e.clientY);
}

}
</script>
</head>

<body>

<div id="divId">

<canvas height="300" width="800" id="canvasId" />

</div>

</body>
</html>

所以我在某处读到问题是由 div 引起的,但是当我尝试将 css 直接提供给 canvas 标签时它不起作用,所以基本上我需要做的就是让 Canvas 居中或放置在任何地方屏幕,但其第一个像素为 0,0。添加一个解决方案会很困难,因为它会自动居中,所以我需要知道用户分辨率才能计算偏移量,所以我正在寻找一种简单地使用 css 或其他东西来完成它的方法。

最佳答案

要获取相对于 canvas 的坐标,请执行以下操作:

function hmd(e) {
var rx = e.pageX, ry = e.pageY;
rx -= canvas.offsetLeft;
ry -= canvas.offsetTop;
alert ("x: " + rx + " y: " + ry);
}

这假设您的 canvas 变量定义是全局的。

编辑:另一种方法:

function hmd(e) {
var rx, ry;
if(e.offsetX) {
rx = e.offsetX;
ry = e.offsetY;
}
else if(e.layerX) {
rx = e.layerX;
ry = e.layerY;
}
}

关于javascript 鼠标坐标与 Canvas 和 css,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12664189/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com