자바스크립트에서 display none과 display block 사이에 전환 효과 적용하기
문제 상황 설명
자바스크립트에서 웹 페이지의 요소(element)를 보이게 하거나 숨기려면 display 속성을 none 또는 block으로 변경합니다. 그런데 이렇게 하면 웹 요소가 갑자기 나타나거나 사라져서 자연스럽지 않습니다. 여기서는 display:none과 display:block 사이에 부드러운 전환 효과(transition)를 적용하는 방법을 자세히 알아보겠습니다.
CSS opacity와 visibility를 사용한 해결 방법
display 속성은 CSS 전환 효과와 함께 작동하지 않습니다. 그래서 다른 속성을 사용해야 합니다. opacity와 visibility 속성을 조합하여 이 문제를 해결할 수 있습니다. 먼저, 원하는 요소에 다음과 같은 CSS를 적용합니다.
1
2
3
4
5
.fade {
opacity: 0;
visibility: hidden;
transition: opacity 0.5s, visibility 0.5s;
}
그런 다음, 자바스크립트로 이 클래스를 추가하거나 제거합니다.
1
2
3
4
5
// 요소를 보이게 하기
document.getElementById("myElement").classList.remove("fade");
// 요소를 숨기기
document.getElementById("myElement").classList.add("fade");
JavaScript setTimeout 함수를 이용한 방법
setTimeout 함수를 사용하여 일정 시간 후에 display 속성을 변경할 수도 있습니다. 이렇게 하면 opacity가 완전히 사라진 후에 display:none을 적용할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
// 요소를 보이게 하기
document.getElementById("myElement").style.opacity = "1";
setTimeout(function() {
document.getElementById("myElement").style.display = "block";
}, 500); // 0.5초 후에 실행
// 요소를 숨기기
document.getElementById("myElement").style.opacity = "0";
setTimeout(function() {
document.getElementById("myElement").style.display = "none";
}, 500); // 0.5초 후에 실행
요약
웹 페이지에서 요소를 부드럽게 보이게 하거나 숨기려면 display 속성만으로는 부족합니다. opacity와 visibility 속성을 활용하거나 JavaScript의 setTimeout 함수를 사용하여 자연스러운 전환 효과를 만들 수 있습니다. 이러한 방법들은 사용자 경험을 향상시키는 데 큰 도움이 됩니다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.