/* ============================================================ * 商家入驻 - 自定义相机(取景框拍证件) * ============================================================ */ page { background: #000; } .cam-page { position: fixed; inset: 0; background: #000; overflow: hidden; } /* 顶部导航 */ .cam-nav { position: absolute; top: 0; left: 0; right: 0; z-index: 20; display: flex; align-items: center; justify-content: space-between; padding: 12rpx 24rpx; height: 88rpx; } .cam-nav-back { width: 60rpx; height: 60rpx; display: flex; align-items: center; } .cam-nav-title { color: #fff; font-size: 32rpx; font-weight: 500; } .cam-nav-right { width: 60rpx; } /* 相机取景 */ .cam-view { width: 100%; height: 100vh; } /* 取景框遮罩 */ .cam-overlay { position: absolute; inset: 0; z-index: 10; display: flex; flex-direction: column; align-items: center; justify-content: center; pointer-events: none; } .cam-frame { position: relative; border: 2rpx dashed rgba(255, 255, 255, 0.7); border-radius: 16rpx; } .frame-landscape { width: 86vw; height: 54vw; } .frame-portrait { width: 64vw; height: 86vw; } .cam-corner { position: absolute; width: 44rpx; height: 44rpx; border-color: #FF370B; border-style: solid; border-width: 0; } .cam-corner.tl { top: -2rpx; left: -2rpx; border-top-width: 6rpx; border-left-width: 6rpx; border-top-left-radius: 16rpx; } .cam-corner.tr { top: -2rpx; right: -2rpx; border-top-width: 6rpx; border-right-width: 6rpx; border-top-right-radius: 16rpx; } .cam-corner.bl { bottom: -2rpx; left: -2rpx; border-bottom-width: 6rpx; border-left-width: 6rpx; border-bottom-left-radius: 16rpx; } .cam-corner.br { bottom: -2rpx; right: -2rpx; border-bottom-width: 6rpx; border-right-width: 6rpx; border-bottom-right-radius: 16rpx; } .cam-tip { margin-top: 36rpx; color: #fff; font-size: 28rpx; text-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.6); } /* 横版/竖版切换 */ .cam-orient { position: absolute; bottom: 280rpx; left: 0; right: 0; z-index: 20; display: flex; justify-content: center; gap: 24rpx; } .orient-item { padding: 12rpx 40rpx; border-radius: 40rpx; background: rgba(255, 255, 255, 0.18); color: rgba(255, 255, 255, 0.8); font-size: 28rpx; } .orient-item.active { background: #FF370B; color: #fff; } /* 底部操作 */ .cam-actions { position: absolute; bottom: 0; left: 0; right: 0; z-index: 20; height: 240rpx; display: flex; align-items: center; justify-content: space-around; padding-bottom: env(safe-area-inset-bottom); background: rgba(0, 0, 0, 0.3); } .cam-action-side { width: 110rpx; display: flex; flex-direction: column; align-items: center; gap: 8rpx; color: #fff; font-size: 24rpx; } .cam-action-placeholder { opacity: 0; } .cam-shutter { width: 130rpx; height: 130rpx; border-radius: 50%; background: #fff; border: 8rpx solid rgba(255, 255, 255, 0.4); box-sizing: border-box; } .cam-shutter:active { transform: scale(0.94); } /* 预览态 */ .cam-preview { width: 100%; height: 100vh; background: #000; } .cam-preview-actions { position: absolute; bottom: 0; left: 0; right: 0; z-index: 20; height: 200rpx; display: flex; align-items: center; justify-content: center; gap: 40rpx; padding-bottom: env(safe-area-inset-bottom); background: rgba(0, 0, 0, 0.4); } .prev-btn { width: 240rpx; height: 88rpx; border-radius: 44rpx; display: flex; align-items: center; justify-content: center; font-size: 30rpx; } .prev-retake { background: rgba(255, 255, 255, 0.2); color: #fff; } .prev-submit { background: linear-gradient(91deg, #FF7658 0%, #FF370B 100%); color: #fff; }