Tombol terbelah
Untuk saat sembilan dari sepuluh orang menekan hal yang sama, dan yang kesepuluh tetap butuh jalan.
Pratinjau langsung
Sumber
<div class="dc-split">
<button type="button" class="dc-split__main">저장</button>
<details class="dc-split__more">
<summary class="dc-split__toggle">
<svg class="dc-split__caret" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M6 9l6 6 6-6"></path></svg>
<span class="dc-sr">저장 옵션 더 보기</span>
</summary>
<ul class="dc-split__list">
<li><button type="button" class="dc-split__item">다른 이름으로 저장</button></li>
<li><button type="button" class="dc-split__item">사본 만들기</button></li>
<li><button type="button" class="dc-split__item">서식만 저장</button></li>
</ul>
</details>
</div>
.dc-split { display: inline-flex; }
.dc-split__main {
min-height: 44px; padding: 0 var(--dc-5);
border: 1px solid var(--dc-brand); border-radius: var(--dc-r-sm) 0 0 var(--dc-r-sm);
background: var(--dc-brand); color: var(--dc-text-on);
font-family: var(--dc-font); font-size: 15px; font-weight: 600; line-height: 1;
white-space: nowrap;
transition: background var(--dc-fast);
}
.dc-split__main:hover { background: var(--dc-brand-hi); }
.dc-split__more { position: relative; }
.dc-split__toggle {
display: flex; align-items: center; justify-content: center;
width: 44px; min-height: 44px;
border: 1px solid var(--dc-brand);
border-left-color: color-mix(in srgb, var(--dc-text-on) 35%, var(--dc-brand));
border-radius: 0 var(--dc-r-sm) var(--dc-r-sm) 0;
background: var(--dc-brand); color: var(--dc-text-on);
cursor: pointer; list-style: none;
transition: background var(--dc-fast);
}
.dc-split__toggle::-webkit-details-marker { display: none; }
.dc-split__toggle:hover { background: var(--dc-brand-hi); }
.dc-split__caret { width: 18px; height: 18px; transition: transform var(--dc-fast); }
.dc-split__more[open] .dc-split__caret { transform: rotate(180deg); }
.dc-split__list {
position: absolute; top: calc(100% + var(--dc-1)); right: 0; z-index: 2;
min-width: 210px; padding: var(--dc-1);
border: 1px solid var(--dc-line); border-radius: var(--dc-r-md);
background: var(--dc-surface); box-shadow: var(--dc-sh-2);
}
.dc-split__item {
display: block; width: 100%; min-height: 44px; padding: 0 var(--dc-3);
border: 0; border-radius: var(--dc-r-xs);
background: transparent; color: var(--dc-text);
font-family: var(--dc-font); font-size: 14px; text-align: left;
}
.dc-split__item:hover { background: var(--dc-sunken); }
Cara memakainya
- Taruh aksi paling sering di badan kiri, sisanya sembunyikan di balik tanda panah
- Menu hanya memuat variasi dari aksi utamanya (Simpan / Simpan sebagai)
- Kalau yang disembunyikan hanya satu, dua tombol terpisah lebih jelas
Hal yang perlu diwaspadai
- Tanda panah juga perlu nama — 'Opsi simpan lainnya' di dalam dc-sr
- Di tepi kanan menunya keluar layar; balik arah bukanya di sana
- Dibangun dengan details, jadi tetap terbuka tanpa script