[javascript] Svelte에서 드롭다운 메뉴를 구현하는 방법은 어떻게 되나요?
먼저, 드롭다운 메뉴 컴포넌트를 생성합니다. 이 컴포넌트는 상태변수를 사용하여 메뉴가 열려있는지 여부를 추적합니다.
<script>
import { onMount } from 'svelte';
let isOpen = false;
function toggleMenu() {
isOpen = !isOpen;
}
onMount(() => {
document.addEventListener('click', handleOutsideClick);
});
function handleOutsideClick(event) {
if (!isOpen) {
return;
}
const dropdown = document.querySelector('.dropdown');
if (!dropdown.contains(event.target)) {
isOpen = false;
}
}
</script>
<div class="dropdown">
<button on:click={toggleMenu}>메뉴 열기</button>
{#if isOpen}
<ul>
<li>항목 1</li>
<li>항목 2</li>
<li>항목 3</li>
</ul>
{/if}
</div>
<style>
.dropdown ul {
list-style: none;
padding: 0;
}
</style>
위 코드에서는 isOpen
변수를 사용하여 메뉴의 열림 상태를 추적합니다. toggleMenu
함수는 메뉴를 열거나 닫을 때 사용됩니다.
또한, onMount
함수를 사용하여 컴포넌트가 마운트되면 (document.addEventListener
의 사용) 외부 클릭 이벤트를 처리하여 메뉴가 열린 상태에서 외부를 클릭하면 메뉴를 닫을 수 있도록 처리합니다.
마지막으로, ul
요소에는 드롭다운 메뉴의 실제 항목들을 나열합니다. 이 예시에서는 3개의 항목을 추가했습니다. 필요에 따라 항목들에 대한 추가적인 동작이나 스타일을 정의할 수 있습니다.
위 코드를 사용하면 Svelte를 사용하여 간단하게 드롭다운 메뉴를 구현할 수 있습니다. 이는 Svelte 컴포넌트의 장점을 활용하는 방법 중 하나입니다.