bw-mini-app/src/pages/result/index.css

430 lines
7.2 KiB
CSS

/* 结果页面整体布局 */
.result-page {
width: 100%;
height: 100vh;
display: flex;
flex-direction: column;
position: relative;
overflow: hidden;
padding: 0 0 40px;
box-sizing: border-box;
}
/* 生成中页面样式 */
.result-page.generating {
background: linear-gradient(135deg, #f5f5f5 0%, #e8e8e8 100%);
padding: 0;
}
/* 毛玻璃背景效果 */
.glassmorphism-background {
position: absolute;
inset: 0;
background: linear-gradient(135deg, rgb(255 255 255 / 10%) 0%, rgb(255 255 255 / 5%) 50%, rgb(0 0 0 / 10%) 100%);
backdrop-filter: blur(20px);
}
/* 主要内容区域 */
.result-content {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
padding: 20px 16px;
position: relative;
z-index: 2;
}
/* 媒体容器 - 自适应比例 */
.result-container {
width: 100%;
max-height: 60vh;
display: flex;
align-items: center;
justify-content: center;
border-radius: 16px;
overflow: hidden;
position: relative;
}
.result-image {
width: 100%;
height: auto;
max-height: 60vh;
border-radius: 16px;
object-fit: cover;
}
.result-video {
width: 100%;
height: 60vh;
object-fit: contain;
border-radius: 16px;
}
/* 底部操作区域 */
.result-actions {
padding: 20px 16px 40px;
z-index: 10;
}
.action-buttons {
display: flex;
align-items: center;
justify-content: center;
gap: 14px;
margin-bottom: 20px;
}
/* 下载按钮 - 大按钮 */
.download-btn {
width: 100%;
height: 60px;
background: #1d1f22;
border-radius: 16px;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-size: 16px;
font-weight: 400;
border: none;
cursor: pointer;
}
/* 查看按钮 - 小按钮 */
.view-btn {
flex: 1;
height: 60px;
border: 1px solid #1d1f22;
border-radius: 16px;
display: flex;
align-items: center;
justify-content: center;
color: #1d1f22;
font-size: 16px;
font-weight: 400;
background: white;
cursor: pointer;
}
/* 返回首页链接 */
.home-link {
display: flex;
align-items: center;
justify-content: center;
font-size: 16px;
font-weight: 400;
color: #919191;
}
/* 生成中内容区域 */
.generating-content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: flex-start;
height: 100vh;
padding: 80px 16px 160px;
box-sizing: border-box;
position: relative;
}
/* 进度容器 */
.progress-container {
position: relative;
margin-bottom: 60px;
margin-top: 20px;
}
/* 进度方框 */
.progress-circle {
width: 280px;
height: 280px;
border-radius: 24px;
position: relative;
display: flex;
align-items: center;
justify-content: center;
background: white;
box-shadow: 0 4px 20px rgb(0 0 0 / 10%);
}
.progress-fill {
position: absolute;
inset: -10px;
border-radius: 24px;
background: conic-gradient(#ffcf5f 0deg, #ffcf5f 0deg, transparent 0deg, transparent 360deg);
padding: 10px;
z-index: 1;
}
.progress-inner {
width: 100%;
height: 100%;
border-radius: 24px;
background: white;
position: relative;
z-index: 2;
overflow: hidden;
}
.progress-text {
font-size: 48px;
font-weight: 600;
color: #333;
}
/* 预览图片 */
.preview-image {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
border-radius: 24px;
z-index: 3;
object-fit: cover;
}
/* 预览占位符 */
.preview-placeholder {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
border-radius: 24px;
background: linear-gradient(135deg, #f0f0f0 0%, #e0e0e0 100%);
display: flex;
align-items: center;
justify-content: center;
z-index: 3;
}
/* 进度遮罩层 */
.progress-overlay {
position: absolute;
inset: 0;
border-radius: 24px;
background: linear-gradient(135deg, rgb(0 0 0 / 20%) 0%, rgb(0 0 0 / 10%) 50%, rgb(0 0 0 / 30%) 100%);
z-index: 4;
pointer-events: none;
}
/* 光扫描动画 */
.scan-light {
position: absolute;
inset: 0;
border-radius: 48px;
background: linear-gradient(
90deg,
transparent 0%,
rgb(255 255 255 / 8%) 40%,
rgb(255 255 255 / 15%) 50%,
rgb(255 255 255 / 8%) 60%,
transparent 100%
);
z-index: 5;
animation: scan 2s ease-in-out infinite;
pointer-events: none;
}
/* 进度文字 */
.scan-progress {
font-size: 32px;
color: #ffffff;
font-weight: 700;
z-index: 6;
text-shadow: 0 2px 4px rgb(0 0 0 / 50%), 0 0 8px rgb(0 0 0 / 30%), 0 0 16px rgb(0 0 0 / 20%);
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
pointer-events: none;
}
@keyframes scan {
0% {
transform: translateX(-100%);
}
100% {
transform: translateX(100%);
}
}
.placeholder-icon {
font-size: 32px;
opacity: 0.6;
}
/* 状态区域 */
.status-section {
text-align: center;
margin-bottom: 60px;
}
.status-icon-image {
width: 24px;
height: 24px;
margin-right: 8px;
}
.status-title {
display: flex;
align-items: center;
justify-content: center;
font-size: 18px;
font-weight: 500;
color: #1d1f22;
margin-bottom: 12px;
}
.status-subtitle {
font-size: 14px;
color: #919191;
}
/* 生成中操作按钮 */
.generating-actions {
margin-bottom: 40px;
}
.later-btn {
width: 200px;
height: 60px;
background: #1d1f22;
border-radius: 16px;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-size: 16px;
font-weight: 500;
cursor: pointer;
}
/* 提示区域 */
.tips-section {
text-align: center;
position: absolute;
bottom: 60px;
left: 50%;
transform: translateX(-50%);
width: 100%;
}
.tips-label {
font-size: 11px;
font-weight: 500;
color: #b9b9b9;
letter-spacing: 2px;
margin-bottom: 8px;
}
.tips-text {
font-size: 12px;
color: #919191;
}
/* 错误页面样式 */
.result-page.error {
background: #f5f5f5;
padding: 0;
}
.error-content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
padding: 60px 16px;
box-sizing: border-box;
}
.error-container {
text-align: center;
margin-bottom: 40px;
}
.error-text {
font-size: 18px;
font-weight: 500;
color: #333;
margin-bottom: 12px;
}
.error-message {
font-size: 14px;
color: #666;
}
.error-actions {
display: flex;
gap: 14px;
}
.try-again-btn {
width: 120px;
height: 60px;
background: #333;
border-radius: 16px;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-size: 16px;
font-weight: 500;
border: none;
cursor: pointer;
}
.back-btn {
width: 100px;
height: 60px;
border: 1px solid #333;
border-radius: 16px;
display: flex;
align-items: center;
justify-content: center;
color: #333;
font-size: 16px;
font-weight: 500;
background: white;
cursor: pointer;
}
/* 成功页面样式 */
.result-page.success {
background: #f5f6f8;
padding: 0;
}
.success-content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
padding: 60px 16px;
box-sizing: border-box;
}
.success-actions {
display: flex;
flex-direction: column;
gap: 14px;
margin-top: 20px;
width: 100%;
max-width: 300px;
}
/* 下载提示文字 */
.download-tip {
font-size: 24px;
color: #666;
text-align: center;
margin-top: 8px;
z-index: 1;
}