← Все вопросы

Как начать рисовать на странице сайта через Canvas?

Задан 27 месяцев назад1.5к просмотров2 ответа
6

Хочу нарисовать на странице простую графику — линии, прямоугольники, может что-то анимированное. Слышал про canvas, но не понимаю, с чего начать. Можно простой пример?

2 ответа

12
✓ Принятый ответ — помог автору

Рисование на странице делается через тег <canvas> и его JS-контекст. Сам canvas — это просто прямоугольная область («холст»), а всё рисование происходит в коде.

Шаг 1. Холст в HTML:

<canvas id="board" width="400" height="300"></canvas>

Важно: задавай размер через атрибуты width/height, а не через CSS — иначе картинка растянется и размылится.

Шаг 2. Получаем контекст и рисуем:

const canvas = document.getElementById('board');
const ctx = canvas.getContext('2d');

// прямоугольник
ctx.fillStyle = '#6366f1';
ctx.fillRect(20, 20, 120, 80);

// линия
ctx.beginPath();
ctx.moveTo(20, 150);
ctx.lineTo(200, 200);
ctx.strokeStyle = '#ec4899';
ctx.lineWidth = 3;
ctx.stroke();

// круг
ctx.beginPath();
ctx.arc(300, 100, 50, 0, Math.PI * 2);
ctx.fillStyle = '#10b981';
ctx.fill();

Основная идея: всё через объект ctx. fillRect — закрашенный прямоугольник, beginPath/moveTo/lineTo/stroke — линии, arc — дуги и круги. Текст рисуется через ctx.fillText('привет', x, y).

Для анимации просто перерисовывай холст в цикле requestAnimationFrame, предварительно очищая его ctx.clearRect(0, 0, canvas.width, canvas.height).

5

Уточню разницу для выбора инструмента: Canvas — это растр, ты рисуешь пиксели и потом уже не можешь «схватить» нарисованный круг как объект. Если нужны интерактивные фигуры с событиями (клик по конкретному элементу) — смотри в сторону SVG, там каждая фигура — отдельный DOM-узел. Canvas же лучше для игр, графиков и анимаций с тысячами элементов.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект