본문 바로가기
🖥️ 프로젝트?/자바스크립트 초미니

🎯 Change Color : 랜덤 색상 띄우기

by 뒬탕 2023. 1. 18.
반응형

요약

 

기능 설명

 가운데 'Change xxx'라 적힌 버튼을 누르면 중앙에서 랜덤한 색상의 원이 하나 생성된다. 해당 원은 3초간 커지며 화면을 덮은 후, 사라지고 동시에 배경색이 해당 색으로 대체된다. 또 버튼을 누를 때 버튼의 단어가 목록의 랜덤한 단어 중 하나로 바뀐다.

 

반응형

 

어려웠던 점 / 배웠던 점

화면 중앙에 요소 위치시키기

.wrapper {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 100vh;
}

어떤 요소를 정중앙에 위치시키기가 쉽지 않았다. 그래서 버튼은 다음과 같이 wrapper로 감싸준 다음 flex에서 중앙 맞춰주는걸 이용했다.

 

.circle {
    width: 200vw;
    height: 200vw;

    position: absolute;
    top: calc(-100vw + 50vh);
    left: -50vw;
    
    z-index: -1;
}

동심원들은 우선 크기를 정해주고, position을 absolute로 해주었다. 이후 요소의 중앙을 0으로 이동시킨 다음 화면크기의 반만큼 더해주는 방식을 이용하였다. 더해줄 때 calc()함수를 써야한다는 사실도 알았다. 이 후 애니메이션에서는 scale하는 transform을 이용했다.

 

DOM에 요소 추가하기 / 제거하기

$colorBtn.addEventListener("click", () => {
    const $newCircle = document.createElement("div");
    const randomColor = getRandomColor();

    $newCircle.classList.add("circle");
    $newCircle.style.backgroundColor = randomColor;

    $body.appendChild($newCircle);

    $colorBtn.innerHTML = `Change<br/>${getRandomWord()}`;

    setTimeout(() => {
        $body.style.backgroundColor = randomColor;
        $newCircle.remove();
    }, 3000);
});

DOM에 요소들을 추가하고 없애는 것을 연습해보았다.

반응형

댓글