-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
99 lines (87 loc) · 4.09 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
const gridContainer = document.querySelector("#container")
const resizeButton = document.querySelector("#resize")
const resetButton = document.querySelector("#reset")
const colorButton = document.querySelector("#setColour")
const randomiseButton = document.querySelector("#randomise")
let penColour = "Black"
let pixelDensity = 16 //number of "pixels" per side
function generateGrid () {
for (let i = 0; i < pixelDensity; i++) {
const pixelRow = document.createElement("div")
pixelRow.className = "row"
gridContainer.appendChild(pixelRow)
for (let i = 0; i < pixelDensity; i++) {
const unitPixel = document.createElement("div")
unitPixel.className = "pixel"
pixelRow.appendChild(unitPixel)
}
}
}
function clearGrid () {
while (gridContainer.firstChild) {
gridContainer.removeChild(gridContainer.firstChild)
}
}
function genColour () {
const cssColors = [
"AliceBlue", "AntiqueWhite", "Aqua", "Aquamarine", "Azure", "Beige", "Bisque", "Black",
"BlanchedAlmond", "Blue", "BlueViolet", "Brown", "BurlyWood", "CadetBlue", "Chartreuse",
"Chocolate", "Coral", "CornflowerBlue", "Cornsilk", "Crimson", "Cyan", "DarkBlue", "DarkCyan",
"DarkGoldenRod", "DarkGray", "DarkGreen", "DarkKhaki", "DarkMagenta", "DarkOliveGreen",
"DarkOrange", "DarkOrchid", "DarkRed", "DarkSalmon", "DarkSeaGreen", "DarkSlateBlue",
"DarkSlateGray", "DarkTurquoise", "DarkViolet", "DeepPink", "DeepSkyBlue", "DimGray",
"DodgerBlue", "FireBrick", "FloralWhite", "ForestGreen", "Fuchsia", "Gainsboro", "GhostWhite",
"Gold", "GoldenRod", "Gray", "Green", "GreenYellow", "HoneyDew", "HotPink", "IndianRed",
"Indigo", "Ivory", "Khaki", "Lavender", "LavenderBlush", "LawnGreen", "LemonChiffon",
"LightBlue", "LightCoral", "LightCyan", "LightGoldenRodYellow", "LightGreen", "LightGrey",
"LightPink", "LightSalmon", "LightSeaGreen", "LightSkyBlue", "LightSlateGray", "LightSteelBlue",
"LightYellow", "Lime", "LimeGreen", "Linen", "Magenta", "Maroon", "MediumAquaMarine",
"MediumBlue", "MediumOrchid", "MediumPurple", "MediumSeaGreen", "MediumSlateBlue",
"MediumSpringGreen", "MediumTurquoise", "MediumVioletRed", "MidnightBlue", "MintCream",
"MistyRose", "Moccasin", "NavajoWhite", "Navy", "OldLace", "Olive", "OliveDrab", "Orange",
"OrangeRed", "Orchid", "PaleGoldenRod", "PaleGreen", "PaleTurquoise", "PaleVioletRed",
"PapayaWhip", "PeachPuff", "Peru", "Pink", "Plum", "PowderBlue", "Purple", "RebeccaPurple",
"Red", "RosyBrown", "RoyalBlue", "SaddleBrown", "Salmon", "SandyBrown", "SeaGreen", "SeaShell",
"Sienna", "Silver", "SkyBlue", "SlateBlue", "SlateGray", "Snow", "SpringGreen", "SteelBlue",
"Tan", "Teal", "Thistle", "Tomato", "Turquoise", "Violet", "Wheat", "White", "WhiteSmoke",
"Yellow", "YellowGreen"
];
return cssColors[Math.floor(141*Math.random())]
}
resetButton.addEventListener("click", () => {
clearGrid();
generateGrid();
})
resizeButton.addEventListener("click", () => {
let newPixelDensity = parseInt(prompt("New side length?", 16))
if (isNaN(newPixelDensity) || newPixelDensity < 1) {
alert("No.")
} else if (newPixelDensity > 100) {
alert("Nahh.....")
} else {
pixelDensity = newPixelDensity
clearGrid();
generateGrid();
}
})
colorButton.addEventListener("click", () => {
penColour = (penColour === "Black" ? "White" : "Black")
colorButton.textContent = `Pen: ${penColour}`
})
randomiseButton.addEventListener("click", () => {
let pixels = document.querySelectorAll(".pixel")
pixels.forEach((pixel) => {
pixel.style.backgroundColor = genColour()
})
})
gridContainer.addEventListener("mouseout", (event) => {
console.log("triggered")
let pixels = document.querySelectorAll(".pixel")
pixels.forEach((pixel) =>{
if (event.relatedTarget === pixel) {
console.log("matched")
pixel.style.backgroundColor = penColour
}
})
})
generateGrid();