fix(webui): 日历页面补上圆角(圆角要给到「有底色的那一层」)
用户(2026-09-14):「日历页面还没有添加圆角」。
根因不是「忘了写 border-radius」—— 外壳那条 `.app-shell > *` 是生效的,
它给日历**根节点**加了 14px 圆角。问题是根节点写着
`flex-1 min-w-0 flex min-h-0`、**自己完全没有底色**:
真正白底的是里面那两块面板(网格栏、右栏),它们的直角从透明外壳里戳出来。
所以 `getComputedStyle(根).borderRadius` 一直是 14px,看上去却全是方角。
两处不能照搬收件箱做法的地方:
① 网格栏与右栏**不是两张卡**(中间只有 1px 分隔线,没有外壳间距)
⇒ 只能给**外沿**:左边那块给左两角、右边那块给右两角。
内侧也给会露出底色缺口。
② 右栏外面还套了一层容器(管 `lg:w-[400px]` 与 `border-l`,自己不上色),
真正上色的是它里面的 DayAgendaPane / CalendarEventEditor
⇒ 圆角要**再往下给一层**,只加在容器上会被内层直角原地盖掉。
(左栏本身就是白底面板,不能再往下给:它的第一个子元素是工具条。)
实测(1280×800,真浏览器读渲染像素):
改前 左栏 radius=0px、右栏 radius=0px,四个外角都是白像素(方角)
改后 左栏 `14px 0px 0px 14px`、右栏内层 `0px 14px 14px 0px`,
四个外角像素都等于页面底色(被切掉);上边缘内缩 8px,
与收件箱详情栏(对照)完全一致;内侧分隔线两侧保持直角。
判据:narrow-layout 新增 4 条 —— 钉的是「规则与 JSX 接没接上」「给的是哪几条边」
「右栏有没有再往下给一层」「左栏有没有多给一层」,不是那条 14px。
wide-regression 新增一条**渲染层**判据:从 `elementFromPoint` 沿祖先链找第一个
自带底色的元素,四个外角都必须正是那个圆角面板(光看 computed style 区分不了,
因为被盖掉的形态 computed 也照样是 14px)。
顺手修掉 wide-regression 里一条**假失败**:`#root > div` 现在指向壁纸幕布
(`app-backdrop` 后来挂成了 `#root` 的第一个子节点),于是「仍是三栏并排」
一直报「栏数=0」,而三栏好好的。假失败比没有判据更贵 —— 看的人会去查一个
本来没坏的东西。
This commit is contained in:
@ -447,7 +447,9 @@ export default function CalendarView() {
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="flex-1 min-w-0 flex min-h-0">
|
||||
/* `cal-panes`:这一层是"拼成一张卡的两块面板",圆角规则在 index.css 里
|
||||
(根节点自己没有底色,见那里的说明)*/
|
||||
<div className="cal-panes flex-1 min-w-0 flex min-h-0">
|
||||
{gridPane}
|
||||
<div className="w-full lg:w-[400px] shrink-0 border-l border-gray-200 bg-white flex flex-col min-h-0">
|
||||
{sidePane}
|
||||
|
||||
@ -1127,6 +1127,38 @@ html.view-switch .glass-control,
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* ★ 日历:网格栏与右栏拼成**一张卡**(中间是分隔线,不是外壳间距)
|
||||
* 用户(2026-09-14):「日历页面还没有添加圆角」。
|
||||
*
|
||||
* 为什么它一直没圆角:外壳那条 `.app-shell > *` 的圆角加在日历**根节点**上,
|
||||
* 而根节点是 `flex-1 min-w-0 flex min-h-0` —— **它自己没有底色**。
|
||||
* 真正白底的是里面那两块面板,直角从透明外壳里戳出来,看上去就是没圆角。
|
||||
*
|
||||
* 两个不能照搬收件箱做法的地方:
|
||||
*
|
||||
* ① 这两块面板**不是两张卡**(中间只有 1px 分隔线、没有外壳间距),
|
||||
* 所以只能给**外沿**:左边那块给左两角、右边那块给右两角。
|
||||
* 内侧要是也圆了,分隔线两边会露出底色缺口。
|
||||
* ② 右栏外面还套了一层容器(管宽度 `lg:w-[400px]` 与 `border-l`,自己不上色),
|
||||
* 真正上色的是它里面的 DayAgendaPane / CalendarEventEditor。
|
||||
* 圆角只加在容器上会被内层的直角**原地盖掉** —— 所以要再往下给一层。
|
||||
* (左栏本身就是白底面板,不能再往下给:它的第一个子元素是工具条,
|
||||
* 给下去变成"工具条圆角",那不是我们要的东西。)
|
||||
*/
|
||||
.cal-panes > :first-child {
|
||||
border-start-start-radius: var(--radius-card);
|
||||
border-end-start-radius: var(--radius-card);
|
||||
background-clip: padding-box;
|
||||
}
|
||||
|
||||
.cal-panes > :last-child,
|
||||
.cal-panes > :last-child > * {
|
||||
border-start-end-radius: var(--radius-card);
|
||||
border-end-end-radius: var(--radius-card);
|
||||
background-clip: padding-box;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 桌面侧栏:无论有没有壁纸都做深色玻璃 —— 否则它是全页唯一一块实心黑。
|
||||
|
||||
Reference in New Issue
Block a user