Files
doodle-mini/miniprogram/pages/profile/profile.less
T
2026-04-23 12:08:07 +08:00

324 lines
6.1 KiB
Plaintext

@import '../../style/theme.less';
@profile-premium-bg: #2d2a26;
/* 整页滚动:避免 scroll-view 在真机因未给出明确高度而高度为 0 */
page {
min-height: 100%;
background: @bg-header;
}
.profile-page {
min-height: 100vh;
background: @bg-header;
box-sizing: border-box;
}
.profile-body {
width: 100%;
box-sizing: border-box;
}
.profile-main {
padding: @section-gap-xs @page-padding-x;
padding-bottom: calc(32rpx + env(safe-area-inset-bottom) + 120rpx);
box-sizing: border-box;
}
/* 用户主卡 */
.profile-hero {
position: relative;
display: flex;
flex-direction: column;
align-items: center;
padding: 80rpx @page-padding-inner-x 64rpx;
background: @bg-white;
border-radius: @radius-xl;
border: 1rpx solid rgba(124, 118, 106, 0.12);
box-shadow: @shadow;
overflow: hidden;
margin-bottom: @section-gap-xs;
}
.profile-hero__tint {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 192rpx;
background: @brand;
opacity: 0.1;
pointer-events: none;
}
.profile-hero__avatar-wrap {
position: relative;
margin-top: 16rpx;
}
.profile-hero__avatar {
width: 256rpx;
height: 256rpx;
border-radius: 50%;
border: 8rpx solid @bg-white;
background: @bg-gray;
box-shadow: @shadow;
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
box-sizing: border-box;
}
.profile-hero__avatar-emoji {
font-size: 112rpx;
line-height: 1;
}
.profile-hero__avatar-img {
width: 100%;
height: 100%;
}
.profile-hero__edit-badge {
position: absolute;
right: 8rpx;
bottom: 8rpx;
width: 56rpx;
height: 56rpx;
border-radius: 50%;
background: @brand;
border: 8rpx solid @bg-white;
display: flex;
align-items: center;
justify-content: center;
box-shadow: @shadow;
box-sizing: border-box;
}
.profile-hero__name {
margin-top: 32rpx;
font-size: 40rpx;
font-weight: 700;
color: @text-title;
text-align: center;
}
.profile-hero__stats {
display: flex;
flex-direction: row;
width: 100%;
margin-top: 64rpx;
padding: 0 @page-padding-inner-x;
box-sizing: border-box;
}
.profile-hero__stat {
flex: 1;
background: @bg-header;
border-radius: @radius;
border: 1rpx solid rgba(124, 118, 106, 0.12);
padding: 32rpx 24rpx;
text-align: center;
box-sizing: border-box;
}
.profile-hero__stat+.profile-hero__stat {
margin-left: 32rpx;
}
.profile-hero__stat-num {
display: block;
font-size: 36rpx;
font-weight: 800;
color: @text-title;
line-height: 1.2;
}
.profile-hero__stat-label {
display: block;
margin-top: 8rpx;
font-size: 20rpx;
font-weight: 600;
color: @text-secondary;
letter-spacing: 0.08em;
text-transform: uppercase;
}
/* 双格 */
.profile-grid {
display: flex;
flex-direction: row;
margin-bottom: @section-gap-xs;
}
.profile-grid__cell {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
padding: 48rpx 24rpx;
background: @bg-white;
border-radius: @radius-xl;
border: 1rpx solid rgba(124, 118, 106, 0.12);
box-sizing: border-box;
}
.profile-grid__cell+.profile-grid__cell {
margin-left: 32rpx;
}
.profile-grid__icon-wrap {
width: 96rpx;
height: 96rpx;
border-radius: 50%;
background: @brand;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 32rpx;
box-shadow: @shadow;
}
.profile-grid__title {
font-size: 30rpx;
font-weight: 700;
color: @text-title;
}
.profile-grid__sub {
margin-top: 8rpx;
font-size: 22rpx;
color: @text-secondary;
text-align: center;
line-height: 1.35;
}
/* 圆角列表 */
.profile-rows {
display: flex;
flex-direction: column;
margin-bottom: @section-gap-xs;
}
.profile-row {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
padding: 40rpx 40rpx;
background: @bg-white;
border-radius: 999rpx;
border: 1rpx solid rgba(124, 118, 106, 0.12);
box-sizing: border-box;
margin-bottom: 32rpx;
}
.profile-row--last {
margin-bottom: 0;
}
.profile-row__left {
display: flex;
flex-direction: row;
align-items: center;
min-width: 0;
}
.profile-row__icon-bg {
width: 80rpx;
height: 80rpx;
border-radius: 50%;
background: fade(@brand, 18%);
display: flex;
align-items: center;
justify-content: center;
margin-right: 32rpx;
flex-shrink: 0;
}
.profile-row__icon-emoji {
font-size: 36rpx;
line-height: 1;
}
.profile-row__label {
font-size: 30rpx;
font-weight: 600;
color: @text-title;
}
.profile-row__chevron {
font-size: 40rpx;
color: @text-gray;
font-weight: 300;
flex-shrink: 0;
margin-left: 16rpx;
}
/* 专业版卡 */
.profile-upsell {
position: relative;
overflow: hidden;
background: @profile-premium-bg;
border-radius: @radius-xl;
padding: 64rpx 48rpx;
box-shadow: @shadow-lg;
margin-bottom: @section-gap-sm;
}
.profile-upsell__deco {
position: absolute;
top: -24rpx;
right: -32rpx;
pointer-events: none;
opacity: 0.35;
}
.profile-upsell__body {
position: relative;
z-index: 1;
}
.profile-upsell__title {
display: block;
font-size: 36rpx;
font-weight: 800;
color: @text-white;
}
.profile-upsell__desc {
display: block;
margin-top: 16rpx;
font-size: 26rpx;
line-height: 1.45;
color: rgba(255, 255, 255, 0.7);
max-width: 400rpx;
}
.profile-upsell__btn {
display: inline-flex;
align-items: center;
justify-content: center;
margin-top: 48rpx;
padding: 24rpx 64rpx;
border-radius: 999rpx;
background: @brand;
color: @text-selected-btn;
font-size: 28rpx;
font-weight: 700;
box-shadow: @shadow-lg;
}
.profile-version {
text-align: center;
padding: 24rpx 0 0;
}
.profile-version__text {
font-size: 20rpx;
font-weight: 600;
color: @text-secondary;
letter-spacing: 0.2em;
text-transform: uppercase;
}