-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjavascript copy.js
More file actions
93 lines (77 loc) · 2.53 KB
/
Copy pathjavascript copy.js
File metadata and controls
93 lines (77 loc) · 2.53 KB
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
const container = document.querySelector('.container');
let eraseMode = false;
const modeButton = document.querySelector('button.mode');
modeButton.onclick = toggleMode;
function toggleMode() {
eraseMode = !eraseMode;
modeButton.textContent = eraseMode ? 'Draw' : 'Erase';
}
let gridSize = document.querySelector('input#gridSize').value;
createGrid(gridSize);
const resetButton = document.querySelector('button.reset')
resetButton.addEventListener('click', () => {
resetGrid();
})
const resizeButton = document.querySelector('button.resize');
resizeButton.addEventListener('click', () => {
resizeGrid();
});
const newColorInput = document.querySelector('input#fillColor');
newColorInput.addEventListener('change', (event) => {
eventListener(event.target.value);
});
function createGrid (n) {
const containerSize = container.clientWidth;
let color = document.querySelector('input#fillColor').value;
for (i=0; i<n*n; i++) {
const div = document.createElement('div');
div.style.width = `${(containerSize-3*n) / n }px`;
div.style.height = `${(containerSize-3*n) / n }px`;
div.id = `square-${i+1}`;
div.className = 'square';
div.style.opacity = '0';
setColor(color)
container.appendChild(div);
}
}
function setColor(color) {
div.style.backgroundColor = color;
// event click listener
div.addEventListener('mouseover', newColor)
}
function newColor() {
let currentOpacity = parseFloat(div.style.opacity);
if (!eraseMode) {
// drawing mode
console.log(eraseMode)
if (currentOpacity < 1) {
currentOpacity = Math.min(1, currentOpacity + 0.1 );
div.style.opacity = currentOpacity.toFixed(1);
} else {
// erase mode
console.log(eraseMode)
if (currentOpacity > 0) {
currentOpacity = Math.max(0, currentOpacity - 0.1 );
div.style.opacity = currentOpacity.toFixed(1);
}
}
}
}
function resetGrid() {
let squares = document.querySelectorAll('.square');
squares.forEach(square => {
square.style.backgroundColor = '';
square.style.opacity = '';
})
}
function deleteGrid() {
let squares = document.querySelectorAll('.square');
squares.forEach(square => {
square.remove();
})
}
function resizeGrid() {
deleteGrid();
let gridSize = document.querySelector('input#gridSize').value;
createGrid(gridSize);
}