#canvasSignature
{
width: 100%;
height: 100%;
background-color: #F0F0F0;
border: 1px solid Black;
cursor: crosshair;
}
Это не хорошо! Как правило, вы никогда не хотите изменять ширину / высоту CSS холста.
Вы буквально растягиваете холст размером 300x150, чтобы наклонить весь экран. Это, вероятно, источник 99% проблем с мышью.
Причина, по-видимому, хорошая в направлении y, это просто совпадение: холст по умолчанию имеет размер 300x150, и у вас есть div, высота которого составляет 150, поэтому CSS не вызывает перекоса. Но если бы вы хотели, чтобы div был выше 200, вы бы тоже увидели проблему!
Вам необходимо установить высоту и ширину холста в качестве атрибутов, а , а не в качестве свойств CSS:
<canvas id="canvasSignature" width="500" height="150"></canvas>
Или в JavaScript:
var can = document.getElementById('canvasSignature');
can.width = 500;
can.height = 150;
Похоже, вы хотите, чтобы ширина холста изменялась динамически. Это нормально, но вы должны сделать одну из нескольких вещей. Можно было бы использовать событие onresize
окна и устанавливать ширину холста, равную div clientWidth, каждый раз, когда это происходит (если, конечно, clientWidth изменился). Другим было бы сделать простой общий таймер, чтобы проверять одно и то же каждые полсекунды или около того.
Обратите внимание, что я не проверял правильность вашей функции getPosition. Там могут быть другие ошибки, которые могут быть отдельной проблемой, но, вероятно, все в порядке.