Dropdown Menu
クリックで開くドロップダウンメニュー。
HTML
<div class="dd-wrap">
<button class="dd-trigger" id="dd-btn">Options</button>
<div class="dd-menu" id="dd-menu">
<a href="javascript:void(0)" class="dd-item">Edit</a>
<a href="javascript:void(0)" class="dd-item">Duplicate</a>
<a href="javascript:void(0)" class="dd-item">Archive</a>
<div class="dd-sep"></div>
<a href="javascript:void(0)" class="dd-item dd-danger">Delete</a>
</div>
</div>
CSS
.dd-wrap { position: relative; display: inline-block; }
.dd-trigger {
padding: 8px 18px;
background: #fff;
border: 1px solid #eee;
border-radius: 8px;
font-size: 13px;
font-weight: 600;
font-family: inherit;
cursor: pointer;
color: #1a1a1a;
}
.dd-menu {
position: absolute;
top: calc(100% + 6px);
left: 0;
width: 160px;
background: #fff;
border: 1px solid #eee;
border-radius: 10px;
padding: 4px;
box-shadow: 0 8px 24px rgba(0,0,0,.08);
opacity: 0;
transform: translateY(-6px) scale(.97);
pointer-events: none;
transition: all .2s cubic-bezier(.16,1,.3,1);
z-index: 10;
}
.dd-menu.open {
opacity: 1;
transform: translateY(0) scale(1);
pointer-events: auto;
}
.dd-item {
display: block;
padding: 8px 12px;
font-size: 13px;
color: #333;
text-decoration: none;
border-radius: 6px;
transition: background .15s;
}
.dd-item:hover { background: #f5f5f5; }
.dd-danger { color: #dc2626; }
.dd-danger:hover { background: #fef2f2; }
.dd-sep {
height: 1px;
background: #f0f0f0;
margin: 4px 0;
}
JavaScript
const btn = document.getElementById('dd-btn');
const menu = document.getElementById('dd-menu');
btn.addEventListener('click', (e) => {
e.stopPropagation();
menu.classList.toggle('open');
});
document.addEventListener('click', () => {
menu.classList.remove('open');
});