Files
AIEC-new/AIEC-server/auth/components/auth-form.css

231 lines
4.2 KiB
CSS
Raw Permalink Normal View History

2025-10-17 09:31:28 +08:00
/* 认证表单专用样式 */
.auth-container {
animation: slideInUp 0.6s ease-out;
}
.auth-form-wrapper {
background: rgba(255, 255, 255, 0.85);
backdrop-filter: blur(20px);
box-shadow:
0 20px 25px -5px rgba(0, 0, 0, 0.1),
0 10px 10px -5px rgba(0, 0, 0, 0.04),
inset 0 1px 0 rgba(255, 255, 255, 0.6);
}
.form-group {
position: relative;
}
.form-group input {
transition: all 0.3s ease;
}
.form-group input:focus {
transform: translateY(-2px);
box-shadow: 0 10px 20px rgba(37, 99, 235, 0.15);
}
.form-group input:valid {
border-color: #10b981;
}
.form-group input.error {
border-color: #ef4444;
background-color: rgba(239, 68, 68, 0.05);
}
.error-message {
animation: slideDown 0.3s ease-out;
font-size: 0.875rem;
}
.error-message.show {
display: block !important;
}
/* 发送验证码按钮状态 */
#sendCodeBtn:disabled {
background-color: #9ca3af;
cursor: not-allowed;
}
#sendCodeBtn.countdown {
background-color: #6b7280;
}
/* 登录/注册按钮动画 */
#loginBtn, #registerBtn {
position: relative;
overflow: hidden;
transform: translateZ(0);
}
#loginBtn:hover, #registerBtn:hover {
transform: translateY(-1px);
box-shadow: 0 10px 20px rgba(37, 99, 235, 0.3);
}
#loginBtn:active, #registerBtn:active {
transform: translateY(0);
}
/* 状态消息样式 */
#statusMessage {
border-left: 4px solid currentColor;
animation: slideInLeft 0.4s ease-out;
}
#statusMessage.success {
background-color: rgba(16, 185, 129, 0.1);
color: #059669;
border-color: #10b981;
}
#statusMessage.error {
background-color: rgba(239, 68, 68, 0.1);
color: #dc2626;
border-color: #ef4444;
}
#statusMessage.info {
background-color: rgba(59, 130, 246, 0.1);
color: #2563eb;
border-color: #3b82f6;
}
#statusMessage.warning {
background-color: rgba(245, 158, 11, 0.1);
color: #d97706;
border-color: #f59e0b;
}
/* 动画定义 */
@keyframes slideInUp {
from {
opacity: 0;
transform: translateY(30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes slideDown {
from {
opacity: 0;
transform: translateY(-10px);
max-height: 0;
}
to {
opacity: 1;
transform: translateY(0);
max-height: 50px;
}
}
@keyframes slideInLeft {
from {
opacity: 0;
transform: translateX(-20px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
/* 输入框聚焦效果 */
.form-group label {
transition: all 0.3s ease;
}
.form-group input:focus + .absolute i {
color: #2563eb;
transform: scale(1.1);
}
/* 响应式设计 */
@media (max-width: 640px) {
.auth-form-wrapper {
margin: 1rem;
padding: 1.5rem;
}
.form-group {
margin-bottom: 1rem;
}
#sendCodeBtn {
padding: 0.75rem 1rem;
font-size: 0.875rem;
}
}
/* 加载状态 */
.loading {
position: relative;
pointer-events: none;
}
.loading::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: 20px;
height: 20px;
margin: -10px 0 0 -10px;
border: 2px solid #ffffff;
border-top: 2px solid transparent;
border-radius: 50%;
animation: spin 1s linear infinite;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
/* 表单验证提示 */
.form-group .valid-feedback {
color: #10b981;
font-size: 0.875rem;
margin-top: 0.25rem;
}
.form-group .valid-feedback::before {
content: '✓ ';
font-weight: bold;
}
/* 密码强度指示器(预留) */
.password-strength {
height: 4px;
background-color: #e5e7eb;
border-radius: 2px;
margin-top: 0.5rem;
overflow: hidden;
}
.password-strength-bar {
height: 100%;
transition: all 0.3s ease;
border-radius: 2px;
}
.password-strength.weak .password-strength-bar {
width: 33%;
background-color: #ef4444;
}
.password-strength.medium .password-strength-bar {
width: 66%;
background-color: #f59e0b;
}
.password-strength.strong .password-strength-bar {
width: 100%;
background-color: #10b981;
}