/* pages/my/my.wxss */ .container { min-height: 100vh; background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%); animation: fadeIn 0.5s ease-out; /* 底部留出TabBar的空间 */ padding-bottom: calc(env(safe-area-inset-bottom) + 150rpx); } /* 用户卡片 */ .user-card { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); padding: 65rpx 30rpx 45rpx; margin-bottom: 30rpx; position: relative; overflow: hidden; animation: slideInDown 0.6s cubic-bezier(0.4, 0, 0.2, 1); } .user-card::before { content: ''; position: absolute; top: -50%; right: -25%; width: 400rpx; height: 400rpx; background: radial-gradient(circle, rgba(255, 255, 255, 0.15) 0%, transparent 70%); border-radius: 50%; animation: float 8s ease-in-out infinite; } @keyframes float { 0%, 100% { transform: translate(0, 0) scale(1); } 50% { transform: translate(-30rpx, 30rpx) scale(1.1); } } .user-header { display: flex; align-items: center; margin-bottom: 45rpx; position: relative; } .avatar-wrap { position: relative; margin-right: 28rpx; } .avatar { width: 130rpx; height: 130rpx; border-radius: 50%; background-color: #ffffff; border: 5rpx solid rgba(255, 255, 255, 0.4); box-shadow: 0 8rpx 24rpx rgba(0, 0, 0, 0.2); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .avatar-mask { position: absolute; top: 0; left: 0; right: 0; bottom: 0; border-radius: 50%; background-color: rgba(0, 0, 0, 0); display: flex; align-items: center; justify-content: center; transition: all 0.3s ease; } .avatar-wrap:active .avatar-mask { background-color: rgba(0, 0, 0, 0.3); } .avatar-tip { font-size: 48rpx; opacity: 0; transition: all 0.3s ease; } .avatar-wrap:active .avatar-tip { opacity: 1; } .user-info { flex: 1; color: #ffffff; position: relative; } .nickname { font-size: 40rpx; font-weight: bold; margin-bottom: 12rpx; text-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.2); } .user-desc { font-size: 26rpx; opacity: 0.95; letter-spacing: 1rpx; } .edit-btn { width: 70rpx; height: 70rpx; border-radius: 50%; background-color: rgba(255, 255, 255, 0.2); backdrop-filter: blur(10rpx); display: flex; align-items: center; justify-content: center; transition: all 0.3s ease; } .edit-btn:active { transform: scale(1.1) rotate(15deg); background-color: rgba(255, 255, 255, 0.3); } .edit-icon { font-size: 36rpx; } /* 统计数据 */ .stats-row { display: flex; background-color: rgba(255, 255, 255, 0.2); border-radius: 20rpx; padding: 35rpx 0; backdrop-filter: blur(15rpx); box-shadow: 0 8rpx 24rpx rgba(0, 0, 0, 0.1); position: relative; } .stat-item { flex: 1; text-align: center; color: #ffffff; transition: all 0.3s ease; cursor: pointer; } .stat-item:active { transform: scale(1.1); } .stat-value { font-size: 48rpx; font-weight: bold; margin-bottom: 12rpx; text-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.2); animation: pulse 2s ease-in-out infinite; } .stat-label { font-size: 24rpx; opacity: 0.95; letter-spacing: 1rpx; } .stat-divider { width: 2rpx; background: linear-gradient(to bottom, transparent, rgba(255, 255, 255, 0.5), transparent); } /* 菜单区域 */ .menu-section { background: linear-gradient(135deg, #ffffff 0%, #fafbfc 100%); border-radius: 20rpx; margin: 0 30rpx 30rpx; overflow: hidden; box-shadow: 0 8rpx 24rpx rgba(0, 0, 0, 0.08); animation: slideInUp 0.6s ease-out 0.2s both; } .menu-item { display: flex; align-items: center; padding: 35rpx; border-bottom: 2rpx solid rgba(0, 0, 0, 0.03); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); position: relative; overflow: hidden; } .menu-item::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 6rpx; background: linear-gradient(to bottom, #667eea, #764ba2); transform: scaleY(0); transition: transform 0.3s ease; } .menu-item:last-child { border-bottom: none; } .menu-item:active { background: linear-gradient(135deg, #f8f9fa 0%, #ffffff 100%); transform: translateX(8rpx); } .menu-item:active::before { transform: scaleY(1); } .menu-icon { font-size: 48rpx; margin-right: 28rpx; transition: all 0.3s ease; } .menu-item:active .menu-icon { transform: scale(1.2) rotate(10deg); } .menu-content { flex: 1; } .menu-title { font-size: 32rpx; color: #333333; font-weight: 600; margin-bottom: 10rpx; } .menu-desc { font-size: 24rpx; color: #999999; opacity: 0.8; } .menu-arrow { font-size: 32rpx; color: #CCCCCC; font-weight: 300; transition: all 0.3s ease; } .menu-item:active .menu-arrow { transform: translateX(8rpx); color: #667eea; } /* 关于信息 */ .about-section { background: linear-gradient(135deg, #ffffff 0%, #fafbfc 100%); border-radius: 20rpx; margin: 0 30rpx; padding: 35rpx; box-shadow: 0 8rpx 24rpx rgba(0, 0, 0, 0.08); animation: slideInUp 0.6s ease-out 0.3s both; } .about-title { font-size: 30rpx; font-weight: bold; color: #333333; margin-bottom: 24rpx; position: relative; padding-left: 20rpx; } .about-title::before { content: '📚'; position: absolute; left: 0; top: 0; font-size: 32rpx; } .about-content { font-size: 26rpx; color: #666666; line-height: 2.2; padding-left: 20rpx; } .about-item { margin-bottom: 14rpx; position: relative; padding-left: 24rpx; animation: fadeIn 0.8s ease-out; } .about-item::before { content: '•'; position: absolute; left: 0; color: #667eea; font-weight: bold; font-size: 32rpx; line-height: 1.5; } .about-item:nth-child(1) { animation-delay: 0.4s; } .about-item:nth-child(2) { animation-delay: 0.5s; } .about-item:nth-child(3) { animation-delay: 0.6s; } /* 编辑对话框 */ .modal-mask { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0, 0, 0, 0.6); display: flex; align-items: center; justify-content: center; z-index: 9999; animation: fadeIn 0.3s ease-out; } .modal-dialog { width: 600rpx; background: linear-gradient(135deg, #ffffff 0%, #fafbfc 100%); border-radius: 24rpx; box-shadow: 0 16rpx 48rpx rgba(0, 0, 0, 0.2); animation: scaleIn 0.3s cubic-bezier(0.4, 0, 0.2, 1); overflow: hidden; } .modal-header { display: flex; align-items: center; justify-content: space-between; padding: 35rpx 35rpx 25rpx; border-bottom: 2rpx solid #f0f0f0; } .modal-title { font-size: 36rpx; font-weight: bold; color: #333333; } .modal-close { width: 60rpx; height: 60rpx; display: flex; align-items: center; justify-content: center; font-size: 40rpx; color: #999999; border-radius: 50%; transition: all 0.3s ease; } .modal-close:active { background-color: #f5f5f5; transform: rotate(90deg); } .modal-content { padding: 35rpx; } .modal-input { width: 100%; height: 88rpx; padding: 0 28rpx; background-color: #f8f9fa; border: 2rpx solid #e9ecef; border-radius: 16rpx; font-size: 30rpx; box-sizing: border-box; transition: all 0.3s ease; } .modal-input:focus { background-color: #ffffff; border-color: #667eea; box-shadow: 0 0 0 4rpx rgba(102, 126, 234, 0.1); } .modal-footer { display: flex; gap: 20rpx; padding: 25rpx 35rpx 35rpx; } .modal-btn { flex: 1; height: 88rpx; line-height: 88rpx; border-radius: 44rpx; font-size: 32rpx; font-weight: bold; border: none; transition: all 0.3s ease; } .cancel-btn { background-color: #f5f5f5; color: #666666; } .cancel-btn:active { background-color: #e8e8e8; transform: scale(0.98); } .confirm-btn { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: #ffffff; box-shadow: 0 8rpx 20rpx rgba(102, 126, 234, 0.3); } .confirm-btn:active { transform: scale(0.98); box-shadow: 0 4rpx 12rpx rgba(102, 126, 234, 0.3); }