Простая рисовалка на Vue.js

Создание интерактивных элементов на сайте, таких как рисовалка, может показаться сложной задачей. Однако с современными фреймворками, например Vue.js, этот процесс становится удивительно простым и быстрым.

Реактивность Vue позволяет в реальном времени управлять состоянием приложения: размером кисти, цветом, отрисовкой линий — без необходимости вручную обновлять DOM. В результате разработчик может сосредоточиться на логике, а фреймворк берёт на себя синхронизацию интерфейса. Ниже вы можете увидеть и протестировать готовый компонент «Простой рисовалки», созданный именно на Vue.

Попробуйте прямо сейчас — проведите мышкой по холсту и оставьте свой первый штрих!

{{size}}

Изменили размер экрана?

Перезагрузите страницу

Внимание! Представленный код — это готовый компонент, но для его работы на странице должен быть установлен и подключен фреймворк Vue. Если вы начинающий разработчик, просто добавьте строку
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
в раздел <head> вашего HTML, и всё заработает.

Разбор кода компонента «Простой рисовалки»

Компонент состоит из трёх ключевых частей: разметки (HTML), стилей (CSS) и реактивной логики на Vue.

HTML-структура

Основной элемент — canvas, на котором происходит рисование. К нему привязаны обработчики событий мыши (@mousedown, @mouseup, @mousemove). Панель управления в footer содержит:

  1. Кнопки для изменения размера кисти (+/-).
  2. Текущее значение размера ({{size}}), которое реактивно обновляется.
  3. Поле выбора цвета (input type="color"), связанное через v-model с переменной color.
  4. Кнопка очистки холста (X).

CSS-оформление

Стили обеспечивают адаптивную и понятную структуру: холст занимает основную часть, а панель управления закреплена снизу. Используется Flexbox для выравнивания. Стили кнопок и инпута сделаны единообразно.

Логика на Vue.js (Composition API)

Реактивные данные (ref): Все изменяемые параметры (размер кисти size, цвет color, координаты, состояние нажатия is_pressed) объявлены как реактивные ссылки. Это означает, что Vue автоматически отслеживает их изменения и обновляет интерфейс.

Методы рисования

  1. drawCircle и drawLine — отвечают за отрисовку на Canvas. Они используют текущие size и color.
  2. Обработчики событий мыши (handleMouseDown, handleMouseMove, handleMouseUp) фиксируют движение и вызывают методы отрисовки, создавая плавную линию.

Управление состоянием

  1. increaseSize / decreaseSize — изменяют размер кисти в заданных пределах.
  2. clearCanvas — полностью очищает холст, пересоздавая его элемент.

Хук жизненного цикла (onMounted): После монтирования компонента инициализируется контекст Canvas (getContext('2d')) и задаются его размеры. Также добавлен обработчик на изменение размера окна (resize), который показывает диалог (в данном случае информационный) о том, что при изменении размера холст очищается.

Главное преимущество Vue в этом компоненте — декларативная связь данных с интерфейсом. Например, при изменении цвета через палитру переменная color обновляется автоматически, и все последующие линии рисуются уже новым цветом, без дополнительного кода для синхронизации.

От интерактивных рисовалок до сложных веб-приложений: ваши креативные идеи — наша техническая реализация

Эта простая рисовалка — лишь небольшой пример того, какие интерактивные компоненты можно быстро внедрить на сайт, чтобы повысить вовлеченность пользователей. Наша веб-студия специализируется на создании креативных, производительных и удобных интерфейсов с использованием Vue.js и других современных технологий. Если вам нужен уникальный интерактивный элемент, сложное веб-приложение или доработка существующего проекта — мы готовы помочь. Давайте обсудим ваш проект и воплотим идею в жизнь!