更新了AI页和我的页,一级页面都重构完成。

This commit is contained in:
lik
2026-10-04 21:21:50 +08:00
parent 428fb7c52c
commit f542b1dced
26 changed files with 1482 additions and 1141 deletions
+168 -33
View File
@@ -14,49 +14,179 @@ page {
padding: 0 32rpx calc(140rpx + env(safe-area-inset-bottom));
}
/* 头部:头像 + 昵称,直接落在纸面上(与首页 hero 同一语言) */
/* 顶部身份行:头像、昵称、出口三项左对齐浮在纸面上,与下方三个区块
共用同一条 32rpx 左基线,并复现首页 hero 的「纸面上 + 主 CTA」语言。
刻意不做成白卡——身份行与功能卡不是一类东西,
按硬约束 3「需区分时先改结构,不要加颜色」,这里用"去卡"而非换色区分;
若改用暖橙框,会与全站浅橙卡"区块收口"的语义打架,
且未登录时浅橙底上再叠实心橙胶囊属暖色叠暖色,故不加色。
微信胶囊底沿约落在 152rpx,上距现取 176rpx(余量 24rpx)。
这是安全距不是设计留白:下限约 160rpx,再小就会与胶囊挤在一起。
纵向 32rpx 内距给身份行本身留出上下呼吸,
同时把整行热区从 128rpx 撑到 192rpx(含内距),未登录点整行也更好点中 */
.header-card {
display: flex;
flex-direction: column;
flex-direction: row;
align-items: center;
padding: 120rpx 0 40rpx;
margin: 176rpx 0 24rpx;
padding: 32rpx 0;
}
/* 无框行的按下反馈:与首页 .section-link:active 同一手法(整体淡出),
不引入新色值;仅已登录时可点,未登录时 hover-class 传 'none' */
.header-card-hover {
opacity: 0.7;
}
.avatar {
width: 128rpx;
height: 128rpx;
border-radius: 32rpx;
margin-right: 28rpx;
/* 圆角方形而非正圆,与微信「我」页头像同形 */
border-radius: 24rpx;
flex-shrink: 0;
/* 默认头像底座要把 t-icon 居中,位图头像不受影响 */
display: flex;
align-items: center;
justify-content: center;
/* 默认头像底座带 2rpx 描边,border-box 保证尺寸仍是 128rpx 不被撑到 132rpx */
box-sizing: border-box;
}
/* 默认头像底座:浅橙衬底 + 暖陶土线标,走项目既有的「图标衬底」档
(同 .quick-icon 一类),而不是首页 .brand-mark 的实心橙档。
理由是面积:128rpx 实心橙是 .brand-mark(56rpx) 的 5.2 倍,
已从"小体量印记"跨到"色块",而它承载的只是"头像待设置"这一低价值信息;
且 --brand-strong 在本项目的语义是主操作/选中态,让占位头像占用它会误导。
浅橙块按既有规矩靠 2rpx --brand-line 描边托形、不加阴影;
--brand-ink 落 --brand-soft 上 5.96:1,比白字压 #B8520A 的 4.94:1 更高 */
.avatar-default {
background: var(--brand-soft);
border: 2rpx solid var(--brand-line);
}
/* 文字块:主行昵称与副行账号分别贴近头像的上、下沿(各内收 12rpx),
中间的空隙交给 space-between 撑开——它随头像高度自适应,
比写死 margin 稳。align-self: stretch 让文字块撑满 128rpx 头像高度。
min-width 归零,长昵称/长账号才能在右侧出口前收成省略号 */
.header-info {
flex: 1;
min-width: 0;
align-self: stretch;
display: flex;
flex-direction: column;
justify-content: space-between;
/* 两行各向内收 12rpx:与头像边缘严格齐平时读起来"被撑满了",
略微内收后间隙从 57rpx 收到约 33rpx,视觉上更聚拢 */
padding: 12rpx 0;
}
/* 未登录时只有昵称一行,space-between 会把它顶到最上,故改回居中 */
.header-info-single {
justify-content: center;
}
/* 行高收到 1.15(约半行距 3rpx):1.3 的半行距会把字形从块边缘推进 5.5rpx,
"顶部对齐"就会变成"看着差一点"。1.15 把视觉边缘压到与头像边缘相差 3rpx 内,
同时仍留一点余量,不至于配合 overflow: hidden 把字形切掉 */
.user-name {
margin-top: 24rpx;
font-size: 36rpx;
font-weight: 700;
color: var(--ink);
line-height: 1.15;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
/* 菜单组:首页「白卡」语言——白面 + 2rpx 发丝边 + 紧阴影 */
.menu-section + .menu-section {
/* 副行账号:muted,比主行小两档,与微信副行同层级。
与主行的间距不再用 margin——已由 .header-info 的 space-between 撑开 */
.user-account {
font-size: 26rpx;
color: var(--muted);
line-height: 1.15;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
/* 身份行右侧 chevron:与菜单行的 .menu-arrow 同形同色,
整行因此读成"菜单里的一行",点击暗示不必再添文字 */
.header-arrow {
flex-shrink: 0;
color: var(--muted);
}
/* 未登录时的登录胶囊:右对齐的一枚小胶囊。
它是本页唯一的实心暖橙块,独占「全页同类实心块不超过一处」的额度;
登录成功后整枚换成 chevron,「我的服务」区块随之出现 */
.login-btn {
width: 176rpx;
margin: 0;
padding: 18rpx 0;
border: none;
border-radius: 999rpx;
background: var(--brand-strong);
box-shadow: var(--shadow-cta);
color: var(--white);
font-size: 28rpx;
font-weight: 700;
letter-spacing: 2rpx;
line-height: 1.4;
flex-shrink: 0;
}
.login-btn::after {
border: none;
}
/* 区块间距:卡片改通栏、去掉区块抬头后,组与组之间只靠三样东西分界——
上一块的 2rpx 下边线、这 24rpx 纸面留白、下一块的 2rpx 上边线。
留白与身份行的下距同值,全页只有这一种竖向节奏。
这是全页唯一收窄过的一处:纸面与白面的填充差只有 1.05:1,
分界其实全靠这一条纸面缝在看,所以不能收到贴边,24rpx(12px)是下限。
原「单竖条 + 标题」的抬头样式(.section-head/.section-bar/.section-title)
已随标题一并删除,不留死代码 */
.section + .section {
margin-top: 24rpx;
}
.menu-list {
/* 通栏白卡:左右顶到屏幕两侧,做法与 itemlist 的服务分组同源
(margin 负向抵消容器 32rpx 内距)。圆角必须为 0,
否则满宽块的圆角会切在屏幕边上;上、下各一条 2rpx 发丝线托形。
行内容靠 .menu-item 自己的 32rpx 内距回到同一左基线,
组内分隔线(.menu-item::after)则左缩进到文字左缘,不压到图标 */
margin: 0 -32rpx;
background: var(--white);
border: 2rpx solid var(--line);
border-radius: 28rpx;
border-top: 2rpx solid var(--line);
border-bottom: 2rpx solid var(--line);
box-shadow: var(--shadow-card);
overflow: hidden;
}
.menu-item {
/* 给内嵌分隔线(::after)做定位参照 */
position: relative;
display: flex;
align-items: center;
padding: 32rpx;
border-bottom: 2rpx solid var(--line);
}
.menu-item:last-child {
border-bottom: none;
/* 组内分隔线不横跨整行:左端从文字左缘起,避开图标和它的右侧间距;
右端仍通到卡片边缘。
左缩进 = 行内距 32 + 图标 40 + 图标右距 24 = 96rpx */
.menu-item::after {
content: '';
position: absolute;
left: 96rpx;
right: 0;
bottom: 0;
height: 2rpx;
background: var(--line);
}
.menu-item:last-child::after {
display: none;
}
.menu-item-hover {
@@ -72,8 +202,9 @@ page {
.menu-text {
flex: 1;
font-size: 30rpx;
font-weight: 500;
color: var(--ink);
font-weight: 400;
/* 比标题层的 --ink 轻一档的暖墨,弱化"导航项"的视觉重量 */
color: var(--ink-2);
}
.menu-arrow {
@@ -81,27 +212,31 @@ page {
color: var(--muted);
}
/* 登录按钮:与首页主 CTA 同语言(实心暖橙胶囊 + 白字 + CTA 阴影) */
.login-section {
padding: 32rpx 0;
/* 退出登录:单独一个通栏白块(与 .menu-list 同法、同语言),
但只有一行、居中、无图标无 chevron——动作与导航的区分交给结构,
不交给颜色(状态色不得用于按钮,见 DESIGN.md §三)。
上距 24rpx 沿用全页唯一的那一种竖向节奏 */
.logout-block {
display: flex;
align-items: center;
justify-content: center;
margin: 24rpx -32rpx 0;
padding: 32rpx;
background: var(--white);
border-top: 2rpx solid var(--line);
border-bottom: 2rpx solid var(--line);
box-shadow: var(--shadow-card);
}
.login-btn {
width: 100%;
padding: 28rpx;
border: none;
border-radius: 999rpx;
background: var(--brand-strong);
box-shadow: var(--shadow-cta);
color: var(--white);
/* 按下反馈与 .menu-item-hover 同源,不引入新色值 */
.logout-block-hover {
background: var(--brand-soft);
}
/* 字色走 --muted:退出是次要动作,不给它主色,也不用状态色 */
.logout-text {
font-size: 30rpx;
font-weight: 700;
letter-spacing: 2rpx;
line-height: 1.4;
}
.login-btn::after {
border: none;
color: var(--muted);
}
/* 页脚:B 端合作文字链 + 版本信息,低调可读 */