Введение
В этом проекте мы пошагово создадим простое веб-приложение - доску для рисования. Каждый шаг будет основываться на предыдущем, позволяя вам постепенно добавлять функциональность в приложение. В конце проекта у вас будет полностью функциональная доска для рисования, на которой пользователи смогут рисовать, изменять цвет кисти, настраивать размер кисти и очищать холст.
👀 Предпросмотр

🎯 Задачи
В этом проекте вы научитесь:
- настраивать HTML-структуру для веб-приложения с доской для рисования;
- создавать и получать 2D-контекст рендеринга для HTML-элемента
<canvas>; - реализовывать слушатели событий для отслеживания действий мыши при рисовании;
- добавлять кнопку "Очистить" и реализовывать функциональность очистки холста;
- создавать элемент ввода для выбора цвета и реализовывать функциональность изменения цвета кисти;
- добавлять диапазонный ввод для настройки размера кисти и реализовывать функциональность.
🏆 Достижения
После завершения этого проекта вы сможете:
- создавать базовую структуру веб-страницы с использованием HTML;
- использовать слушатели событий JavaScript для обработки взаимодействия с пользователем;
- работать с HTML-элементами
<canvas>для рисования; - стилизовать веб-приложение с использованием CSS;
- комбинировать HTML, CSS и JavaScript для создания функциональной доски для рисования.
Создайте HTML-структуру
Требования:
- Откройте файл
index.html. - Установите базовую HTML-структуру в
index.htmlс использованием холста, заголовка и элементов управления.
Функциональность:
- Создаются файлы проекта и базовая HTML-структура, но еще нет функциональности рисования.
Шаги:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="styles.css" />
<title>Drawing Board</title>
</head>
<body>
<header>
<h1>Drawing Board</h1>
</header>
<div class="container">
<div class="controls">
<input type="color" id="color-picker" value="#000000" />
<label for="brush-size">Размер кисти:</label>
<input type="range" id="brush-size" min="1" max="20" value="5" />
<button id="clear-btn">Очистить</button>
</div>
</div>
<script src="script.js"></script>
</body>
</html>
Добавление холста
Требования:
- В
index.htmlдобавьте элемент<canvas>с идентификатором "whiteboard" и размерами (ширина и высота), выбранными вами.
Функциональность:
- Холст будет добавлен на веб-страницу, но он не будет иметь никаких способностей рисования.
Шаги:
<body>
<header>
<h1>Drawing Board</h1>
</header>
<div class="container">
<!--add canvas-->
<canvas id="whiteboard" width="800" height="400"></canvas>
<div class="controls">
<input type="color" id="color-picker" value="#000000" />
<label for="brush-size">Размер кисти:</label>
<input type="range" id="brush-size" min="1" max="20" value="5" />
<button id="clear-btn">Очистить</button>
</div>
</div>
<script src="script.js"></script>
</body>
Добавление функциональности рисования
Требования:
- В
script.jsдобавьте код на JavaScript, чтобы включить рисование на холсте при нажатии и перемещении мыши. - Реализуйте слушатели событий для событий
mousedown,mouseupиmousemove.
Функциональность:
- Теперь пользователи могут рисовать на холсте с использованием мыши.
Шаги:
const canvas = document.getElementById("whiteboard");
const context = canvas.getContext("2d");
let drawing = false;
canvas.addEventListener("mousedown", () => {
drawing = true;
context.beginPath();
});
canvas.addEventListener("mouseup", () => {
drawing = false;
context.closePath();
});
canvas.addEventListener("mousemove", draw);
function draw(e) {
if (!drawing) return;
context.lineCap = "round";
context.lineTo(
e.clientX - canvas.getBoundingClientRect().left,
e.clientY - canvas.getBoundingClientRect().top
);
context.stroke();
context.beginPath();
context.moveTo(
e.clientX - canvas.getBoundingClientRect().left,
e.clientY - canvas.getBoundingClientRect().top
);
}
Этот код позволяет рисовать на холсте при нажатии и перемещении мыши.
Добавление функциональности очистки
Требования:
- В
script.jsдобавьте код на JavaScript, чтобы очистить холст при нажатии кнопки "Очистить". - Создайте кнопку в
index.htmlс идентификатором "clear-btn".
Функциональность:
- Пользователи могут очистить холст, чтобы начать новое рисование.
Шаги:
const clearButton = document.getElementById("clear-btn");
clearButton.addEventListener("click", () => {
context.clearRect(0, 0, canvas.width, canvas.height);
});
Этот код позволяет пользователям очистить холст, нажав кнопку "Очистить".
Добавление управления цветом кисти
Требования:
- В
script.jsдобавьте код на JavaScript, чтобы позволить пользователям выбирать цвет кисти с использованием элемента<input type="color">. - Создайте элемент выбора цвета в
index.htmlс идентификатором "color-picker".
Функциональность:
- Пользователи могут выбирать цвет для своей кисти.
Шаги:
const colorPicker = document.getElementById("color-picker");
colorPicker.addEventListener("input", (e) => {
context.strokeStyle = e.target.value;
});
Этот код позволяет пользователям выбирать цвет кисти с использованием элемента выбора цвета.
Добавление управления размером кисти
Требования:
- В
script.jsдобавьте код на JavaScript, чтобы позволить пользователям настраивать размер кисти с использованием элемента<input type="range">. - Создайте элемент ввода диапазона в
index.htmlс идентификатором "brush-size".
Функциональность:
- Пользователи могут изменить размер кисти, чтобы сделать более толстые или тонкие линии.
Шаги:
const brushSizeInput = document.getElementById("brush-size");
brushSizeInput.addEventListener("input", (e) => {
context.lineWidth = e.target.value;
});
Этот код позволяет пользователю настраивать размер кисти с использованием элемента ввода диапазона.
CSS-стилизация
Требования:
- Откройте файл
styles.css. - Добавьте CSS-стили, чтобы сделать веб-приложение визуально привлекательным.
Функциональность:
- Примените базовые стили к элементам веб-приложения.
Шаги:
body {
font-family: "Arial", sans-serif;
background-color: #f0f0f0;
margin: 0;
padding: 0;
}
header {
background: linear-gradient(135deg, #57efbf, #64a8e4);
color: #fff;
text-align: center;
padding: 20px 0;
}
.container {
display: flex;
flex-direction: column;
align-items: center;
margin-top: 20px;
background: linear-gradient(125deg, #67a5f5, #f3bbe0, #64a0e4, #d364e4);
border-radius: 10px;
padding: 10px;
}
canvas {
background-color: #f4f0eb;
background-size: cover;
border: 1px solid #919396;
box-shadow: 0 10px 20px rgba(16, 16, 16, 0.567);
}
.controls {
margin-top: 10px;
}
label {
font-weight: bold;
margin-right: 5px;
color: #fff;
}
input[type="color"],
input[type="range"] {
margin-right: 10px;
}
button {
padding: 10px 20px;
background-color: #4be2ed;
color: #fff;
border: none;
cursor: pointer;
border-radius: 5px;
transition: background-color 0.3s ease;
}
button:hover {
background-color: #dac765;
}
button:focus {
outline: none;
}
Запуск приложения
- Откройте
index.htmlв веб-браузере.
- Протестируйте приложение, добавляя расходы и проверяя, правильно ли обновляется список и сводка по расходам.
- Эффект страницы выглядит следующим образом:

Резюме
Поздравляем! Вы создали простое веб-приложение для рисования на доске, используя HTML, CSS и JavaScript. Пользователи могут рисовать на холсте, изменять цвет кисти и настраивать размер кисти.



