Tarik untuk menyegarkan
Untuk daftar yang cepat basi, saat menarik ke bawah adalah cara tercepat memuat ulang.
Pratinjau langsung
Sumber
<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); }
Cara memakainya
- Pasang hanya pada daftar yang berubah seiring waktu (absensi, notifikasi, pesanan)
- Tampilkan tiga tahap secara berbeda: menarik, memuat, selesai
- Tetap sediakan gerakan ini meski sudah ada tombol segarkan
Hal yang perlu diwaspadai
- Gerakan ini tak terlihat, jadi selalu sertakan teks status
- Sampaikan proses dengan aria-busy dan role=status saat memuat