Đến nội dung chính

Nút chia

Khi chín trên mười người chọn cùng một việc, nhưng người thứ mười vẫn cần một đường đi.

Nút và hành động

Xem trước trực tiếp

Nguồn

<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); }

Cách dùng

  • Đặt hành động dùng nhiều nhất ở thân bên trái, phần còn lại nằm sau mũi nhọn
  • Menu chỉ chứa các biến thể của hành động chính (Lưu / Lưu thành)
  • Nếu chỉ có một mục ẩn thì hai nút rời sẽ dễ đọc hơn

Điểm cần lưu ý

  • Mũi nhọn cũng cần tên — 'Thêm tuỳ chọn lưu' trong dc-sr
  • Ở sát lề phải menu sẽ tràn ra ngoài; hãy đổi hướng mở
  • Dựng bằng details nên mở được dù không có script

Tiếp theo