Когда вы создаете элемент canvas, охватывающий весь экран, вы, вероятно, захотите отслеживать события изменения размера окна. Вы можете пойти дальше и использовать стиль, основанный на процентах, но вам придется помнить, чтобы перекрашивать ваш холст каждый раз, когда окно изменяется; когда размеры элемента холста изменяются (ширина или высота), сам холст очищается и эффективно сбрасывается (политики происхождения являются исключением).
Я предлагаю вам использовать что-то вроде этого:
window.addEventListener(
'resize',
function() {
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
MyRepaintCallback();
},
false);
Есть несколько соображений относительно вашей функции перекраски, выходящей за рамки этого вопроса. По крайней мере, будьте уверены, зная, что двойная буферизация, скорее всего, не даст вашему холсту мерцать между перерисовками вызовов.