- tokens.scss: 修正字号 token 对齐 18 份原型稿 fontSize 统计
--tk-font-h1: 26→28px, --tk-font-h2: 24→22px
--tk-font-body-lg: 28→18px, --tk-font-body: 22→16px
--tk-font-body-sm: 16→14px
elder-mode 同步重新计算比例系数
- ContentCard: 新增 margin prop ('none'|'md'),margin-bottom
从 CSS 类移至 inline style,支持列表容器内无间距模式
- Profile 页: 用户卡片添加 profile-user-card flex 布局
菜单组/积分卡片使用 margin="none",修复布局对齐
- Login 页: SCSS 全部改为 design token 引用
234 lines
4.0 KiB
SCSS
234 lines
4.0 KiB
SCSS
@import '../../styles/variables.scss';
|
||
@import '../../styles/mixins.scss';
|
||
|
||
// 登录页 — 全部使用 design token,原型参考 docs/design/mp-01-login.html
|
||
|
||
.login-page {
|
||
min-height: 100vh;
|
||
background: $bg;
|
||
display: flex;
|
||
flex-direction: column;
|
||
padding: 80px 28px 40px;
|
||
}
|
||
|
||
/* ─── 品牌区 ─── */
|
||
.login-brand {
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
margin-bottom: 56px;
|
||
}
|
||
|
||
.login-logo {
|
||
width: 80px;
|
||
height: 80px;
|
||
border-radius: 40px;
|
||
background: linear-gradient(135deg, var(--tk-pri-l) 0%, var(--tk-pri) 100%);
|
||
@include flex-center;
|
||
margin-bottom: 20px;
|
||
box-shadow: 0 4px 16px rgba($pri, 0.25);
|
||
}
|
||
|
||
.login-logo-letter {
|
||
font-family: 'Georgia', 'Times New Roman', serif;
|
||
font-size: 36px;
|
||
font-weight: 700;
|
||
color: $white;
|
||
line-height: 1;
|
||
}
|
||
|
||
.login-title {
|
||
font-family: 'Georgia', 'Times New Roman', serif;
|
||
font-size: var(--tk-font-h1);
|
||
font-weight: 700;
|
||
color: $tx;
|
||
margin-bottom: 8px;
|
||
}
|
||
|
||
.login-subtitle {
|
||
font-size: var(--tk-font-body-sm);
|
||
color: $tx3;
|
||
}
|
||
|
||
/* ─── 输入框 ─── */
|
||
.login-field {
|
||
height: 56px;
|
||
background: $card;
|
||
border: 1.5px solid $bd;
|
||
border-radius: $r;
|
||
display: flex;
|
||
align-items: center;
|
||
padding: 0 16px;
|
||
margin-bottom: 12px;
|
||
}
|
||
|
||
.login-input {
|
||
flex: 1;
|
||
height: 100%;
|
||
font-size: var(--tk-font-body);
|
||
color: $tx;
|
||
}
|
||
|
||
.login-placeholder {
|
||
color: $tx3;
|
||
font-size: var(--tk-font-body);
|
||
}
|
||
|
||
.login-eye {
|
||
font-size: var(--tk-font-body-sm);
|
||
color: var(--tk-pri);
|
||
font-weight: 500;
|
||
padding: 6px 0;
|
||
flex-shrink: 0;
|
||
}
|
||
|
||
/* ─── 登录按钮 ─── */
|
||
.login-submit {
|
||
height: 54px;
|
||
border-radius: $r;
|
||
background: var(--tk-pri);
|
||
@include flex-center;
|
||
margin-top: 12px;
|
||
margin-bottom: 16px;
|
||
box-shadow: 0 4px 16px rgba($pri, 0.3);
|
||
|
||
&:active {
|
||
opacity: var(--tk-touch-feedback-opacity);
|
||
}
|
||
}
|
||
|
||
.login-submit-text {
|
||
font-size: var(--tk-font-body-lg);
|
||
font-weight: 600;
|
||
color: $white;
|
||
}
|
||
|
||
/* ─── 分隔线 ─── */
|
||
.login-divider {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 16px;
|
||
margin-bottom: 16px;
|
||
}
|
||
|
||
.login-divider-line {
|
||
flex: 1;
|
||
height: 1px;
|
||
background: $bd-l;
|
||
}
|
||
|
||
.login-divider-text {
|
||
font-size: var(--tk-font-cap);
|
||
color: $tx3;
|
||
}
|
||
|
||
/* ─── 微信登录 ─── */
|
||
.login-wechat-btn {
|
||
height: 54px;
|
||
border-radius: $r;
|
||
background: $wechat;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
gap: 8px;
|
||
margin-bottom: 24px;
|
||
|
||
&:active {
|
||
opacity: var(--tk-touch-feedback-opacity);
|
||
}
|
||
}
|
||
|
||
.login-wechat-icon {
|
||
font-size: var(--tk-font-body);
|
||
color: $white;
|
||
font-weight: bold;
|
||
}
|
||
|
||
.login-wechat-text {
|
||
font-size: var(--tk-font-body-lg);
|
||
font-weight: 600;
|
||
color: $white;
|
||
}
|
||
|
||
/* ─── 手机号绑定(微信登录后) ─── */
|
||
.login-bind-section {
|
||
width: 100%;
|
||
}
|
||
|
||
.login-btn-bind {
|
||
width: 100%;
|
||
height: 54px;
|
||
background: var(--tk-pri);
|
||
color: $white;
|
||
font-size: var(--tk-font-body-lg);
|
||
font-weight: 600;
|
||
border-radius: $r;
|
||
border: none;
|
||
@include flex-center;
|
||
box-shadow: 0 4px 16px rgba($pri, 0.25);
|
||
padding: 0;
|
||
line-height: 1;
|
||
|
||
&::after {
|
||
border: none;
|
||
}
|
||
}
|
||
|
||
/* ─── 协议 ─── */
|
||
.agreement-row {
|
||
display: flex;
|
||
align-items: flex-start;
|
||
gap: 10px;
|
||
}
|
||
|
||
.agreement-check {
|
||
width: 24px;
|
||
height: 24px;
|
||
border: 1.5px solid $bd;
|
||
border-radius: 6px;
|
||
@include flex-center;
|
||
flex-shrink: 0;
|
||
margin-top: 1px;
|
||
|
||
&.checked {
|
||
background: var(--tk-pri);
|
||
border-color: var(--tk-pri);
|
||
}
|
||
}
|
||
|
||
.agreement-check-mark {
|
||
font-size: var(--tk-font-body-sm);
|
||
color: $white;
|
||
font-weight: bold;
|
||
line-height: 1;
|
||
}
|
||
|
||
.agreement-text {
|
||
font-size: var(--tk-font-cap);
|
||
color: $tx3;
|
||
line-height: 1.8;
|
||
}
|
||
|
||
.agreement-link {
|
||
color: var(--tk-pri);
|
||
font-weight: 500;
|
||
}
|
||
|
||
/* ─── 开发模式 ─── */
|
||
.login-dev-btn {
|
||
text-align: center;
|
||
padding: 12px;
|
||
border: 1px dashed $bd;
|
||
border-radius: $r-sm;
|
||
margin-top: 16px;
|
||
|
||
&:active {
|
||
opacity: var(--tk-touch-feedback-opacity);
|
||
}
|
||
}
|
||
|
||
.login-dev-btn-text {
|
||
font-size: var(--tk-font-cap);
|
||
color: $tx3;
|
||
}
|