Assignment 05: Interactive Drawing
a simple interactive drawing site
Due Friday, 03/03 Monday, 03/06 by 11:59 pm
Overview
For this assignment, you will make an interactive scalable vector graphics (SVG) panel that allows the user to draw simple shapes. Your site must respond to clicks and mouse movement. At minimum, it should allow the user to draw lines, though you may add more functionality.
Purpose
The main purpose of this of this assignment is for you to get experience working with SVG objects and events in JavaScript. Your site should only include plain HTML, CSS, and JavaScript without including any external libraries or frameworks.
Resources
All of the documentation for the required HTML/CSS/JavaScript can be found on the Mozilla Web Docs site. Specifically, you may find the following documentation helpful:
Note. In order to get the location of the mouse during a click
or mousemove
event, you can use the fields clientX
and clientY
(for x- and y-coordinates, respectively). These coordinates will not generally be the same as the SVG coordinates for the element responding to the events. To get the SVG coordinates, you must offset clientX
and clientY
relative to the upper-left corner of the SVG element. For example, if svg
is the name of the SVG panel, you can do this as follows:
1
2
3
4
5
6
7
8
// svg is an svg element
const rect = svg.getBoundingClientRect();
// e is an event with a corresponding location:
// e.clientX and e.clientY
// x and y are coordinates of the event with the svg element
const x = e.clientX - rect.left;
const y = e.clientY - rect.top;
Specification
Your website must consist of three files:
index.html
style.css
draw.js
All of the files must be plain HTML/CSS/JavaScript (respectively) with no included libraries or frameworks.
-
index.html
should contain only contain the basic site structure, headings, and a singlesvg
element that is 600px wide by 400px tall. -
style.css
should contain basic styling of elements including svg elements -
draw.js
should include functions for interactions with the user that result in drawing on the svg panel. At minimum, the panel must respond to click and mouse movement events as depicted in the video above. Other functionality may be included for extra credit (see suggestions below).
Assessment
15 points total
- 10 points: valid HTML, CSS, and JavaScript submitted
- valid HTML syntax can be checked with an html validator
- valid CSS syntax can be checked with a css validator
- JavaScript loads and executes without issuing any errors or warnings
- 5 points: functionality
- SVG panel reacts to
click
andmousemove
drawing lines as illustrated in the video above
- SVG panel reacts to
Going Farther
Up to 5 points extra credit
-
Add functionality that allows the user to switch to drawing other shapes, for example rectangle, circles, ellipses, polygons, or more general paths.
-
Add functionality that allows the user to change the colors of the elements they draw.
-
Add functionality that allows the user to move elements once they have been drawn.