Files
a_long/miniprogram/pages/xiugai/xiugai.wxss
2026-06-27 01:26:11 +08:00

477 lines
9.8 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* pages/xiugai/xiugai.wxss */
/* ====== 您的原始样式代码(完全未改动) ====== */
page {
background: linear-gradient(135deg, #fffaf0 0%, #f0f8ff 100%);
min-height: 100vh;
}
.xiugai-page {
padding: 30rpx 40rpx 100rpx;
}
/* ============ 头像区域样式 ============ */
.avatar-section {
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 {
width: 200rpx;
height: 200rpx;
border-radius: 50%;
border: 6rpx solid #fff;
background-color: #f8f9fa;
z-index: 2;
position: relative;
/* 呼吸动画:温和的放大缩小 */
animation: gentleBreath 3s 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);
}
/* 温和的呼吸动画 */
@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);
}
}
/* 边缘微光效果 - 更细腻 */
.avatar-halo {
position: absolute;
top: -8rpx;
left: -8rpx;
right: -8rpx;
bottom: -8rpx;
border-radius: 50%;
background: transparent;
border: 2rpx solid #00C853;
animation: gentleGlow 2s ease-in-out infinite;
opacity: 0;
z-index: 1;
pointer-events: none;
}
/* 温和的光晕动画 */
@keyframes gentleGlow {
0%, 100% {
opacity: 0;
transform: scale(0.98);
border-color: rgba(0, 200, 83, 0.3);
}
50% {
opacity: 1;
transform: scale(1.05);
border-color: rgba(0, 200, 83, 0.8);
}
}
/* 像素点环绕效果 */
.avatar-container::before {
content: '';
position: absolute;
top: -15rpx;
left: -15rpx;
right: -15rpx;
bottom: -15rpx;
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 pixelOrbit {
0% {
transform: rotate(0deg);
}
100% {
transform: 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-halo {
position: absolute;
top: -8rpx;
left: -8rpx;
right: -8rpx;
bottom: -8rpx;
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;
}
@keyframes gentleGlow {
0%, 100% {
opacity: 0;
transform: scale(0.98);
}
50% {
opacity: 1;
transform: 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);
}
}
/* 头像呼吸效果 */
.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);
}
@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);
}
}
/* 表单区域 */
.form-section {
background: white;
border-radius: 25rpx;
overflow: hidden;
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: 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 {
flex: 1;
font-size: 32rpx;
color: #333;
height: 50rpx;
line-height: 50rpx;
}
.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 {
width: 100%;
height: 100rpx;
line-height: 100rpx;
border-radius: 50rpx;
background: linear-gradient(135deg, #00C853 0%, #64DD17 100%);
color: white;
font-size: 34rpx;
font-weight: 500;
border: none;
position: relative;
overflow: hidden;
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);
}
/* 底部安全区域 */
.safe-area {
height: 100rpx;
width: 100%;
}
/* 🔥🔥🔥【修改开始:新增透明按钮样式】 */
/* 说明:此样式仅作用于新增的 .avatar-trigger-button使其透明并覆盖在头像区域 */
/* 此修改不会影响上方任何原有样式,仅新增样式规则 */
/* 确保头像区域为相对定位,作为透明按钮的定位参考 */
.avatar-section {
position: relative;
display: flex;
justify-content: center;
margin-bottom: 60rpx;
padding-top: 30rpx;
}
/* 透明功能按钮样式 */
.avatar-trigger-button {
/* 覆盖在原始头像容器上 */
position: absolute;
top: 0;
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;
}
/* 🔥🔥🔥【修改结束】 */
/* ====== 以下为新增样式(手机号获取按钮) ====== */
/* 手机号行布局 */
.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;
color: #fff;
font-size: 26rpx;
border-radius: 40rpx;
border: none;
line-height: 1.4;
height: 60rpx;
display: flex;
align-items: center;
justify-content: center;
}
.phone-btn-hover {
opacity: 0.8;
}