- Html data canvas width
- Синтаксис
- Закрывающий тег
- HTMLCanvasElement: width property
- Value
- Examples
- Specifications
- Browser compatibility
- See also
- Found a content problem with this page?
- MDN
- Support
- Our communities
- Developers
- CANVAS шаг за шагом: Основы
- Прямоугольники
- Линии и дуги
- Кривые Бернштейна-Безье
- Добавим цвета
- Задача
- Html data canvas width
- Примеры использования
- Глобальные атрибуты
- Нюансы
- How to Resize HTML5 Canvas to Fit the Window?
- Setting the width and height Properties of the Canvas
- Set the Size with CSS
- Conclusion
Html data canvas width
Создает область, в которой при помощи JavaScript можно рисовать разные объекты, выводить изображения, трансформировать их и менять свойства. При помощи тега можно создавать рисунки, анимацию, игры и др.
Синтаксис
height Задает высоту холста. По умолчанию 300 пикселов. width Задает ширину холста. По умолчанию 150 пикселов.
Также для этого тега доступны универсальные атрибуты и события.
Закрывающий тег
HTML5 IE 8 IE 9 Cr Op Sa Fx
Результат примера в браузере Opera показан на рис. 1.
HTMLCanvasElement: width property
This is one of the two properties, the other being HTMLCanvasElement.height , that controls the size of the canvas.
Value
Examples
canvas id="canvas" width="300" height="300">canvas>
You can get the width of the canvas with the following code:
const canvas = document.getElementById("canvas"); console.log(canvas.width); // 300
Specifications
Browser compatibility
BCD tables only load in the browser
See also
- HTMLCanvasElement : Interface used to define the HTMLCanvasElement.width property
- HTMLCanvasElement.height : Other property used to control the size of the canvas
Found a content problem with this page?
This page was last modified on Apr 7, 2023 by MDN contributors.
Your blueprint for a better internet.
MDN
Support
Our communities
Developers
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2023 by individual mozilla.org contributors. Content available under a Creative Commons license.
CANVAS шаг за шагом: Основы
У нашего подопытного тега есть всего два атрибута — height и width, высота и ширина соответственно, по умолчанию размер холста 150х300 пикселей.
Стоит отметить что canvas создает область фиксированного размера содержимым которого управляют контексты.
Элементарный пример:
Если сохранить эти несчастные 13 строк в файл и открыть его браузером, то можно будет увидеть область с чёрным прямоугольником, так вот это и есть тот самый холст, на котором нарисован прямоугольник размеры которого равны размерам canvas’а.
Прямоугольники
Самой элементарной фигурой которую можно рисовать является прямоугольник. Предусмотрено три функции для отрисовки прямоугольников.
strokeRect(x, y, ширина, высота) // Рисует прямоугольник fillRect(x, y, ширина, высота) // Рисует закрашенный прямоугольник clearRect(x, y, ширина, высота) // Очищает область на холсте размер с прямоугольник заданного размера
var example = document.getElementById("example"), ctx = example.getContext('2d'); example.width = 640; example.height = 480; ctx.strokeRect(15, 15, 266, 266); ctx.strokeRect(18, 18, 260, 260); ctx.fillRect(20, 20, 256, 256); for (i = 0; i
А теперь краткий построчный разбор:
в строках 10 и 11 мы изменили размер холста — чтоб бы задуманное нами изображение полностью отобразилось,
в строках 12 и 13 мы нарисовали два не закрашенных прямоугольника которые будут символизировать своеобразную рамку нашей «шахматной доски»,
в строке 14 отрисовываем закрашенный прямоугольник размеры которого бы позволил вместить в себе 64 квадрата с шириной стороны 32 пикселя,
в строках с 15 по 19 у нас работает два цикла которые очищают на чёрном прямоугольнике квадратные области в таком порядке что бы в итоге полученное изображение было похоже на шахматную доску
Линии и дуги
beginPath() closePath() stroke() fill()
beginPath используется что бы «начать» серию действий описывающих отрисовку фигуры. Каждый новый вызов этого метода сбрасывает все действия предыдущего и начинает «рисовать» занова.
closePath является не обязательным действием и по сути оно пытается завершить рисование проведя линию от текущей позиции к позиции с которой начали рисовать.
Завершающий шаг это вызовом метода stroke или fill. Собственно первый обводит фигуру линиями, а второй заливает фигуру сплошным цветом.
Те кто когда-то на школьных 486х в былые годы рисовал в бейсике домик, забор и деревце по задумке учителя тот сразу поймёт часть ниже. Итак, существуют такие методы как,
moveTo(x, y) // перемещает "курсор" в позицию x, y и делает её текущей lineTo(x, y) // ведёт линию из текущей позиции в указанную, и делает в последствии указанную текущей arc(x, y, radius, startAngle, endAngle, anticlockwise) // рисование дуги, где x и y центр окружности, далее начальный и конечный угол, последний параметр указывает направление
В строке 14 заливается цветом дуга, в строке 22 обводится контур нашей короны.
Кривые Бернштейна-Безье
Что такое кривые Безье я думаю лучше объяснит Википедия.
Нам доступно две функции, для построения кубической кривой Бизье и квадратичной, соотвестствено:
quadraticCurveTo(Px, Py, x, y) bezierCurveTo(P1x, P1y, P2x, P2y, x, y)
x и y это точки в которые необходимо перейти, а координаты P(Px, Py) в квадратичной кривой это дополнительные точки которые используются для построения кривой. В кубическо кривой соответственно две дополнительные точки.
Пример двух кривых:
Добавим цвета
fillStyle = color // определяет цвет заливки strokeStyle = color // цвет линий цвет задается точно так же как и css, на примере все четыре способа задания цвета
// все четыре строки задают оранжевый цвет заливки ctx.fillStyle = "orange"; ctx.fillStyle = "#FFA500"; ctx.fillStyle = "rgb(255,165,0)"; ctx.fillStyle = "rgba(255,165,0,1)"
Аналогично задаётся и цвет для линий.
Возьмём пример с шахматной доской и добавим в него немного цвета:
var example = document.getElementById("example"), ctx = example.getContext('2d'); example.height = 480; example.width = 640; ctx.strokeStyle = '#B70A02'; // меняем цвет рамки ctx.strokeRect(15, 15, 266, 266); ctx.strokeRect(18, 18, 260, 260); ctx.fillStyle = '#AF5200'; // меняем цвет клеток ctx.fillRect(20, 20, 256, 256); for (i = 0; i
Задача
Что бы усвоить информацию и закрепить прочитанное на практике я всегда ставлю перед собой не большую цель которая бы одновременно охватывала всё прочитанное и одновременно процесс достижения которой было бы интересен мне самому. В данном случае я попытаюсь отрисовать уровень одной из моих самых любимых в детстве игр. Собственно за не имением времени — добавлять жизнь на него я не буду, а сделаю максимально понятный код охватывающий практически всё то что сегодня здесь описал.
Я воспроизвел один из уровней игры BattleCity известную у нас как Танчики, а вот и ссылка на pastebin на случай если не будет откликаться дропбокс.
На последок комментарий по примеру. В спецификациях картинки которую может выдавать Денди разрешение экрана должно быть 256×240 пикселей.
Поле боя в общеизвестнных Танчиках размером 13х13 больших блоков. Каждый из которых нарисован 4мя повторяющимися спрайтами (коих по общему подсчёту выходит на карте 26х26=676). Итак прикинем как было в оригинале по пикселам и как это правильно масштабировать. Если поделить 240 на 26 то выйдет что целая часть от деления будет 8. Получается что размерность текстуры была 8х8 пиксела т.е. размер поля боя 208х208, а большого блока 16х16. Ширина должна быть 256 пикселов. Сейчас вычислим размер правого столбца с дополнительной информацией и размер полей сверху/снизу. Справа если присмотреться ширина составляет размерность в два блока, итого 2*16=32. У нас уже 32+208=240 слева поле 16, а снизу и сверху соответственно так же по 16 пикселов. Собственно в моём примере размерность большого блока заключена в переменной cellSize, собственно все вычисления делаются иходя из её размеров. Можете по экспериментировать и поменять её значение, настоятельно рекомендую делать его кратным степеням двойки (16, 32, 64, 128. ), если хотите чтоб всё выглядело так как на старом добром денди то устанавливайте её значение равным 16. Хотя и при любых других значениях всё выглядит нормально. Если то как я пишу понравится кому-то кроме меня, то напишу продолжение, а то что в нём будет пока утаю
Html data canvas width
Тег — это элемент HTML, используемый для создания графики, анимации и интерактивных визуализаций на веб-странице с помощью JavaScript. Он предоставляет разработчикам платформу для рисования различных фигур, линий, текста и изображений.
Атрибуты тега :
Примеры использования
Для чего использовать тег
- Для игр с анимацией, графикой и интерактивностью.
- Для визуализации данных: диаграмм, графиков и схем.
- Для интерактивных карт, которые можно увеличивать или уменьшать, а также с интерактивными элементами — всплывающими окнами и маркерами.
- Для фильтров изображений. Например, можно менять яркость, контраст и оттенок.
- Для создания цифрового искусства.
- Для анимации, которая запускается при взаимодействии с пользователем или зависит от времени.
- Для образовательных ресурсов: симуляторов, интерактивных викторин и учебников.
Глобальные атрибуты
Нюансы
- Если атрибуты width или height имеют значение 0 или отрицательное значение, содержимое не будет отображаться на странице.
- Если атрибут id не указан, на нельзя ссылаться в JavaScript.
🖼️ Другие теги для графики и мультимедиа
«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.
How to Resize HTML5 Canvas to Fit the Window?
Sometimes, we may want to resize an HTML5 canvas to fit the window that it’s in.
In this article, we’ll look at how to resize an HTML5 canvas to fit the window.
Setting the width and height Properties of the Canvas
We can just set the width and height properties of the canvas as the window resizes to set the width and height of the canvas to change its size.
For instance, we can write:
const draw = (canvas) => < const ctx = canvas.getContext("2d"); ctx.beginPath(); ctx.arc(95, 50, 40, 0, 2 * Math.PI); ctx.stroke(); >const canvas = document.querySelector("canvas"); canvas.width = window.innerWidth canvas.height = window.innerHeight draw(canvas) window.addEventListener('resize', () => < canvas.width = window.innerWidth canvas.height = window.innerHeight draw(canvas) >)
to change the size of the canvas initialize to the window’s dimensions with:
canvas.width = window.innerWidth canvas.height = window.innerHeight
And we do the same thing in the resize event listener, which we added with the addEventListener method.
When the canvas resizes the content disappears, so they have to be drawn again whenever we resize the canvas by setting the width and height properties.
Set the Size with CSS
We can also set the size of the canvas with CSS to make it fill the screen.
For instance, we can write the following HTML:
to set the canvas’s width and height both to 100%.
We also set the position to absolute and top , left , right , and bottom to 0 to make the canvas fill the screen.
Also, we make the html and body elements fill the screen by setting the width and height to 100%.
And we can draw on it with:
const canvas = document.querySelector("canvas"); const ctx = canvas.getContext("2d"); ctx.beginPath(); ctx.arc(95, 50, 40, 0, 2 * Math.PI); ctx.stroke();
We draw a circle with the arc method.
We have the center x and y coordinates, radius, and start and end angles in radians as arguments in this order.
Conclusion
We can resize the canvas to fit the screen with JavaScript or CSS.