- Главная
- Проекты на Vue
- Простая рисовалка на Vue.js
Простая рисовалка на Vue.js
Создание интерактивных элементов на сайте, таких как рисовалка, может показаться сложной задачей. Однако с современными фреймворками, например Vue.js, этот процесс становится удивительно простым и быстрым.
Реактивность Vue позволяет в реальном времени управлять состоянием приложения: размером кисти, цветом, отрисовкой линий — без необходимости вручную обновлять DOM. В результате разработчик может сосредоточиться на логике, а фреймворк берёт на себя синхронизацию интерфейса. Ниже вы можете увидеть и протестировать готовый компонент «Простой рисовалки», созданный именно на Vue.
Попробуйте прямо сейчас — проведите мышкой по холсту и оставьте свой первый штрих!
Внимание! Представленный код — это готовый компонент, но для его работы на странице должен быть установлен и подключен фреймворк Vue. Если вы начинающий разработчик, просто добавьте строку <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
в раздел <head> вашего HTML, и всё заработает.
Разбор кода компонента «Простой рисовалки»
Компонент состоит из трёх ключевых частей: разметки (HTML), стилей (CSS) и реактивной логики на Vue.
HTML-структура
Основной элемент — canvas, на котором происходит рисование. К нему привязаны обработчики событий мыши (@mousedown, @mouseup, @mousemove). Панель управления в footer содержит:
- Кнопки для изменения размера кисти (
+/-). - Текущее значение размера (
{{size}}), которое реактивно обновляется. - Поле выбора цвета (
input type="color"), связанное черезv-modelс переменнойcolor. - Кнопка очистки холста (
X).
CSS-оформление
Стили обеспечивают адаптивную и понятную структуру: холст занимает основную часть, а панель управления закреплена снизу. Используется Flexbox для выравнивания. Стили кнопок и инпута сделаны единообразно.
Логика на Vue.js (Composition API)
Реактивные данные (ref): Все изменяемые параметры (размер кисти size, цвет color, координаты, состояние нажатия is_pressed) объявлены как реактивные ссылки. Это означает, что Vue автоматически отслеживает их изменения и обновляет интерфейс.
Методы рисования
drawCircleиdrawLine— отвечают за отрисовку наCanvas. Они используют текущиеsizeиcolor.- Обработчики событий мыши (
handleMouseDown,handleMouseMove,handleMouseUp) фиксируют движение и вызывают методы отрисовки, создавая плавную линию.
Управление состоянием
increaseSize/decreaseSize— изменяют размер кисти в заданных пределах.clearCanvas— полностью очищает холст, пересоздавая его элемент.
Хук жизненного цикла (onMounted): После монтирования компонента инициализируется контекст Canvas (getContext('2d')) и задаются его размеры. Также добавлен обработчик на изменение размера окна (resize), который показывает диалог (в данном случае информационный) о том, что при изменении размера холст очищается.
Главное преимущество Vue в этом компоненте — декларативная связь данных с интерфейсом. Например, при изменении цвета через палитру переменная color обновляется автоматически, и все последующие линии рисуются уже новым цветом, без дополнительного кода для синхронизации.
От интерактивных рисовалок до сложных веб-приложений: ваши креативные идеи — наша техническая реализация
Эта простая рисовалка — лишь небольшой пример того, какие интерактивные компоненты можно быстро внедрить на сайт, чтобы повысить вовлеченность пользователей. Наша веб-студия специализируется на создании креативных, производительных и удобных интерфейсов с использованием Vue.js и других современных технологий. Если вам нужен уникальный интерактивный элемент, сложное веб-приложение или доработка существующего проекта — мы готовы помочь. Давайте обсудим ваш проект и воплотим идею в жизнь!