Files
offerpai_web/src/assets/styles/components/member-dialog.scss
T
2026-05-21 15:10:02 +08:00

1215 lines
22 KiB
SCSS

// 会员弹窗样式
@use '../variables' as *;
// 遮罩层
.member-dialog-overlay {
position: fixed;
inset: 0;
background: $overlay-bg;
z-index: 2000;
display: flex;
align-items: center;
justify-content: center;
}
.member-dialog {
background: $bg-white;
border-radius: 0.2rem;
width: 8.8rem;
height: 80vh;
position: relative;
box-shadow: 0 0.1rem 0.4rem rgba(0, 0, 0, 0.15);
display: flex;
flex-direction: column;
overflow: hidden;
font-size: 0.14rem;
// 关闭按钮
&__close {
position: absolute;
top: 0.16rem;
right: 0.2rem;
font-size: 0.18rem;
color: $text-light;
cursor: pointer;
transition: color 0.2s;
z-index: 10;
&:hover {
color: $text-dark;
}
}
// ==================== 介绍步骤一 ====================
&__intro-step1 {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 0.4rem;
background: #F0F8F8;
border-radius: 0.2rem;
}
&__intro-title {
font-size: 0.36rem;
font-weight: 700;
color: $text-dark;
margin-bottom: 0.2rem;
text-align: center;
}
&__intro-subtitle {
font-size: 0.16rem;
color: $text-middle;
margin-bottom: 0.5rem;
text-align: center;
}
&__intro-btn {
display: flex;
align-items: center;
gap: 0.08rem;
padding: 0.16rem 0.5rem;
background: #1A1A2E;
color: $bg-white;
border: none;
border-radius: 0.5rem;
font-size: 0.18rem;
font-weight: 600;
cursor: pointer;
transition: background 0.2s;
&:hover {
background: #2E3142;
}
}
&__intro-btn-icon {
color: $accent;
font-size: 0.2rem;
}
// ==================== 介绍步骤二 ====================
&__intro-step2 {
flex: 1;
overflow-y: auto;
padding: 0.36rem 0.5rem;
display: flex;
flex-direction: column;
align-items: center;
}
&__step2-badge {
display: inline-flex;
align-items: center;
gap: 0.04rem;
padding: 0.06rem 0.16rem;
background: #F0F8F8;
color: $accent;
border-radius: 0.2rem;
font-size: 0.12rem;
font-weight: 600;
margin-bottom: 0.16rem;
}
&__step2-title {
font-size: 0.32rem;
font-weight: 700;
color: $text-dark;
margin-bottom: 0.12rem;
text-align: center;
}
&__step2-subtitle {
font-size: 0.14rem;
color: $text-middle;
margin-bottom: 0.3rem;
text-align: center;
}
// ==================== 套餐卡片(介绍页) ====================
&__plans {
display: flex;
gap: 0.2rem;
width: 100%;
margin-bottom: 0.24rem;
}
&__plan-card {
flex: 1;
border: 1px solid $border-color;
border-radius: 0.14rem;
padding: 0.22rem 0.2rem;
cursor: pointer;
transition: all 0.25s ease;
display: flex;
flex-direction: column;
align-items: flex-start;
position: relative;
&:hover {
border-color: $accent;
box-shadow: 0 0.04rem 0.16rem rgba(79, 194, 201, 0.12);
}
&--active {
border-color: $accent;
box-shadow: 0 0.04rem 0.2rem rgba(79, 194, 201, 0.2);
.member-dialog__plan-btn {
background: $accent;
color: $bg-white;
border-color: $accent;
&:hover {
background: $accent-hover;
border-color: $accent-hover;
}
}
}
}
&__plan-recommend {
position: absolute;
top: -0.12rem;
left: 50%;
transform: translateX(-50%);
white-space: nowrap;
background: $accent;
color: $bg-white;
font-size: 0.1rem;
padding: 0.03rem 0.12rem;
border-radius: 0.1rem;
font-weight: 600;
}
&__plan-tag {
font-size: 0.1rem;
color: $text-middle;
margin-bottom: 0.06rem;
}
&__plan-name {
font-size: 0.16rem;
font-weight: 600;
color: $text-dark;
margin-bottom: 0.1rem;
}
&__plan-price {
display: flex;
align-items: baseline;
margin-bottom: 0.06rem;
}
&__plan-price-symbol {
font-size: 0.16rem;
font-weight: 700;
color: $text-dark;
}
&__plan-price-num {
font-size: 0.36rem;
font-weight: 700;
color: $text-dark;
line-height: 1;
}
&__plan-price-unit {
font-size: 0.12rem;
color: $text-middle;
margin-left: 0.04rem;
}
&__plan-per-month {
font-size: 0.11rem;
color: $accent;
margin-bottom: 0.14rem;
}
&__plan-btn {
width: 100%;
padding: 0.1rem 0;
border-radius: 0.12rem;
font-size: 0.13rem;
font-weight: 600;
cursor: pointer;
transition: all 0.2s;
border: 1px solid $border-color;
background: $bg-white;
color: $text-dark;
text-align: center;
margin-top: auto;
&:hover {
border-color: $accent;
color: $accent;
}
}
// ==================== 提示信息 ====================
&__tip {
width: 100%;
background: #FFFBF0;
border: 1px solid #FFE8B0;
border-radius: 0.1rem;
padding: 0.14rem 0.18rem;
display: flex;
align-items: flex-start;
gap: 0.08rem;
margin-bottom: 0.3rem;
font-size: 0.12rem;
}
&__tip-icon {
flex-shrink: 0;
}
&__tip-label {
font-weight: 600;
color: $text-dark;
white-space: nowrap;
}
&__tip-text {
color: $danger;
}
// ==================== 底部内容行 ====================
&__content-row {
width: 100%;
display: flex;
gap: 0.3rem;
margin-bottom: 0.3rem;
}
&__abilities {
flex: 1;
}
&__abilities-title {
font-size: 0.16rem;
font-weight: 700;
color: $text-dark;
margin-bottom: 0.24rem;
}
&__ability-item {
display: flex;
align-items: flex-start;
gap: 0.12rem;
margin-bottom: 0.28rem;
}
&__ability-icon {
font-size: 0.16rem;
flex-shrink: 0;
line-height: 1.4;
}
&__ability-text {
font-size: 0.14rem;
color: $text-dark;
line-height: 1.4;
font-weight: 500;
}
&__compare {
flex: 1;
}
&__compare-title {
font-size: 0.16rem;
font-weight: 700;
color: $text-dark;
margin-bottom: 0.16rem;
}
&__compare-table {
width: 100%;
border-collapse: collapse;
font-size: 0.12rem;
th, td {
padding: 0.12rem 0.1rem;
text-align: left;
border-bottom: 1px solid $border-color;
}
th {
font-weight: 600;
color: $text-middle;
font-size: 0.11rem;
}
}
&__compare-th-pro {
color: $accent !important;
}
&__compare-free {
color: $text-middle;
}
&__compare-pro {
color: $accent;
font-weight: 600;
}
&__compare-footer {
display: flex;
gap: 0.24rem;
margin-top: 0.16rem;
font-size: 0.11rem;
color: $text-light;
}
// ==================== 用户评价 ====================
&__testimonial {
width: 100%;
display: flex;
gap: 0.16rem;
padding: 0.2rem;
background: $bg-main;
border-radius: 0.12rem;
margin-bottom: 0.2rem;
}
&__testimonial-avatar {
width: 0.48rem;
height: 0.48rem;
border-radius: 50%;
overflow: hidden;
flex-shrink: 0;
img {
width: 100%;
height: 100%;
object-fit: cover;
}
}
&__testimonial-content {
flex: 1;
}
&__testimonial-stars {
color: #F5A623;
font-size: 0.14rem;
margin-bottom: 0.08rem;
}
&__testimonial-text {
font-size: 0.12rem;
color: $text-dark;
line-height: 1.8;
margin-bottom: 0.1rem;
}
&__testimonial-author {
font-size: 0.11rem;
}
&__testimonial-name {
font-weight: 600;
color: $text-dark;
}
&__testimonial-desc {
color: $accent;
margin-left: 0.04rem;
}
// ==================== 下单步骤通用 ====================
&__order {
flex: 1;
display: flex;
flex-direction: column;
overflow: hidden;
}
&__order-header {
display: flex;
align-items: center;
padding: 0.2rem 0.3rem;
border-bottom: 1px solid $border-color;
flex-shrink: 0;
}
&__order-back {
font-size: 0.14rem;
color: $text-middle;
cursor: pointer;
white-space: nowrap;
min-width: 1.2rem;
&:hover {
color: $text-dark;
}
}
// ==================== 步骤条 ====================
&__steps {
display: flex;
align-items: center;
justify-content: center;
flex: 1;
gap: 0.08rem;
}
&__step {
display: flex;
align-items: center;
gap: 0.06rem;
}
&__step-num {
width: 0.24rem;
height: 0.24rem;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 0.11rem;
font-weight: 600;
background: $bg-main;
color: $text-middle;
}
&__step-label {
font-size: 0.12rem;
color: $text-middle;
}
&__step--active {
.member-dialog__step-num {
background: $accent;
color: $bg-white;
}
.member-dialog__step-label {
color: $text-dark;
font-weight: 600;
}
}
&__step--done {
.member-dialog__step-num {
background: $accent;
color: $bg-white;
}
.member-dialog__step-label {
color: $accent;
}
}
&__step-line {
width: 0.6rem;
height: 2px;
background: $border-color;
&--done {
background: $accent;
}
}
// ==================== 下单步骤一:主体 ====================
&__order-body {
flex: 1;
display: flex;
overflow-y: auto;
}
&__order-left {
flex: 1;
padding: 0.3rem;
}
&__order-right {
width: 2.8rem;
padding: 0.3rem 0.24rem;
background: $bg-main;
flex-shrink: 0;
}
&__order-title {
font-size: 0.24rem;
font-weight: 700;
color: $text-dark;
margin-bottom: 0.1rem;
}
&__order-desc {
font-size: 0.13rem;
color: $text-middle;
margin-bottom: 0.28rem;
line-height: 1.6;
}
// ==================== 下单套餐选择卡片 ====================
&__order-plans {
display: flex;
gap: 0.16rem;
margin-bottom: 0.3rem;
}
&__order-plan-card {
flex: 1;
border: 1px solid $border-color;
border-radius: 0.12rem;
padding: 0.2rem 0.16rem;
cursor: pointer;
transition: all 0.2s;
position: relative;
display: flex;
align-items: flex-start;
gap: 0.12rem;
&:hover {
border-color: $accent;
}
&--active {
border-color: $accent;
background: rgba(79, 194, 201, 0.03);
}
}
&__order-plan-badge {
position: absolute;
top: -0.1rem;
left: 50%;
transform: translateX(-50%);
background: $accent;
color: $bg-white;
font-size: 0.09rem;
padding: 0.02rem 0.1rem;
border-radius: 0.08rem;
font-weight: 600;
white-space: nowrap;
}
&__order-plan-radio {
width: 0.18rem;
height: 0.18rem;
border-radius: 50%;
border: 2px solid $border-color;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
margin-top: 0.02rem;
.member-dialog__order-plan-card--active & {
border-color: $accent;
}
}
&__order-plan-radio-inner {
width: 0.1rem;
height: 0.1rem;
border-radius: 50%;
background: $accent;
}
&__order-plan-info {
flex: 1;
}
&__order-plan-name {
font-size: 0.14rem;
font-weight: 600;
color: $text-dark;
margin-bottom: 0.06rem;
}
&__order-plan-price {
display: flex;
align-items: baseline;
margin-bottom: 0.06rem;
}
&__order-plan-price-symbol {
font-size: 0.14rem;
font-weight: 700;
color: $text-dark;
}
&__order-plan-price-num {
font-size: 0.28rem;
font-weight: 700;
color: $text-dark;
line-height: 1;
}
&__order-plan-price-unit {
font-size: 0.11rem;
color: $text-middle;
margin-left: 0.03rem;
}
&__order-plan-desc {
font-size: 0.1rem;
color: $text-middle;
line-height: 1.5;
}
// ==================== 支付方式 ====================
&__order-payment {
margin-bottom: 0.28rem;
}
&__order-payment-title {
font-size: 0.16rem;
font-weight: 700;
color: $text-dark;
margin-bottom: 0.16rem;
}
&__order-payment-methods {
display: flex;
gap: 0.16rem;
margin-bottom: 0.16rem;
}
&__order-payment-item {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
gap: 0.08rem;
padding: 0.16rem;
border: 1px solid $border-color;
border-radius: 0.1rem;
cursor: pointer;
transition: all 0.2s;
&:hover {
border-color: $accent;
}
&--active {
border-color: $accent;
background: rgba(79, 194, 201, 0.05);
}
}
&__order-payment-icon {
font-size: 0.2rem;
}
&__order-payment-name {
font-size: 0.13rem;
color: $text-dark;
}
&__order-payment-hint {
text-align: center;
padding: 0.14rem;
background: $bg-main;
border-radius: 0.08rem;
font-size: 0.12rem;
color: $text-middle;
margin-bottom: 0.1rem;
}
&__order-payment-safe {
font-size: 0.11rem;
color: $text-light;
}
// ==================== 保障标签 ====================
&__order-guarantees {
display: flex;
gap: 0.16rem;
margin-bottom: 0.3rem;
padding: 0.14rem 0;
border-top: 1px solid $border-color;
border-bottom: 1px solid $border-color;
}
&__order-guarantee-item {
font-size: 0.12rem;
color: $text-middle;
display: flex;
align-items: center;
gap: 0.04rem;
}
// ==================== 常见问题 ====================
&__order-faq {
margin-bottom: 0.2rem;
}
&__order-faq-title {
font-size: 0.16rem;
font-weight: 700;
color: $text-dark;
margin-bottom: 0.16rem;
}
&__order-faq-item {
border: 1px solid $border-color;
border-radius: 0.1rem;
padding: 0.16rem;
margin-bottom: 0.1rem;
cursor: pointer;
transition: background 0.2s;
&:hover {
background: $bg-main;
}
}
&__order-faq-question {
display: flex;
align-items: center;
justify-content: space-between;
font-size: 0.13rem;
font-weight: 600;
color: $text-dark;
}
&__order-faq-arrow {
font-size: 0.16rem;
color: $text-light;
transition: transform 0.2s;
transform: rotate(90deg);
&--open {
transform: rotate(-90deg);
}
}
&__order-faq-answer {
font-size: 0.12rem;
color: $text-middle;
margin-top: 0.1rem;
line-height: 1.6;
}
// ==================== 右侧订单摘要 ====================
&__order-summary {
background: $bg-white;
border-radius: 0.12rem;
padding: 0.24rem;
}
&__order-summary-title {
font-size: 0.16rem;
font-weight: 700;
color: $text-dark;
margin-bottom: 0.2rem;
}
&__order-summary-row {
display: flex;
align-items: flex-start;
justify-content: space-between;
margin-bottom: 0.12rem;
}
&__order-summary-plan {
font-size: 0.14rem;
font-weight: 600;
color: $text-dark;
}
&__order-summary-duration {
font-size: 0.11rem;
color: $text-middle;
margin-top: 0.02rem;
}
&__order-summary-price {
font-size: 0.14rem;
color: $text-dark;
}
&__order-summary-divider {
height: 1px;
background: $border-color;
margin: 0.14rem 0;
}
&__order-summary-label {
font-size: 0.14rem;
font-weight: 600;
color: $text-dark;
}
&__order-summary-total {
font-size: 0.22rem;
font-weight: 700;
color: $accent;
}
&__order-summary-agree {
display: flex;
align-items: flex-start;
gap: 0.08rem;
margin: 0.16rem 0;
font-size: 0.1rem;
color: $text-middle;
line-height: 1.5;
a {
color: $accent;
text-decoration: none;
&:hover {
text-decoration: underline;
}
}
}
// 自定义复选框
&__order-checkbox {
position: relative;
display: flex;
align-items: center;
flex-shrink: 0;
input {
position: absolute;
opacity: 0;
width: 0;
height: 0;
&:checked + .member-dialog__order-checkbox-mark {
background: $accent;
border-color: $accent;
&::after {
display: block;
}
}
}
}
&__order-checkbox-mark {
width: 0.16rem;
height: 0.16rem;
border: 2px solid $border-color;
border-radius: 0.03rem;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
transition: all 0.2s;
&::after {
content: '';
display: none;
color: $bg-white;
font-size: 0.1rem;
font-weight: 700;
}
}
&__order-submit-btn {
width: 100%;
padding: 0.14rem;
background: $accent;
color: $bg-white;
border: none;
border-radius: 0.08rem;
font-size: 0.14rem;
font-weight: 600;
cursor: pointer;
transition: background 0.2s;
&:hover {
background: $accent-hover;
}
&:disabled {
background: $border-color;
color: $text-light;
cursor: not-allowed;
}
}
&__order-submit-tip {
font-size: 0.1rem;
color: $text-light;
text-align: center;
margin-top: 0.1rem;
}
// 你将获得
&__order-benefits {
margin-top: 0.24rem;
padding-top: 0.2rem;
border-top: 1px solid $border-color;
}
&__order-benefits-title {
font-size: 0.13rem;
font-weight: 600;
color: $text-dark;
margin-bottom: 0.14rem;
}
&__order-benefits-item {
display: flex;
align-items: center;
gap: 0.08rem;
font-size: 0.12rem;
color: $text-dark;
margin-bottom: 0.1rem;
}
&__order-benefits-check {
color: $accent;
font-weight: 700;
}
// ==================== 下单步骤二:确认支付 ====================
&__order-confirming {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
padding: 0.4rem;
background: #F0F8F8;
}
&__order-confirming-card {
background: $bg-white;
border-radius: 0.16rem;
padding: 0.6rem 0.8rem;
text-align: center;
box-shadow: 0 0.04rem 0.2rem rgba(0, 0, 0, 0.06);
}
&__order-loading-spinner {
width: 0.5rem;
height: 0.5rem;
border: 3px solid #E8F8F8;
border-top-color: $accent;
border-radius: 50%;
margin: 0 auto 0.24rem;
animation: member-spin 1s linear infinite;
}
@keyframes member-spin {
to {
transform: rotate(360deg);
}
}
&__order-confirming-title {
font-size: 0.2rem;
font-weight: 700;
color: $text-dark;
margin-bottom: 0.1rem;
}
&__order-confirming-desc {
font-size: 0.13rem;
color: $text-middle;
}
// ==================== 下单步骤三:支付成功 ====================
&__order-success {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
padding: 0.4rem;
background: #F0F8F8;
}
&__order-success-card {
background: $bg-white;
border-radius: 0.16rem;
padding: 0.5rem 0.8rem;
text-align: center;
box-shadow: 0 0.04rem 0.2rem rgba(0, 0, 0, 0.06);
min-width: 4rem;
}
&__order-success-icon {
width: 0.6rem;
height: 0.6rem;
border-radius: 50%;
background: $accent;
color: $bg-white;
display: flex;
align-items: center;
justify-content: center;
font-size: 0.28rem;
font-weight: 700;
margin: 0 auto 0.24rem;
}
&__order-success-title {
font-size: 0.22rem;
font-weight: 700;
color: $text-dark;
margin-bottom: 0.12rem;
}
&__order-success-desc {
font-size: 0.13rem;
color: $text-middle;
line-height: 1.6;
margin-bottom: 0.3rem;
}
&__order-success-btn {
width: 100%;
padding: 0.14rem;
background: $accent;
color: $bg-white;
border: none;
border-radius: 0.08rem;
font-size: 0.14rem;
font-weight: 600;
cursor: pointer;
transition: background 0.2s;
margin-bottom: 0.12rem;
&:hover {
background: $accent-hover;
}
}
&__order-success-btn-secondary {
width: 100%;
padding: 0.14rem;
background: $bg-white;
color: $accent;
border: 1px solid $border-color;
border-radius: 0.08rem;
font-size: 0.14rem;
font-weight: 600;
cursor: pointer;
transition: all 0.2s;
&:hover {
border-color: $accent;
}
}
// ==================== 付款二维码遮罩层 ====================
&__qrcode-overlay {
position: absolute;
inset: 0;
background: rgba(0, 0, 0, 0.5);
display: flex;
align-items: center;
justify-content: center;
z-index: 20;
border-radius: 0.2rem;
}
&__qrcode-modal {
background: $bg-white;
border-radius: 0.16rem;
padding: 0.3rem 0.4rem;
text-align: center;
position: relative;
width: 5rem;
max-height: 80vh;
overflow-y: auto;
box-shadow: 0 0.1rem 0.4rem rgba(0, 0, 0, 0.15);
}
&__qrcode-close {
position: absolute;
top: 0.12rem;
right: 0.16rem;
font-size: 0.16rem;
color: $text-light;
cursor: pointer;
&:hover {
color: $text-dark;
}
}
&__qrcode-title {
display: flex;
align-items: center;
justify-content: center;
gap: 0.06rem;
font-size: 0.13rem;
color: $accent;
font-weight: 600;
margin-bottom: 0.12rem;
}
&__qrcode-title-icon {
font-size: 0.16rem;
}
&__qrcode-subtitle {
font-size: 0.18rem;
font-weight: 700;
color: $text-dark;
margin-bottom: 0.08rem;
}
&__qrcode-desc {
font-size: 0.11rem;
color: $text-middle;
margin-bottom: 0.2rem;
line-height: 1.5;
}
&__qrcode-image {
width: 2.1rem;
height: 2.1rem;
margin: 0 auto 0.16rem;
display: flex;
align-items: center;
justify-content: center;
}
&__payment-iframe {
width: 100%;
height: 100%;
border: none;
border-radius: 0.08rem;
}
&__qrcode-placeholder {
width: 100%;
height: 100%;
background: $bg-main;
border: 1px dashed $border-color;
border-radius: 0.08rem;
}
&__qrcode-amount {
font-size: 0.22rem;
font-weight: 700;
color: $text-dark;
margin-bottom: 0.2rem;
}
&__qrcode-confirm-btn {
width: 100%;
padding: 0.12rem;
background: $accent;
color: $bg-white;
border: none;
border-radius: 0.08rem;
font-size: 0.14rem;
font-weight: 600;
cursor: pointer;
transition: background 0.2s;
&:hover {
background: $accent-hover;
}
}
}