/* pages/edit/edit.wxss */ page { background: linear-gradient(135deg, #faf5ff 0%, #f0f8ff 100%); min-height: 100vh; } .xiugai-page { padding: 30rpx 40rpx 100rpx; } /* 头像区域样式 */ .avatar-section { position: relative; display: flex; justify-content: center; margin-bottom: 60rpx; padding-top: 30rpx; } .avatar-container { position: relative; display: flex; flex-direction: column; align-items: center; } /* 头像包装器 */ .avatar-image-wrapper { position: relative; width: 200rpx; height: 200rpx; flex-shrink: 0; display: flex; align-items: center; justify-content: center; } /* 头像图片 */ .avatar-image { width: 200rpx; height: 200rpx; border-radius: 50%; border: 6rpx solid #fff; background-color: #f8f9fa; z-index: 2; position: relative; animation: gentleBreath 4s ease-in-out infinite; box-shadow: 0 0 0 1rpx rgba(0, 200, 83, 0.3), 0 15rpx 40rpx rgba(0, 200, 83, 0.15); box-sizing: border-box; } /* 光晕 */ .avatar-halo { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 228rpx; height: 228rpx; border-radius: 50%; background: transparent; border: 3rpx solid transparent; animation: gentleGlow 2s ease-in-out infinite, colorShift 3s ease-in-out infinite; opacity: 0; z-index: 1; pointer-events: none; } /* 像素点环绕 */ .avatar-image-wrapper::before { content: ''; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 230rpx; height: 230rpx; border-radius: 50%; background: radial-gradient(circle at 30% 30%, rgba(0, 200, 83, 0.1) 0%, transparent 50%), radial-gradient(circle at 70% 70%, rgba(100, 221, 23, 0.1) 0%, transparent 50%); animation: pixelOrbit 4s linear infinite; z-index: 0; pointer-events: none; } /* 温和的呼吸动画 */ @keyframes gentleBreath { 0%, 100% { transform: scale(1); box-shadow: 0 0 0 2rpx rgba(0, 200, 83, 0.4), 0 15rpx 40rpx rgba(0, 200, 83, 0.2); } 50% { transform: scale(1.03); box-shadow: 0 0 0 5rpx rgba(0, 200, 83, 0.6), 0 20rpx 50rpx rgba(0, 200, 83, 0.3); } } /* 光晕动画 */ @keyframes gentleGlow { 0%, 100% { opacity: 0; transform: translate(-50%, -50%) scale(0.98); } 50% { opacity: 1; transform: translate(-50%, -50%) scale(1.05); } } @keyframes colorShift { 0% { border-color: rgba(0, 200, 83, 0.5); } 33% { border-color: rgba(100, 221, 23, 0.5); } 66% { border-color: rgba(0, 255, 153, 0.5); } 100% { border-color: rgba(0, 200, 83, 0.5); } } @keyframes pixelOrbit { 0% { transform: translate(-50%, -50%) rotate(0deg); } 100% { transform: translate(-50%, -50%) rotate(360deg); } } /* 更换提示 */ .avatar-hint { margin-top: 25rpx; font-size: 28rpx; color: #666; padding: 12rpx 30rpx; background: rgba(255, 255, 255, 0.9); border-radius: 25rpx; border: 1rpx solid #eee; box-shadow: 0 5rpx 15rpx rgba(0, 0, 0, 0.05); position: relative; overflow: hidden; } .avatar-hint::before { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 2rpx; background: linear-gradient(90deg, transparent, #00C853, transparent); animation: hintGlow 2s ease-in-out infinite; } @keyframes hintGlow { 0%, 100% { opacity: 0.3; } 50% { opacity: 1; } } /* 点击特效 */ .avatar-container.active .avatar-image { animation: clickScale 0.5s ease; } @keyframes clickScale { 0%, 100% { transform: scale(1); } 50% { transform: scale(0.95); } } /* 下载状态 */ .avatar-container.downloading .avatar-image { opacity: 0.7; filter: grayscale(30%); } /* 透明功能按钮 */ .avatar-trigger-button { position: absolute; top: 30rpx; left: 50%; transform: translateX(-50%); width: 200rpx; height: 200rpx; border-radius: 50%; z-index: 100; background: transparent; border: none; padding: 0; margin: 0; opacity: 0; line-height: 1; font-size: 0; } .avatar-trigger-button::after { border: none; } /* 表单区域 */ .form-section { border-radius: 25rpx; margin-bottom: 50rpx; box-shadow: 0 10rpx 30rpx rgba(0, 0, 0, 0.08); border: 1rpx solid #f0f0f0; } .form-item { display: flex; align-items: center; padding-left: 40rpx; border-bottom: 1rpx solid #f0f0f0; min-height: 110rpx; } .form-item:last-child { border-bottom: none; } .item-label { width: 150rpx; font-size: 32rpx; color: #333; font-weight: 500; flex-shrink: 0; } .item-value.readonly { flex: 1; font-size: 32rpx; color: #666; } /* .item-input — 与全局 .input-inline 完全相同,已移除 */ .placeholder { color: #ccc; font-size: 30rpx; } .input-container { flex: 1; display: flex; flex-direction: column; } .item-input.error { border-bottom: 2rpx solid #ff4d4f; animation: shake 0.5s; } @keyframes shake { 0%, 100% { transform: translateX(0); } 10%, 30%, 50%, 70%, 90% { transform: translateX(-2rpx); } 20%, 40%, 60%, 80% { transform: translateX(2rpx); } } .error-hint { font-size: 24rpx; color: #ff4d4f; margin-top: 8rpx; padding-left: 10rpx; animation: fadeIn 0.3s; } .phone-hint { font-size: 24rpx; color: #00C853; margin-top: 8rpx; padding-left: 10rpx; animation: fadeIn 0.3s; } @keyframes fadeIn { from { opacity: 0; transform: translateY(-10rpx); } to { opacity: 1; transform: translateY(0); } } /* 保存按钮 */ .save-btn { height: 100rpx; line-height: 100rpx; border-radius: 50rpx; background: linear-gradient(135deg, #00C853 0%, #64DD17 100%); font-weight: 500; box-shadow: 0 15rpx 40rpx rgba(0, 200, 83, 0.25); margin-top: 30rpx; } .save-btn[disabled] { background: linear-gradient(135deg, #cccccc 0%, #aaaaaa 100%); color: #999; box-shadow: 0 10rpx 30rpx rgba(0, 0, 0, 0.1); } .btn-content { position: relative; z-index: 2; display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; } .btn-sparkle { position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient( 90deg, transparent 0%, rgba(255, 255, 255, 0.2) 50%, transparent 100% ); animation: sparkleMove 2.5s ease-in-out infinite; z-index: 1; } @keyframes sparkleMove { 0% { left: -100%; } 100% { left: 100%; } } .btn-hover { opacity: 0.9; transform: scale(0.98); } /* 手机号获取按钮 */ .phone-row { flex: 1; display: flex; align-items: center; justify-content: space-between; } .phone-value { font-size: 32rpx; color: #333; flex: 1; } .get-phone-btn { flex-shrink: 0; margin-left: 20rpx; padding: 10rpx 24rpx; background: #4a6cf7; line-height: 1.4; height: 60rpx; } .phone-btn-hover { opacity: 0.8; } .safe-area { height: 100rpx; width: 100%; }