classList.toggle('show'))contains, document.addEventListener).dropdown-menu의 위치와 스타일 지정.dropdown-toggle:hover + .dropdown-menu.submenu에 mouseenter, .dropdown-menu에 mouseleave 이벤트 사용mouseenter/mouseleave는 버블링 X.active 클래스를 버튼과 콘텐츠에 적용data-tab 속성과 콘텐츠 ID를 매핑해 구현button.addEventListener('click', () => {
button.classList.add('active');
document.getElementById(button.dataset.tab).classList.add('active');
});
.step-indicator, .step-content를 현재 단계에 따라 활성화currentStep 상태 변경.modal-overlay를 display: flex로 표시/숨김z-index 조정, body 스크롤 방지 처리getBoundingClientRect()로 요소 위치 확인window.scrollY 값으로 스크롤 감지dragstart: 드래그 시작 시 요소 숨김dragover: 요소 위치에 따라 placeholder 배치drop: placeholder 위치에 요소 삽입if (distance < rect.height / 2) {
$target.before($placeholder);
} else {
$target.after($placeholder);
}
✅ 총정리