Compare commits
14 Commits
Author | SHA1 | Date |
---|---|---|
Ryan Sobol | d703db5bac | 7 years ago |
Ryan Sobol | e7deb660cb | 7 years ago |
Ryan Sobol | f298427ab8 | 7 years ago |
Ryan Sobol | cecb8d1f40 | 7 years ago |
Ryan Sobol | 6c1a57711b | 7 years ago |
Ryan Sobol | b0da25cd29 | 7 years ago |
Ryan Sobol | bd71278bba | 7 years ago |
Ryan Sobol | f4152534a0 | 7 years ago |
Ryan Sobol | ff1a006ded | 7 years ago |
Ryan Sobol | 08b5fe7384 | 7 years ago |
Ryan Sobol | 0dbbca96ed | 7 years ago |
Ryan Sobol | 976cd319cb | 7 years ago |
Ryan Sobol | 98678f2d45 | 7 years ago |
Ian Smith | 4534b665d6 | 7 years ago |
@ -0,0 +1,219 @@ |
|||||||
|
html { |
||||||
|
box-sizing: border-box; |
||||||
|
} |
||||||
|
|
||||||
|
* { |
||||||
|
box-sizing: inherit; |
||||||
|
} |
||||||
|
|
||||||
|
body { |
||||||
|
background-color: #ccc; |
||||||
|
} |
||||||
|
|
||||||
|
h2 { |
||||||
|
color: #999; |
||||||
|
font-family: Gill Sans; |
||||||
|
font-size: 1.5rem; |
||||||
|
font-weight: 400; |
||||||
|
letter-spacing: 3px; |
||||||
|
line-height: 2.2rem; |
||||||
|
margin: 6px 0 0 20px; |
||||||
|
} |
||||||
|
|
||||||
|
main { |
||||||
|
background-color: #e5e5e5; |
||||||
|
border-radius: 15px; |
||||||
|
box-shadow: 0 0 20px #999; |
||||||
|
margin: 20px auto 0; |
||||||
|
padding: 20px; |
||||||
|
width: 894px; |
||||||
|
} |
||||||
|
|
||||||
|
.pixel { |
||||||
|
background-color: white; |
||||||
|
border: 1px solid #e5e5e5; |
||||||
|
height: 14px; |
||||||
|
width: 14px; |
||||||
|
} |
||||||
|
|
||||||
|
.brushIndicator { |
||||||
|
border: 1px solid #999999; |
||||||
|
border-radius: 3px; |
||||||
|
height: 35.5px; |
||||||
|
margin: 6px 0 0 12px; |
||||||
|
width: 100px; |
||||||
|
} |
||||||
|
|
||||||
|
.color { |
||||||
|
/* Prevent classes like 'carmine-red' from specifying the border-color */ |
||||||
|
border: 1px solid #bbbbbb !important; |
||||||
|
border-radius: 50%; |
||||||
|
height: 35.5px; |
||||||
|
margin: 5px 5px 0 0; |
||||||
|
width: 35.5px; |
||||||
|
} |
||||||
|
|
||||||
|
.carmine-red { |
||||||
|
background-color: #b23232; |
||||||
|
border-color: #b23232; |
||||||
|
} |
||||||
|
|
||||||
|
.coral-red { |
||||||
|
background-color: #ff4848; |
||||||
|
border-color: #ff4848; |
||||||
|
} |
||||||
|
|
||||||
|
.pastel-red { |
||||||
|
background-color: #ff6c6c; |
||||||
|
border-color: #ff6c6c; |
||||||
|
} |
||||||
|
|
||||||
|
.tigers-eye-orange { |
||||||
|
background-color: #e59b40; |
||||||
|
border-color: #e59b40; |
||||||
|
} |
||||||
|
|
||||||
|
.pastel-orange { |
||||||
|
background-color: #ffad48; |
||||||
|
border-color: #ffad48; |
||||||
|
} |
||||||
|
|
||||||
|
.topaz-orange { |
||||||
|
background-color: #ffc57e; |
||||||
|
border-color: #ffc57e; |
||||||
|
} |
||||||
|
|
||||||
|
.sandstorm-yellow { |
||||||
|
background-color: #e5de40; |
||||||
|
border-color: #e5de40; |
||||||
|
} |
||||||
|
|
||||||
|
.lemon-yellow { |
||||||
|
background-color: #fff748; |
||||||
|
border-color: #fff748; |
||||||
|
} |
||||||
|
|
||||||
|
.pastel-yellow { |
||||||
|
background-color: #fffa91; |
||||||
|
border-color: #fffa91; |
||||||
|
} |
||||||
|
|
||||||
|
.lime-green { |
||||||
|
background-color: #39cc4b; |
||||||
|
border-color: #39cc4b; |
||||||
|
} |
||||||
|
|
||||||
|
.ufo-green { |
||||||
|
background-color: #48ff5e; |
||||||
|
border-color: #48ff5e; |
||||||
|
} |
||||||
|
|
||||||
|
.mint-green { |
||||||
|
background-color: #91ff9e; |
||||||
|
border-color: #91ff9e; |
||||||
|
} |
||||||
|
|
||||||
|
.cerulean-blue { |
||||||
|
background-color: #3248b2; |
||||||
|
border-color: #3248b2; |
||||||
|
} |
||||||
|
|
||||||
|
.ultramarine-blue { |
||||||
|
background-color: #4867ff; |
||||||
|
border-color: #4867ff; |
||||||
|
} |
||||||
|
|
||||||
|
.carolina-blue { |
||||||
|
background-color: #91a3ff; |
||||||
|
border-color: #91a3ff; |
||||||
|
} |
||||||
|
|
||||||
|
.purple-heart { |
||||||
|
background-color: #6432b2; |
||||||
|
border-color: #6432b2; |
||||||
|
} |
||||||
|
|
||||||
|
.lavender-indigo { |
||||||
|
background-color: #8f48ff; |
||||||
|
border-color: #8f48ff; |
||||||
|
} |
||||||
|
|
||||||
|
.bright-lavender { |
||||||
|
background-color: #bb91ff; |
||||||
|
border-color: #bb91ff; |
||||||
|
} |
||||||
|
|
||||||
|
.bruise-purple { |
||||||
|
background-color: #7c2b99; |
||||||
|
border-color: #7c2b99; |
||||||
|
} |
||||||
|
|
||||||
|
.heliotrope-purple { |
||||||
|
background-color: #cf48ff; |
||||||
|
border-color: #cf48ff; |
||||||
|
} |
||||||
|
|
||||||
|
.lavender-magenta { |
||||||
|
background-color: #e291ff; |
||||||
|
border-color: #e291ff; |
||||||
|
} |
||||||
|
|
||||||
|
.black-black { |
||||||
|
background-color: #000000; |
||||||
|
border-color: #000000; |
||||||
|
} |
||||||
|
|
||||||
|
.drab-black { |
||||||
|
background-color: #323232; |
||||||
|
border-color: #323232; |
||||||
|
} |
||||||
|
|
||||||
|
.dim-gray { |
||||||
|
background-color: #666666; |
||||||
|
border-color: #666666; |
||||||
|
} |
||||||
|
|
||||||
|
.manatee-gray { |
||||||
|
background-color: #999999; |
||||||
|
border-color: #999999; |
||||||
|
} |
||||||
|
|
||||||
|
.pastel-gray { |
||||||
|
background-color: #cccccc; |
||||||
|
border-color: #cccccc; |
||||||
|
} |
||||||
|
|
||||||
|
.white-white { |
||||||
|
background-color: #ffffff; |
||||||
|
border-color: #ffffff; |
||||||
|
} |
||||||
|
|
||||||
|
.bistre-brown { |
||||||
|
background-color: #3a2119; |
||||||
|
border-color: #3a2119; |
||||||
|
} |
||||||
|
|
||||||
|
.noir-brown { |
||||||
|
background-color: #512e23; |
||||||
|
border-color: #512e23; |
||||||
|
} |
||||||
|
|
||||||
|
.bole-brown { |
||||||
|
background-color: #754233; |
||||||
|
border-color: #754233; |
||||||
|
} |
||||||
|
|
||||||
|
.chestnut-brown { |
||||||
|
background-color: #90675b; |
||||||
|
border-color: #90675b; |
||||||
|
} |
||||||
|
|
||||||
|
.grullo-brown { |
||||||
|
background-color: #ac8d84; |
||||||
|
border-color: #ac8d84; |
||||||
|
} |
||||||
|
|
||||||
|
#canvas, #palette { |
||||||
|
display: flex; |
||||||
|
flex-wrap: wrap; |
||||||
|
} |
@ -0,0 +1,15 @@ |
|||||||
|
<!DOCTYPE html> |
||||||
|
<html> |
||||||
|
<head> |
||||||
|
<meta charset="utf-8"> |
||||||
|
<title>Pixel Art Maker</title> |
||||||
|
<script defer src="index.js"></script> |
||||||
|
<link rel="stylesheet" href="index.css" /> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<main> |
||||||
|
<div id="canvas"></div> |
||||||
|
<div id="palette"></div> |
||||||
|
</main> |
||||||
|
</body> |
||||||
|
</html> |
@ -0,0 +1,124 @@ |
|||||||
|
(function() { |
||||||
|
'use strict'; |
||||||
|
|
||||||
|
let brushClass = 'drab-black'; |
||||||
|
|
||||||
|
const paintPixel = function(pixel) { |
||||||
|
pixel.classList.remove(pixel.classList.item(1)); |
||||||
|
pixel.classList.add(brushClass); |
||||||
|
} |
||||||
|
|
||||||
|
const drawCanvas = function() { |
||||||
|
const canvas = document.querySelector('#canvas'); |
||||||
|
|
||||||
|
for (let i = 0; i < 2013; i++) { |
||||||
|
const pixel = document.createElement('div'); |
||||||
|
pixel.classList.add('pixel'); |
||||||
|
canvas.appendChild(pixel); |
||||||
|
} |
||||||
|
|
||||||
|
canvas.addEventListener('click', (event) => { |
||||||
|
if (event.target === canvas) { |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
paintPixel(event.target); |
||||||
|
}); |
||||||
|
|
||||||
|
// Bonus 1 - paintbrush
|
||||||
|
//
|
||||||
|
// let isPainting = false;
|
||||||
|
//
|
||||||
|
// canvas.addEventListener('mousedown', () => {
|
||||||
|
// isPainting = true;
|
||||||
|
//
|
||||||
|
// if (event.target === canvas) {
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// paintPixel(event.target);
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// document.addEventListener('mouseup', () => {
|
||||||
|
// isPainting = false;
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// const pixels = document.querySelectorAll('.pixel');
|
||||||
|
//
|
||||||
|
// for (const pixel of pixels) {
|
||||||
|
// pixel.addEventListener('mouseenter', () => {
|
||||||
|
// if (isPainting) {
|
||||||
|
// paintPixel(event.target);
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
} |
||||||
|
|
||||||
|
const drawPalette = function() { |
||||||
|
const palette = document.querySelector('#palette'); |
||||||
|
|
||||||
|
const colorClasses = [ |
||||||
|
'carmine-red', |
||||||
|
'coral-red', |
||||||
|
'pastel-red', |
||||||
|
'tigers-eye-orange', |
||||||
|
'pastel-orange', |
||||||
|
'topaz-orange', |
||||||
|
'sandstorm-yellow', |
||||||
|
'lemon-yellow', |
||||||
|
'pastel-yellow', |
||||||
|
'lime-green', |
||||||
|
'ufo-green', |
||||||
|
'mint-green', |
||||||
|
'cerulean-blue', |
||||||
|
'ultramarine-blue', |
||||||
|
'carolina-blue', |
||||||
|
'purple-heart', |
||||||
|
'lavender-indigo', |
||||||
|
'bright-lavender', |
||||||
|
'bruise-purple', |
||||||
|
'heliotrope-purple', |
||||||
|
'lavender-magenta', |
||||||
|
'black-black', |
||||||
|
'drab-black', |
||||||
|
'dim-gray', |
||||||
|
'manatee-gray', |
||||||
|
'pastel-gray', |
||||||
|
'white-white', |
||||||
|
'bistre-brown', |
||||||
|
'noir-brown', |
||||||
|
'bole-brown', |
||||||
|
'chestnut-brown', |
||||||
|
'grullo-brown' |
||||||
|
]; |
||||||
|
|
||||||
|
for (const colorClass of colorClasses) { |
||||||
|
const color = document.createElement('div'); |
||||||
|
color.classList.add('color', colorClass); |
||||||
|
palette.appendChild(color); |
||||||
|
} |
||||||
|
|
||||||
|
const heading = document.createElement('h2'); |
||||||
|
heading.textContent = 'BRUSH COLOR >'; |
||||||
|
|
||||||
|
const brushIndicator = document.createElement('div'); |
||||||
|
brushIndicator.classList.add('brushIndicator', brushClass); |
||||||
|
|
||||||
|
palette.appendChild(heading); |
||||||
|
palette.appendChild(brushIndicator); |
||||||
|
|
||||||
|
palette.addEventListener('click', (event) => { |
||||||
|
if (event.target === palette) { |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
brushClass = event.target.classList.item(1); |
||||||
|
|
||||||
|
brushIndicator.classList.remove(brushIndicator.classList.item(1)); |
||||||
|
brushIndicator.classList.add(brushClass); |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
drawCanvas(); |
||||||
|
drawPalette(); |
||||||
|
})(); |
Loading…
Reference in new issue