fix(webui): 回复球改成容器变形 + 摘掉邮件列表的入场动画 + 全局控件过渡不再补间阴影
用户连着报了三件(2026-09-15): ① 「邮件页面那个蓝色的圆形是聊天图标点击没有任何动画」 上一版我只给了回复框一个 150ms 的 opacity 淡入 —— 观感上等于没有。用户要的形态与 写信页一致:**球自己长成回复框**。现在蓝球带 data-morph-trigger、onClick 里就地记下 自己的矩形(currentTarget 最准),回复框挂载时用 useLayoutEffect 在**首帧之前**把 CSS 淡入关掉并接上 morph(220ms,只动 transform/opacity/border-radius)。 ② 「邮件列表会闪」——**我上一版引入的回归**。 我把 pane-rise 挂到了邮件列表上,而 view-switch 窗口在**选中一封邮件**时也会触发 (narrowPane 是依赖之一)⇒ 每点一封信整个列表重放一次入场。已摘掉:列表这类 "选中即变"的面不许挂入场动画,只有日历(真的换视图)保留 pane-rise。 判据改成反向的"列表必须不动",把这个回归钉死。 ③ 「主页点击按钮有明显的卡顿」。 全局 `button,a,input,textarea,select,[role=button]` 的 transition 里带了一条 `box-shadow var(--dur-base)` —— 阴影是**绘制**属性,每次 hover/active 都要把元素 连同阴影覆盖区重绘,且它挂在所有交互元素上。已去掉该补间(阴影瞬切), 判据钉"全局控件过渡不得含 box-shadow",个别表面仍可自己写。 另补一个真缺口:prefers-reduced-motion 原先只覆盖"窗口触发"那档,**没覆盖"挂载即播" 那档(裸 .rise-in)**,两处 morph 也没走这个开关。现已全部纳入;判据加严到"必须行首 就是 .rise-in"(第一版被 `html.view-switch .rise-in,` 满足掉,变异测试才发现假绿)。 判据合计 84 通过 0 失败(变异都验过:删裸 .rise-in → 红;把 box-shadow 加回 → 红; 列表挂回 pane-rise → 红;useLayoutEffect 换回 useEffect → 红)。
This commit is contained in:
@ -1051,7 +1051,16 @@ html[data-bg='on'] .nav-rail {
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
||||
/* 交互元素统一过渡;只过渡颜色类属性,避免布局抖动。 */
|
||||
/*
|
||||
* 交互元素统一过渡;只过渡颜色类属性,避免布局抖动。
|
||||
*
|
||||
* ★ 2026-09-15 用户:「主页点击按钮有明显的卡顿」。
|
||||
* 原先这里还带一条 `box-shadow var(--dur-base)` —— **阴影是绘制属性,不是合成器属性**:
|
||||
* 每次 hover/active 都要把元素连同阴影覆盖区重绘一遍,而且它挂在**所有** button/a/input 上。
|
||||
* 列表里几十个按钮 + 玻璃卡片背景时,这笔重绘正好落在点击那一帧上,就是"点按钮卡一下"。
|
||||
* 阴影现在直接跟随状态切换(瞬切),不再补间;观感差别很小,代价差很多。
|
||||
* 真要动画阴影的个别表面,自己显式写 transition。
|
||||
*/
|
||||
button,
|
||||
a,
|
||||
input,
|
||||
@ -1060,7 +1069,7 @@ select,
|
||||
[role='button'] {
|
||||
transition: background-color var(--dur-fast) var(--ease-out-soft),
|
||||
border-color var(--dur-fast) var(--ease-out-soft),
|
||||
color var(--dur-fast) var(--ease-out-soft), box-shadow var(--dur-base) var(--ease-out-soft);
|
||||
color var(--dur-fast) var(--ease-out-soft);
|
||||
}
|
||||
|
||||
/* 尊重系统的「减弱动态效果」:前庭功能障碍者会因动画不适。 */
|
||||
@ -1170,6 +1179,8 @@ html.view-switch .glass-control,
|
||||
|
||||
/* 尊重系统设置:关了动画就一点都不动(前庭功能敏感的人会被位移动画伤到) */
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
/* 2026-09-15:`.rise-in`(挂载即播那档)原先漏在这儿 —— 关掉动画的人照样会看到它 */
|
||||
.rise-in,
|
||||
html.view-switch .app-shell > *,
|
||||
html.view-switch .narrow-shell > *,
|
||||
html.view-switch .rise-in,
|
||||
|
||||
Reference in New Issue
Block a user