Study/JavaScript
changing color
더 멋진 세상을 꿈꾸는 개발자
2020. 5. 17. 17:27
html에서 색깔들에게 class 네임으로 jsColor를 주고,
const colors = document.getElementsByClassName("jsColor");
코드를 작성한다.
console.log(colors)를 하면 텍스트가 array가 아니라 HTMLcollection으로 나온다.
우리는 이를 array로 묶기 위해서
console.log(Array.from(colors));
array.from 메소드를 사용한다.
이 메소드는 object로부터 array를 만든다.
위를 활용하여 아래와 같이 코드를 작성한다.
Array.from(colors).forEach((color) => color.addEventListener("click"));
array에 있는 하나하나 배열에 이벤트리스너를 주는 것이다.
그리고 여기에 우리는
handleColorClick라는 함수를 만들 것이다.
function handleColorClick(event) {
console.log(event.target.style);
}
위 코드를 이용해 target값을 확인해보자.
우리가 여기서 원하는 값은 backgroundcolor이다.
function handleColorClick(event) {
const color = event.target.style.backgroundColor;
ctx.strokeStyle = color;
}
위와같이 작성하여 클릭한 컬러값으로 우리가 선을 그리는 색이 변할 수 있도록 한다.
const canvas = document.getElementById("jsCanvas"),
ctx = canvas.getContext("2d"),
colors = document.getElementsByClassName("jsColor");
canvas.width = 700;
canvas.height = 700;
ctx.strokeStyle = "#2c2c2c";
ctx.lineWidth = 2.5;
let painting = false;
function stopPainting(event) {
painting = false;
}
function startPainting() {
painting = true;
}
function noMouseMove(event) {
const x = event.offsetX;
const y = event.offsetY;
if (!painting) {
ctx.beginPath();
ctx.moveTo(x, y);
} else {
ctx.lineTo(x, y);
ctx.stroke();
}
}
function onMouseDown(event) {
painting = true;
}
function handleColorClick(event) {
const color = event.target.style.backgroundColor;
ctx.strokeStyle = color;
}
if (canvas) {
canvas.addEventListener("mousemove", noMouseMove);
canvas.addEventListener("mousedown", startPainting);
canvas.addEventListener("mouseup", stopPainting);
canvas.addEventListener("mouseleave", stopPainting);
}
Array.from(colors).forEach((color) =>
color.addEventListener("click", handleColorClick)
);