Как я могу автоматически масштабировать <canvas>
элемент HTML5, чтобы он соответствовал странице?
Например, я могу получить <div>
в масштабе, установив height
и width
свойства на 100%, но <canvas>
не будет масштабироваться, будет ли он?
javascript
html
html5-canvas
Devyn
источник
источник
Ответы:
Я считаю, что нашел элегантное решение для этого:
JavaScript
CSS
До сих пор не оказал большого негативного влияния на производительность.
источник
body, html { margin: 0px;}
Следующее решение сработало для меня лучше всего. Поскольку я относительно новичок в кодировании, мне нравится получать визуальное подтверждение того, что что-то работает так, как я ожидаю. Я нашел это на следующем сайте: http://htmlcheats.com/html/resize-the-html5-canvas-dyamically/
Вот код:
Синяя рамка показывает край изменяемого размера холста и всегда находится вдоль края окна, видимого со всех четырех сторон, что НЕ было случаем для некоторых других приведенных выше ответов. Надеюсь, поможет.
источник
overflow: hidden
Иdisplay: block
то , что не хватает для меня , чтобы получить эту работу должным образом.По сути, вам нужно привязать событие onresize к своему телу. После того, как вы поймаете событие, вам просто нужно изменить размер холста, используя window.innerWidth и window.innerHeight.
источник
Установка ширины и высоты координатного полотна на основе размеров клиента браузера требует изменения размера и перерисовки при каждом изменении размера браузера.
Менее запутанное решение состоит в том, чтобы поддерживать прорисовываемые размеры в переменных Javascript, но устанавливать размеры холста на основе размеров screen.width, screen.height. Используйте CSS, чтобы соответствовать:
Окно браузера, как правило, никогда не будет больше, чем сам экран (за исключением случаев, когда разрешение экрана искажено, как это может быть при несовпадающих двойных мониторах), поэтому фон не будет отображаться и пропорции пикселей не будут меняться. Пиксели холста будут прямо пропорциональны разрешению экрана, если вы не используете CSS для масштабирования холста.
источник
Чистый CSS подход добавление к раствору @jerseyboy выше.
Работает в Firefox (тестирование в v29), Chrome (тестирование в v34) и Internet Explorer (тестирование в v11).
Ссылка на пример: http://temporaer.net/open/so/140502_canvas-fit-to-window.html
Но будьте осторожны, как пишет @jerseyboy в своем комментарии:
источник
источник
Если вы не хотите, чтобы холст автоматически масштабировал данные вашего изображения (об этом говорит ответ Джеймса Блэка, но он будет выглядеть не очень красиво), вам придется изменить его размер самостоятельно и перерисовать изображение. Центрирование холста
источник
Если ваш div полностью заполнил веб-страницу, то вы можете заполнить этот div и получить холст, который заполняет div.
Это может показаться вам интересным, так как вам может понадобиться использовать CSS для использования процентного соотношения, но это зависит от того, какой браузер вы используете, и насколько он соответствует спецификации: http://www.whatwg.org/ функции / веб-приложения / текущие работы / многостраничный / холст-element.html # холст-элемент
Вам может понадобиться получить offsetWidth и высоту div, или получить высоту / ширину окна и установить его в качестве значения пикселя.
источник
CSS
JavaScript
источник
Если вы заинтересованы в сохранении пропорций и в чистом CSS (учитывая соотношение сторон), вы можете сделать что-то вроде ниже. Ключ
padding-bottom
на::content
элемент , который изменяет размерcontainer
элемента. Это размер относительно ширины его родителя, который100%
по умолчанию. Указанное здесь соотношение должно совпадать с соотношением размеровcanvas
элемента.источник
Используя jQuery, вы можете отслеживать изменение размера окна и ширину холста, используя также jQuery.
Что-то такое
источник
источник
Я думаю, что именно это мы и должны делать: http://www.html5rocks.com/en/tutorials/casestudies/gopherwoord-studios-resizing-html5-games/
источник
Я использую sketch.js, поэтому после запуска команды init для canvas я изменяю ширину и высоту с помощью jquery. Размеры основываются на родительском элементе.
источник