Đến nội dung chính

Kéo để làm mới

Dùng cho danh sách hay thay đổi, khi kéo xuống là cách nhanh nhất để tải lại.

Phản hồi

Xem trước trực tiếp

Nguồn

<div class="dc-pull" aria-busy="true">
  <div class="dc-pull__head">
    <span class="dc-pull__spin" aria-hidden="true"></span>
    <span class="dc-pull__hint" role="status">새로 불러오는 중…</span>
  </div>
  <ul class="dc-pull__list">
    <li class="dc-pull__item">
      <span class="dc-pull__title">3월 18일 출근</span>
      <span class="dc-pull__sub">A현장 · 8시간 · 140,000원</span>
    </li>
    <li class="dc-pull__item">
      <span class="dc-pull__title">3월 17일 출근</span>
      <span class="dc-pull__sub">A현장 · 8시간 · 140,000원</span>
    </li>
    <li class="dc-pull__item">
      <span class="dc-pull__title">3월 15일 출근</span>
      <span class="dc-pull__sub">B현장 · 6시간 · 105,000원</span>
    </li>
  </ul>
</div>
.dc-pull {
  overflow: hidden;
  background: var(--dc-bg);
  border: 1px solid var(--dc-line);
  border-radius: var(--dc-r-md);
  font-family: var(--dc-font);
}
.dc-pull__head {
  display: flex; flex-direction: column; align-items: center;
  justify-content: center; gap: var(--dc-2);
  min-height: 76px; padding: var(--dc-3);
  background: var(--dc-sunken);
}
.dc-pull__spin {
  width: 26px; height: 26px;
  border: 3px solid var(--dc-line-bold);
  border-top-color: var(--dc-brand);
  border-radius: var(--dc-r-full);
  animation: dc-pull-spin .8s linear infinite;
}
@keyframes dc-pull-spin { to { transform: rotate(360deg); } }
.dc-pull__arrow {
  display: grid; place-items: center;
  width: 26px; height: 26px; border-radius: var(--dc-r-full);
  border: 1px solid var(--dc-line-bold);
  color: var(--dc-text-sub); font-size: 13px; line-height: 1;
}
.dc-pull__check {
  display: grid; place-items: center;
  width: 26px; height: 26px; border-radius: var(--dc-r-full);
  background: var(--dc-ok); color: var(--dc-text-on);
  font-size: 14px; font-weight: 700; line-height: 1;
}
.dc-pull__hint { font-size: 12px; color: var(--dc-text-sub); }
.dc-pull__list { background: var(--dc-surface); }
.dc-pull__item {
  display: flex; flex-direction: column; gap: 2px;
  min-height: 64px; padding: var(--dc-3) var(--dc-4);
  justify-content: center;
  border-top: 1px solid var(--dc-line);
}
.dc-pull__title { font-size: 15px; font-weight: 700; color: var(--dc-text); }
.dc-pull__sub { font-size: 13px; color: var(--dc-text-sub); }

Cách dùng

  • Chỉ đặt ở danh sách thay đổi theo thời gian (chấm công, thông báo, đơn hàng)
  • Hiển thị rõ ba trạng thái: đang kéo, đang tải, đã xong
  • Vẫn giữ cử chỉ này dù đã có nút làm mới

Điểm cần lưu ý

  • Cử chỉ không nhìn thấy được nên luôn kèm dòng chữ trạng thái
  • Dùng aria-busy và role=status để báo đang tải

Tiếp theo