Я искал решение какое-то время, но ничего не нашел. Возможно, это только мои поисковые термины. Ну, я пытаюсь сделать центр холста в соответствии с размером окна браузера. Холст 800x600. И если окно становится ниже 800x600, оно также должно изменяться (но это не очень важно на данный момент)
Как центрировать холст в html5
Ответ 1
Дайте холсту следующие свойства стиля CSS:
canvas {
    padding-left: 0;
    padding-right: 0;
    margin-left: auto;
    margin-right: auto;
    display: block;
    width: 800px;
}
Edit
Поскольку этот ответ довольно популярен, позвольте мне добавить немного более подробную информацию.
Вышеуказанные свойства будут горизонтально центрировать холст, div или любой другой node у вас относительно родителя. Нет необходимости менять верхнее или нижнее поля и прокладки. Вы указываете ширину и позволяете браузеру заполнять оставшееся пространство с помощью автоматических полей.
Однако, если вы хотите набрать меньше, вы можете использовать любые сокращенные свойства css, которые вы хотите, например
canvas {
    padding: 0;
    margin: auto;
    display: block;
    width: 800px;
}
При центрировании холста вертикально требуется другой подход. Вам нужно использовать абсолютное позиционирование и указать ширину и высоту. Затем установите для параметра left, right, top и bottom значение 0 и пусть браузер заполнит оставшееся пространство автоматическими полями.
canvas {
    padding: 0;
    margin: auto;
    display: block;
    width: 800px;
    height: 600px;
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
}
Холст будет центрировать себя на основе первого родительского элемента с position, установленного на relative или absolute, или тела, если его не найдено.
Другим подходом было бы использовать display: flex, который доступен в IE11
Кроме того, убедитесь, что вы используете недавний doctype, такой как xhtml или html 5.
Ответ 2
Вы можете дать вашему холсту свойства CSS ff:
#myCanvas
{
    display: block;
    margin: 0 auto;
}
Ответ 3
Просто центрируйте div в HTML:
  #test {
     width: 100px;
     height:100px;
     margin: 0px auto;
     border: 1px solid red;
   }
<div id="test">
   <canvas width="100" height="100"></canvas>
</div>
Просто измените высоту и ширину на все, и у вас есть центрированный div
Ответ 4
Вышеуказанные ответы работают только в том случае, если ваш холст имеет ту же ширину, что и контейнер.
Это работает независимо:
#container {
  width: 100px;
  height:100px;
  border: 1px solid red;
  
  
  margin: 0px auto;
  text-align: center;
}
#canvas {
  border: 1px solid blue;
  width: 50px;
  height: 100px;
  
}<div id="container">
  <canvas id="canvas" width="100" height="100"></canvas>
</div>Ответ 5
У меня была такая же проблема, как у меня есть картинки со многими разными ширинами, которые я загружаю только с информацией о высоте. Установка ширины позволяет браузеру растягивать и сжимать изображение. Я решаю проблему, располагая текстовую строку непосредственно перед выравниванием линии image_tag (также избавляясь от float: left;). Мне бы хотелось, чтобы текст оставался выровненным, но это небольшое неудобство, которое я могу терпеть.
