.video-detail-container { min-height: 100vh; background: linear-gradient(135deg, #0f172a 0%, #1a1e2c 100%); position: relative; } /* 导航栏 */ .nav-bar { position: fixed; top: 0; left: 0; right: 0; height: 88rpx; padding: 0 30rpx; display: flex; align-items: center; justify-content: space-between; background: linear-gradient(180deg, rgba(15, 23, 42, 0.98) 0%, rgba(15, 23, 42, 0.9) 100%); backdrop-filter: blur(20rpx); z-index: 1000; border-bottom: 1rpx solid rgba(255, 255, 255, 0.08); } .nav-title { font-size: 34rpx; font-weight: 700; color: #fff; text-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.3); } /* 视频播放器区域 */ .video-player-section { width: 100%; height: 500rpx; position: relative; background: #000; overflow: hidden; } .video-player { width: 100%; height: 100%; background: #000; } /* 视频封面 */ .video-cover { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: #000; z-index: 2; } .cover-image { width: 100%; height: 100%; opacity: 0.9; } .cover-play-btn { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 120rpx; height: 120rpx; background: rgba(0, 0, 0, 0.6); backdrop-filter: blur(20rpx); border-radius: 50%; display: flex; align-items: center; justify-content: center; border: 3rpx solid rgba(255, 255, 255, 0.3); box-shadow: 0 8rpx 40rpx rgba(0, 0, 0, 0.5); } .cover-play-btn .play-icon { width: 50rpx; height: 50rpx; margin-left: 8rpx; filter: brightness(2); } /* 全屏控制栏 */ .fullscreen-controls { position: absolute; top: 0; left: 0; right: 0; bottom: 0; z-index: 10; opacity: 1; transition: opacity 0.3s; } .fullscreen-controls.hidden { opacity: 0; pointer-events: none; } .fullscreen-top-bar { padding: 80rpx 40rpx 0; display: flex; align-items: center; justify-content: space-between; background: linear-gradient(to bottom, rgba(0, 0, 0, 0.9) 0%, rgba(0, 0, 0, 0) 100%); height: 120rpx; } .top-bar-left { display: flex; align-items: center; gap: 16rpx; padding: 16rpx 28rpx; background: rgba(0, 0, 0, 0.6); border-radius: 40rpx; backdrop-filter: blur(20rpx); border: 1rpx solid rgba(255, 255, 255, 0.1); } .back-text { color: #fff; font-size: 28rpx; font-weight: 500; text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.3); } .top-bar-title { font-size: 32rpx; color: #fff; max-width: 400rpx; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; text-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.5); padding: 12rpx 24rpx; background: rgba(0, 0, 0, 0.5); border-radius: 20rpx; backdrop-filter: blur(10rpx); } /* 中间播放按钮 */ .center-play-btn { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 160rpx; height: 160rpx; background: rgba(0, 0, 0, 0.7); backdrop-filter: blur(30rpx); border-radius: 50%; display: flex; align-items: center; justify-content: center; border: 4rpx solid rgba(255, 255, 255, 0.3); z-index: 20; box-shadow: 0 12rpx 60rpx rgba(0, 0, 0, 0.5), inset 0 0 0 1rpx rgba(255, 255, 255, 0.1); animation: pulse 2s infinite; } @keyframes pulse { 0% { box-shadow: 0 12rpx 60rpx rgba(0, 0, 0, 0.5), inset 0 0 0 1rpx rgba(255, 255, 255, 0.1); } 50% { box-shadow: 0 12rpx 80rpx rgba(52, 152, 219, 0.4), inset 0 0 0 1rpx rgba(52, 152, 219, 0.3); } 100% { box-shadow: 0 12rpx 60rpx rgba(0, 0, 0, 0.5), inset 0 0 0 1rpx rgba(255, 255, 255, 0.1); } } .play-large-icon { width: 70rpx; height: 70rpx; margin-left: 10rpx; filter: brightness(2) drop-shadow(0 4rpx 8rpx rgba(0, 0, 0, 0.5)); } .play-ripple { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 0; height: 0; border-radius: 50%; border: 2rpx solid rgba(255, 255, 255, 0.4); animation: ripple 2s infinite; } @keyframes ripple { 0% { width: 0; height: 0; opacity: 1; } 100% { width: 240rpx; height: 240rpx; opacity: 0; } } /* 底部控制栏 */ .fullscreen-bottom-bar { position: absolute; bottom: 0; left: 0; right: 0; padding: 0 40rpx 80rpx; background: linear-gradient(to top, rgba(0, 0, 0, 0.95) 0%, rgba(0, 0, 0, 0) 100%); } .fullscreen-progress { display: flex; align-items: center; gap: 24rpx; margin-bottom: 60rpx; padding: 0 20rpx; } .progress-time { font-size: 26rpx; color: rgba(255, 255, 255, 0.95); min-width: 90rpx; text-align: center; font-weight: 500; text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.5); } .progress-slider-container { flex: 1; position: relative; height: 8rpx; background: rgba(255, 255, 255, 0.2); border-radius: 4rpx; overflow: hidden; } .progress-bg { width: 100%; height: 100%; background: rgba(255, 255, 255, 0.1); border-radius: 4rpx; } .progress-current { height: 100%; background: linear-gradient(90deg, #3498db, #9b59b6); border-radius: 4rpx; transition: width 0.1s; } .progress-thumb { position: absolute; top: 50%; transform: translate(-50%, -50%); width: 28rpx; height: 28rpx; background: #fff; border-radius: 50%; box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.5), 0 0 0 2rpx #3498db; } .bottom-controls { display: flex; justify-content: center; align-items: center; gap: 80rpx; padding: 30rpx 50rpx; background: rgba(0, 0, 0, 0.7); border-radius: 80rpx; backdrop-filter: blur(30rpx); margin: 0 auto; max-width: 700rpx; border: 1rpx solid rgba(255, 255, 255, 0.1); } .control-item { width: 90rpx; height: 90rpx; display: flex; align-items: center; justify-content: center; border-radius: 50%; background: rgba(255, 255, 255, 0.1); transition: all 0.2s; box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.3); } .control-item:active { background: rgba(255, 255, 255, 0.2); transform: scale(0.9); } .control-icon { width: 44rpx; height: 44rpx; filter: brightness(2) drop-shadow(0 2rpx 4rpx rgba(0, 0, 0, 0.3)); } .speed-text { color: #fff; font-size: 30rpx; font-weight: 700; background: linear-gradient(135deg, #3498db, #9b59b6); padding: 12rpx 28rpx; border-radius: 40rpx; box-shadow: 0 6rpx 24rpx rgba(52, 152, 219, 0.4); } /* 触摸控制区域 */ .touch-control-left, .touch-control-center, .touch-control-right { position: absolute; top: 120rpx; bottom: 200rpx; z-index: 5; } .touch-control-left { left: 0; width: 30%; } .touch-control-center { left: 30%; width: 40%; } .touch-control-right { left: 70%; width: 30%; } /* 非全屏播放按钮 */ .normal-play-btn { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 120rpx; height: 120rpx; background: rgba(0, 0, 0, 0.7); border-radius: 50%; display: flex; align-items: center; justify-content: center; z-index: 3; border: 3rpx solid rgba(255, 255, 255, 0.3); backdrop-filter: blur(10rpx); box-shadow: 0 8rpx 32rpx rgba(0, 0, 0, 0.5); } .normal-play-btn .play-icon { width: 50rpx; height: 50rpx; margin-left: 8rpx; filter: brightness(2); } /* 视频信息区域 */ .video-info-section { height: calc(100vh - 500rpx); background: linear-gradient(180deg, #1a1e2c 0%, #0f172a 100%); } .video-header { padding: 50rpx 40rpx 40rpx; border-bottom: 1rpx solid rgba(255, 255, 255, 0.08); } .video-title { font-size: 40rpx; font-weight: 800; color: #fff; line-height: 1.3; margin-bottom: 30rpx; letter-spacing: 0.5rpx; text-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.3); } .video-description { font-size: 30rpx; color: rgba(255, 255, 255, 0.85); line-height: 1.6; margin-bottom: 40rpx; } .video-stats { display: flex; gap: 30rpx; flex-wrap: wrap; } .stat-item { display: flex; align-items: center; gap: 14rpx; font-size: 26rpx; color: rgba(255, 255, 255, 0.7); padding: 14rpx 28rpx; background: rgba(255, 255, 255, 0.08); border-radius: 40rpx; backdrop-filter: blur(10rpx); } /* 发布者信息 */ .publisher-section { padding: 40rpx; display: flex; align-items: center; gap: 30rpx; border-bottom: 1rpx solid rgba(255, 255, 255, 0.08); background: rgba(255, 255, 255, 0.03); margin: 0 20rpx; border-radius: 24rpx; margin-top: 20rpx; } .publisher-avatar { width: 120rpx; height: 120rpx; border-radius: 50%; border: 4rpx solid #3498db; box-shadow: 0 12rpx 40rpx rgba(52, 152, 219, 0.5), 0 0 0 1rpx rgba(255, 255, 255, 0.1); background: #1e293b; } .publisher-info { flex: 1; } .publisher-name { font-size: 36rpx; font-weight: 700; color: #fff; margin-bottom: 12rpx; text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.3); } .publisher-desc { font-size: 26rpx; color: rgba(255, 255, 255, 0.6); line-height: 1.4; } /* 标签区域 */ .tags-section { padding: 40rpx; background: rgba(255, 255, 255, 0.03); margin: 20rpx; border-radius: 24rpx; } .section-title { font-size: 32rpx; font-weight: 700; color: #fff; margin-bottom: 30rpx; text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.3); } .tags-container { display: flex; flex-wrap: wrap; gap: 20rpx; } .tag-item { padding: 16rpx 36rpx; background: linear-gradient(135deg, #3498db, #2ecc71); color: white; border-radius: 40rpx; font-size: 26rpx; font-weight: 600; box-shadow: 0 6rpx 24rpx rgba(52, 152, 219, 0.4); transition: all 0.2s; } .tag-item:active { transform: scale(0.95); box-shadow: 0 4rpx 16rpx rgba(52, 152, 219, 0.3); } /* 加载中 */ .loading-container { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(135deg, #0f172a 0%, #1a1e2c 100%); display: flex; flex-direction: column; align-items: center; justify-content: center; z-index: 2000; } .loading-spinner { position: relative; width: 140rpx; height: 140rpx; margin-bottom: 50rpx; } .spinner-circle { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 100%; height: 100%; border: 10rpx solid transparent; border-top-color: #3498db; border-right-color: #3498db; border-radius: 50%; animation: spinnerRotate 1.2s linear infinite; box-shadow: 0 0 20rpx rgba(52, 152, 219, 0.3); } @keyframes spinnerRotate { 0% { transform: translate(-50%, -50%) rotate(0deg); } 100% { transform: translate(-50%, -50%) rotate(360deg); } } .loading-text { font-size: 32rpx; color: rgba(255, 255, 255, 0.8); letter-spacing: 3rpx; font-weight: 500; text-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.3); } /* 错误提示 */ .error-container { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); display: flex; flex-direction: column; align-items: center; justify-content: center; z-index: 2000; background: linear-gradient(135deg, rgba(15, 23, 42, 0.95), rgba(26, 30, 44, 0.95)); padding: 80rpx 60rpx; border-radius: 40rpx; backdrop-filter: blur(40rpx); border: 1rpx solid rgba(255, 255, 255, 0.1); min-width: 500rpx; box-shadow: 0 20rpx 80rpx rgba(0, 0, 0, 0.5), inset 0 1rpx 0 rgba(255, 255, 255, 0.1); } .error-icon { width: 140rpx; height: 140rpx; margin-bottom: 40rpx; filter: brightness(1.5) drop-shadow(0 4rpx 12rpx rgba(0, 0, 0, 0.3)); } .error-text { font-size: 36rpx; color: #fff; margin-bottom: 50rpx; font-weight: 700; text-align: center; text-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.3); } .retry-btn { padding: 24rpx 80rpx; background: linear-gradient(135deg, #3498db, #2980b9); color: white; border-radius: 50rpx; font-size: 32rpx; font-weight: 700; box-shadow: 0 12rpx 40rpx rgba(52, 152, 219, 0.5), inset 0 1rpx 0 rgba(255, 255, 255, 0.3); transition: all 0.2s; letter-spacing: 2rpx; } .retry-btn:active { transform: scale(0.95); box-shadow: 0 6rpx 24rpx rgba(52, 152, 219, 0.4), inset 0 1rpx 0 rgba(255, 255, 255, 0.2); } /* 响应式调整 */ @media screen and (max-width: 750rpx) { .video-player-section { height: 450rpx; } .video-info-section { height: calc(100vh - 450rpx); } .video-title { font-size: 36rpx; } .video-description { font-size: 28rpx; } .bottom-controls { gap: 60rpx; padding: 25rpx 40rpx; max-width: 650rpx; } .center-play-btn { width: 140rpx; height: 140rpx; } .play-large-icon { width: 60rpx; height: 60rpx; } .fullscreen-top-bar { padding: 60rpx 30rpx 0; } .fullscreen-bottom-bar { padding: 0 30rpx 60rpx; } }