fix(webui): 窄屏「我的」页补上圆角(与日历那次同一个根因,另一条分支)
用户(2026-09-14):「webui的『我的』页面,还是没有圆角」。
根因不在 AccountPage —— 在 App.tsx 的**分支**:没有列表栏的页面(我的/管理/写信)
走 `<div className="flex-1 min-h-0 flex">{main}</div>`,而 `.narrow-shell > *` 那条
圆角正落在这一层上。它是透明的、且 overflow: visible —— 有底色的是它里面的页面
根节点(`… bg-white`),内层直角从透明外壳里原样戳出来。
这与日历那次(`.narrow-stack` / `.cal-panes`)是同一条教训的**第三处**:
圆角必须给到**有底色的那一层**。
实测(390x844,真浏览器读渲染像素):
改前 面板 radius=0px,四角像素 255,255,255(纯白=方角)
改后 面板 radius=14px,四角像素 = 页面底色 249,250,251(被切掉)
宽屏 1280 一直是好的(对照:与收件箱详情栏的四角剖面逐像素一致)
改法:那一层挂 `narrow-solo`,圆角写在 `.narrow-solo > *`(有底色的那层),
**不写 overflow:hidden**(这层下面的子元素自己就是滚动容器,与 app-shell 那段同一个坑)。
横屏紧凑的两栏(`narrow-duo`)照 `cal-panes` 只给**外沿**:首元素左两角、末元素右两角。
判据 narrow-layout 新增 3 条(规则与 JSX 按类名接得上 / 不写 overflow:hidden /
两栏只给外沿);变异自检:把 `narrow-solo` 类名去掉,判据立刻红。
已部署(d3f6f3b·0914-1904);.deb 与 dist 同批重打。
This commit is contained in:
@ -217,7 +217,9 @@ export default function App() {
|
||||
if (!hasList) {
|
||||
return (
|
||||
<NarrowShell>
|
||||
<div className="flex-1 min-h-0 flex">{main}</div>
|
||||
{/* `narrow-solo`:这一层自己透明,有底色的是它里面的页面根节点 ——
|
||||
圆角规则在 index.css(要给到有底色的那一层,理由见那里)。 */}
|
||||
<div className="narrow-solo flex-1 min-h-0 flex">{main}</div>
|
||||
</NarrowShell>
|
||||
);
|
||||
}
|
||||
@ -226,7 +228,8 @@ export default function App() {
|
||||
if (compactTwoPane && hasList) {
|
||||
return (
|
||||
<NarrowShell sideNav>
|
||||
<div className="flex-1 min-h-0 flex">{list}{main}</div>
|
||||
{/* 横屏紧凑:两栏并排,圆角只能给**外沿**(`narrow-duo` 里按首/末子元素分左右) */}
|
||||
<div className="narrow-duo flex-1 min-h-0 flex">{list}{main}</div>
|
||||
</NarrowShell>
|
||||
);
|
||||
}
|
||||
|
||||
@ -897,6 +897,41 @@ html[data-bg='on'] .hover\:bg-gray-100:hover {
|
||||
border-radius: var(--radius-card);
|
||||
}
|
||||
|
||||
/*
|
||||
* ★ 窄屏「单页」容器(没有列表栏的页面:我的 / 管理 / 写信)
|
||||
* 用户(2026-09-14):「webui的『我的』页面,还是没有圆角」。
|
||||
*
|
||||
* 与 `.narrow-stack` 那次**同一个根因**,只是另一条分支:
|
||||
* `.narrow-shell > *` 那条圆角落在这一层(透明、overflow: visible),
|
||||
* 而真正有底色的是它里面的页面根节点(`AccountPage` 的 `… bg-white`)——
|
||||
* 内层的直角从透明外壳里原样戳出来。
|
||||
* 实测 390×844「我的」页:面板 computed radius = **0px**,左下/右下都是白像素。
|
||||
*
|
||||
* 修法照 `cal-panes` 的做法:**圆角给到有底色的那一层**(`> *`),
|
||||
* 并且不写 `overflow: hidden` —— 这一层下面的子元素自己就是滚动容器。
|
||||
*/
|
||||
.narrow-solo > * {
|
||||
border-radius: var(--radius-card);
|
||||
background-clip: padding-box;
|
||||
}
|
||||
|
||||
/*
|
||||
* 横屏紧凑的两栏(列表 + 主区域并排):两栏之间只有 1px 分隔线,
|
||||
* 所以只能给**外沿** —— 左边那块给左两角、右边那块给右两角;
|
||||
* 内侧也给会露出底色缺口(这一条与 `.cal-panes` 是同一套判断)。
|
||||
*/
|
||||
.narrow-duo > :first-child {
|
||||
border-start-start-radius: var(--radius-card);
|
||||
border-end-start-radius: var(--radius-card);
|
||||
background-clip: padding-box;
|
||||
}
|
||||
|
||||
.narrow-duo > :last-child {
|
||||
border-start-end-radius: var(--radius-card);
|
||||
border-end-end-radius: var(--radius-card);
|
||||
background-clip: padding-box;
|
||||
}
|
||||
|
||||
html[data-bg='on'] .app-shell {
|
||||
padding: var(--pane-gap);
|
||||
gap: var(--pane-gap);
|
||||
|
||||
Reference in New Issue
Block a user