Я искал решение какое-то время, но ничего не нашел. Возможно, это только мои поисковые термины. Ну, я пытаюсь сделать центр холста в соответствии с размером окна браузера. Холст 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;). Мне бы хотелось, чтобы текст оставался выровненным, но это небольшое неудобство, которое я могу терпеть.