現在、html でキャンバス タグを使用する方法を学習しようとしていますが、ドキュメントに css を適用するときにマウス イベントの処理に問題があります。
キャンバスを含むdivを移動してページの中央に配置すると、問題が発生します。キャンバスの最初のポインは0ではありません。中央に配置され、何らかの理由で0,0が画面の先頭ではなく、画面の先頭になるためです。イベントリスナーをキャンバスに直接追加しているため、奇妙に感じました。
コードは次のとおりです。
<!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 をキャンバス タグに直接指定しようとしても機能しませんでした。そのため、基本的に必要なことは、そのキャンバスを中央に配置するか、画面の任意の場所に配置することです。ただし、最初のピクセルは 0,0 です。自動的にセンタリングされるため、ソリューションを追加するのは難しいため、オフセットを計算できるようにするにはユーザーの解像度を知る必要があるため、探しているのはcssなどで簡単に行う方法です。