feat(chat): implement pull-to-refresh functionality and pagination for chat history
This commit is contained in:
@@ -1,9 +1,13 @@
|
||||
/* ChatArea 消息列表样式 */
|
||||
|
||||
.area {
|
||||
--chat-pull-offset: 0px;
|
||||
|
||||
position: relative;
|
||||
flex: 1 1 auto;
|
||||
min-height: 0;
|
||||
overflow-y: auto;
|
||||
overscroll-behavior-y: contain;
|
||||
padding:
|
||||
var(--spacing-lg, 16px)
|
||||
calc(var(--chat-inline-padding, 20px) + var(--app-safe-right, 0px))
|
||||
@@ -11,11 +15,49 @@
|
||||
calc(var(--chat-inline-padding, 20px) + var(--app-safe-left, 0px));
|
||||
}
|
||||
|
||||
.pullIndicator {
|
||||
position: absolute;
|
||||
top: var(--spacing-sm, 8px);
|
||||
left: 50%;
|
||||
z-index: 2;
|
||||
display: inline-flex;
|
||||
min-height: 34px;
|
||||
align-items: center;
|
||||
gap: 7px;
|
||||
padding: 0 12px;
|
||||
border: 1px solid rgba(255, 255, 255, 0.16);
|
||||
border-radius: 999px;
|
||||
background: rgba(24, 20, 30, 0.86);
|
||||
color: rgba(255, 255, 255, 0.9);
|
||||
font-size: var(--responsive-caption, var(--font-size-sm, 12px));
|
||||
font-weight: 700;
|
||||
opacity: 1;
|
||||
pointer-events: none;
|
||||
transform: translate(-50%, calc(var(--chat-pull-offset) - 42px));
|
||||
white-space: nowrap;
|
||||
box-shadow: 0 8px 22px rgba(0, 0, 0, 0.28);
|
||||
}
|
||||
|
||||
.pullIndicator[aria-hidden="true"] {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.pullIndicator svg[data-spinning="true"] {
|
||||
animation: pullIndicatorSpin 0.8s linear infinite;
|
||||
}
|
||||
|
||||
.content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--spacing-3, 12px);
|
||||
min-width: 0;
|
||||
transform: translateY(var(--chat-pull-offset));
|
||||
transition: transform 180ms ease;
|
||||
will-change: transform;
|
||||
}
|
||||
|
||||
.area[data-pulling="true"] .content {
|
||||
transition: none;
|
||||
}
|
||||
|
||||
.dateHeader {
|
||||
@@ -143,3 +185,9 @@
|
||||
0%, 60%, 100% { opacity: 0.2; }
|
||||
30% { opacity: 1; }
|
||||
}
|
||||
|
||||
@keyframes pullIndicatorSpin {
|
||||
to {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user