Files
doodle-mini/miniprogram/pages/profile/profile.less
T

464 lines
8.7 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: 224rpx;
height: 224rpx;
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: 36rpx;
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: 48rpx;
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;
}
.profile-editor-popup {
border-radius: 40rpx 40rpx 0 0;
overflow: hidden;
}
.profile-editor {
overflow-y: auto;
padding: 32rpx 40rpx;
padding-bottom: env(safe-area-inset-bottom);
background: @bg-white;
box-sizing: border-box;
}
.profile-editor__header {
margin-bottom: 24rpx;
}
.profile-editor__title {
display: block;
font-size: 36rpx;
font-weight: 700;
color: @text-title;
}
.profile-editor__desc {
display: block;
margin-top: 12rpx;
font-size: 24rpx;
line-height: 1.5;
color: @text-secondary;
}
.profile-editor__avatar-section {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
margin-bottom: 28rpx;
}
.profile-editor__avatar-button {
width: 100%;
display: flex;
align-items: center;
justify-content: center;
padding: 0;
margin: 0;
background: transparent;
border: 0;
line-height: 1;
}
.profile-editor__avatar-button::after {
border: 0;
}
.profile-editor__avatar {
width: 180rpx;
height: 180rpx;
border-radius: 50%;
background: @bg-gray;
border: 2rpx dashed fade(@text-secondary, 30%);
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
box-sizing: border-box;
}
.profile-editor__avatar-placeholder {
width: 120rpx;
font-size: 24rpx;
line-height: 1.4;
color: @text-secondary;
text-align: center;
}
.profile-editor__avatar-img {
width: 100%;
height: 100%;
}
.profile-editor__field {
margin-bottom: 28rpx;
}
.profile-editor__label {
display: block;
margin-bottom: 16rpx;
font-size: 26rpx;
font-weight: 600;
color: @text-title;
}
.profile-editor__input {
width: 100%;
height: 96rpx;
padding: 0 28rpx;
border-radius: 24rpx;
background: @bg-header;
border: 1rpx solid rgba(124, 118, 106, 0.12);
box-sizing: border-box;
font-size: 30rpx;
color: @text-title;
}
.profile-editor__actions {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 24rpx;
padding-top: 20rpx;
}
.profile-editor__action {
height: 92rpx;
border-radius: 24rpx;
display: flex;
align-items: center;
justify-content: center;
box-sizing: border-box;
font-size: 30rpx;
font-weight: 700;
}
.profile-editor__action--ghost {
background: @bg-header;
color: @text-title;
border: 1rpx solid rgba(124, 118, 106, 0.12);
}
.profile-editor__action--primary {
background: @brand;
color: @text-selected-btn;
box-shadow: @shadow;
}
.profile-editor__action--disabled {
opacity: 0.6;
}