You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

672 lines
10 KiB

.container {
display: flex;
flex-direction: column;
min-height: 100vh;
background: linear-gradient(135deg, #F9FAFB 0%, #F2F4F8 100%);
font-family: 'PingFang SC', 'Helvetica Neue', Arial, sans-serif;
}
1 week ago
/* 步骤指示器 */
.step-indicator {
display: flex;
align-items: center;
justify-content: space-between;
padding: 32rpx;
background: #FFFFFF;
box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.05);
margin-bottom: 24rpx;
width: 100%;
box-sizing: border-box;
}
.step-item {
display: flex;
flex-direction: column;
align-items: center;
flex: 1;
}
.step-number {
width: 48rpx;
height: 48rpx;
border-radius: 50%;
background: #E5E5E5;
display: flex;
align-items: center;
justify-content: center;
font-size: 24rpx;
font-weight: 600;
color: #999;
margin-bottom: 8rpx;
transition: all 0.3s ease;
}
.step-text {
font-size: 20rpx;
color: #999;
transition: all 0.3s ease;
}
.step-item.active .step-number {
background: #007AFF;
color: #FFFFFF;
box-shadow: 0 0 0 8rpx rgba(0,122,255,0.1);
}
.step-item.active .step-text {
color: #007AFF;
font-weight: 500;
}
.step-line {
flex: 1;
height: 2rpx;
background: #E5E5E5;
margin: 0 16rpx;
transition: all 0.3s ease;
}
.step-line.active {
background: #007AFF;
}
.header {
background: #FFFFFF;
box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.05);
position: sticky;
top: 0;
z-index: 10;
1 week ago
width: 100%;
box-sizing: border-box;
}
.header-content {
display: flex;
align-items: center;
padding: 24rpx 32rpx;
width: 100%;
box-sizing: border-box;
height: 100rpx;
1 week ago
max-width: 100%;
position: relative;
}
.back-button {
width: 100rpx;
height: 60rpx;
line-height: 60rpx;
1 week ago
font-size: 36rpx;
color: #4a90e2;
background: transparent;
border: none;
1 week ago
padding: 0 16rpx 0 0;
margin: 0;
display: flex;
align-items: center;
justify-content: flex-start;
border-radius: 8rpx;
transition: all 0.3s ease;
1 week ago
flex-shrink: 0;
overflow: visible;
}
.back-button:hover {
color: #3b82f6;
background: rgba(74, 144, 226, 0.1);
}
.back-icon {
margin-right: 8rpx;
1 week ago
font-size: 36rpx;
font-weight: 600;
1 week ago
transition: all 0.3s ease;
display: inline-block;
}
.back-button:hover .back-icon {
transform: translateX(-12rpx);
font-weight: 700;
}
.back-text {
1 week ago
font-size: 36rpx;
font-weight: 700;
}
.title {
font-size: 36rpx;
font-weight: 700;
color: #2c3e50;
letter-spacing: 2rpx;
text-align: center;
margin: 0;
padding: 0;
1 week ago
position: absolute;
left: 50%;
transform: translateX(-50%);
width: 100%;
max-width: 300rpx;
}
.header-right {
1 week ago
width: 60rpx;
flex-shrink: 0;
}
.content {
flex: 1;
padding: 32rpx;
display: flex;
flex-direction: column;
width: 100%;
box-sizing: border-box;
overflow-x: hidden;
}
/* 加载状态 */
.loading {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(255, 255, 255, 0.9);
z-index: 9999;
width: 100%;
box-sizing: border-box;
}
.loading-spinner {
width: 80rpx;
height: 80rpx;
border: 8rpx solid rgba(74, 144, 226, 0.2);
border-top: 8rpx solid #4a90e2;
border-radius: 50%;
animation: spin 1s linear infinite;
margin-bottom: 32rpx;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
.loading-text {
font-size: 28rpx;
color: #666;
font-weight: 500;
}
/* 错误提示卡片 */
.error-card {
background: #fff;
border-radius: 16rpx;
padding: 48rpx;
margin: 32rpx 0;
box-shadow: 0 4rpx 20rpx rgba(0,0,0,0.08);
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
}
.error-icon {
font-size: 80rpx;
margin-bottom: 24rpx;
}
.error-text {
font-size: 28rpx;
color: #e74c3c;
margin-bottom: 32rpx;
line-height: 1.5;
}
/* 按钮样式 */
.button-group {
display: flex;
gap: 16rpx;
width: 100%;
}
.btn-primary {
flex: 1;
height: 80rpx;
line-height: 80rpx;
font-size: 32rpx;
font-weight: 600;
border-radius: 40rpx;
background: linear-gradient(135deg, #007AFF 0%, #0051D5 100%);
color: #fff;
border: none;
box-shadow: 0 4rpx 8rpx rgba(0,122,255,0.2);
transition: all 0.3s ease;
padding: 0 48rpx;
}
.btn-primary:hover {
transform: translateY(-2rpx);
box-shadow: 0 6rpx 16rpx rgba(0,122,255,0.3);
}
.btn-secondary {
flex: 1;
height: 80rpx;
line-height: 80rpx;
font-size: 32rpx;
font-weight: 600;
border-radius: 40rpx;
background: #fff;
color: #007AFF;
border: 1rpx solid #007AFF;
transition: all 0.3s ease;
padding: 0 48rpx;
}
.btn-secondary:hover {
background: rgba(0,122,255,0.05);
transform: translateY(-2rpx);
}
.btn-change-product {
display: flex;
align-items: center;
justify-content: center;
padding: 12rpx 24rpx;
font-size: 28rpx;
color: #007AFF;
background: transparent;
border: 1rpx solid #007AFF;
border-radius: 20rpx;
transition: all 0.3s ease;
box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.05);
}
.btn-change-product:hover {
background: rgba(0,122,255,0.1);
transform: translateY(-2rpx);
box-shadow: 0 4rpx 12rpx rgba(0,122,255,0.2);
}
.btn-change-product-text {
font-size: 28rpx;
}
/* 商品信息卡片 */
.product-card {
background: #FFFFFF;
border-radius: 12rpx;
padding: 32rpx;
margin: 24rpx 0 32rpx;
width: 100%;
box-shadow: 0 4rpx 12rpx rgba(0,0,0,0.04);
transition: all 0.3s ease;
}
.product-info-container {
width: 100%;
box-sizing: border-box;
}
.product-info-row {
display: flex;
align-items: center;
width: 100%;
box-sizing: border-box;
}
1 week ago
.product-image-container {
width: 120rpx;
height: 120rpx;
border-radius: 8rpx;
overflow: hidden;
margin-right: 24rpx;
background: #F5F5F5;
flex-shrink: 0;
}
.product-image {
width: 100%;
height: 100%;
object-fit: cover;
}
.product-details {
flex: 1;
1 week ago
display: flex;
flex-direction: column;
gap: 8rpx;
}
.product-name {
font-size: 32rpx;
font-weight: 600;
color: #333;
line-height: 1.4;
word-break: break-word;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
}
1 week ago
.product-hint {
font-size: 24rpx;
color: #999;
line-height: 1.4;
}
/* 规格列表区域 */
.spec-section {
margin-top: 32rpx;
width: 100%;
}
.section-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 24rpx;
padding: 0;
width: 100%;
}
.section-title {
font-size: 32rpx;
font-weight: 600;
color: #333;
padding-left: 16rpx;
border-left: 6rpx solid #007AFF;
border-radius: 4rpx;
line-height: 32rpx;
}
.section-count {
font-size: 28rpx;
color: #999;
}
/* 规格列表布局 */
.spec-list {
margin-top: 16rpx;
1 week ago
display: flex;
flex-direction: column;
gap: 16rpx;
width: 100%;
}
/* 规格项 */
.spec-item {
background: #FFFFFF;
1 week ago
border: 1rpx solid #E5E5E5;
border-radius: 12rpx;
1 week ago
padding: 32rpx 32rpx;
cursor: pointer;
display: flex;
align-items: center;
1 week ago
justify-content: space-between;
width: 100%;
1 week ago
box-sizing: border-box;
box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.02);
transition: all 0.3s ease;
}
1 week ago
.spec-radio {
width: 32rpx;
height: 32rpx;
border: 2rpx solid #E5E5E5;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
transition: all 0.3s ease;
margin-left: 16rpx;
}
.spec-item:hover {
box-shadow: 0 4rpx 12rpx rgba(0,0,0,0.05);
transform: translateY(-2rpx);
}
.spec-item:active {
background: #F5F5F5;
}
1 week ago
.spec-item.selected {
border: 2rpx solid #007AFF;
box-shadow: 0 0 0 4rpx rgba(0,122,255,0.1);
}
.spec-info {
flex: 1;
display: flex;
flex-direction: column;
gap: 8rpx;
}
.spec-name {
font-size: 30rpx;
font-weight: 500;
color: #333;
line-height: 1.4;
word-break: break-word;
padding: 0 8rpx;
}
1 week ago
.spec-details {
font-size: 24rpx;
color: #666;
line-height: 1.4;
padding: 0 8rpx;
}
.spec-radio {
width: 32rpx;
height: 32rpx;
border: 2rpx solid #E5E5E5;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
transition: all 0.3s ease;
}
.spec-radio.selected {
border-color: #007AFF;
background: #007AFF;
}
.radio-inner {
width: 16rpx;
height: 16rpx;
border-radius: 50%;
background: #FFFFFF;
transition: all 0.3s ease;
}
/* 空状态 */
.empty-state {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 120rpx 0;
text-align: center;
width: 100%;
}
.empty-icon {
font-size: 120rpx;
margin-bottom: 40rpx;
opacity: 0.6;
color: #CCC;
}
.empty-text {
font-size: 32rpx;
font-weight: 600;
color: #333;
margin-bottom: 16rpx;
line-height: 1.4;
padding: 0 40rpx;
}
.empty-subtext {
font-size: 28rpx;
color: #999;
margin-bottom: 48rpx;
line-height: 1.4;
padding: 0 40rpx;
}
/* 响应式设计 */
@media (max-width: 750rpx) {
.content {
padding: 24rpx;
}
.product-card {
padding: 28rpx;
}
.title {
font-size: 32rpx;
}
.section-title {
font-size: 28rpx;
}
.product-name {
font-size: 28rpx;
}
.button-group {
flex-direction: column;
gap: 12rpx;
}
.btn-primary,
.btn-secondary {
width: 100%;
}
.spec-item {
padding: 28rpx 20rpx;
}
.spec-name {
font-size: 28rpx;
}
1 week ago
.spec-details {
font-size: 22rpx;
}
.spec-list {
gap: 16rpx;
}
1 week ago
.product-image-container {
width: 100rpx;
height: 100rpx;
}
.product-name {
font-size: 28rpx;
}
.product-hint {
font-size: 22rpx;
}
}
/* 小屏幕设备适配 */
@media (max-width: 414rpx) {
.content {
padding: 24rpx;
}
.title {
font-size: 32rpx;
}
.section-title {
font-size: 28rpx;
}
.product-name {
font-size: 26rpx;
}
.spec-item {
padding: 24rpx 16rpx;
}
.spec-name {
font-size: 24rpx;
}
1 week ago
.spec-details {
font-size: 20rpx;
}
.btn-change-product {
padding: 10rpx 20rpx;
}
.btn-change-product-text {
font-size: 26rpx;
}
.spec-list {
gap: 12rpx;
}
1 week ago
.product-image-container {
width: 80rpx;
height: 80rpx;
}
.product-name {
font-size: 26rpx;
}
.product-hint {
font-size: 20rpx;
}
}
/* 暂无更多规格提示 */
.no-more {
display: flex;
align-items: center;
justify-content: center;
padding: 48rpx 0;
margin-top: 32rpx;
margin-bottom: 40rpx;
width: 100%;
}
.no-more::before,
.no-more::after {
content: '';
flex: 1;
height: 1rpx;
background: #E5E5E5;
margin: 0 16rpx;
}
.no-more-text {
font-size: 24rpx;
color: #BBB;
font-weight: 500;
white-space: nowrap;
}