// 页面容器 .page-login { min-height: 100vh; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); display: flex; flex-direction: column; position: relative; overflow: hidden; opacity: 0; transition: opacity 0.6s ease-in-out; &--show { opacity: 1; } } // 背景装饰 .login-bg { position: absolute; top: 0; left: 0; right: 0; bottom: 0; pointer-events: none; overflow: hidden; } .login-bg__gradient { position: absolute; top: -50%; left: -50%; right: -50%; bottom: -50%; background: radial-gradient(circle at 30% 50%, rgba(255, 255, 255, 0.1) 0%, transparent 50%), radial-gradient(circle at 70% 80%, rgba(255, 255, 255, 0.08) 0%, transparent 50%); animation: gradientMove 15s ease-in-out infinite; } @keyframes gradientMove { 0%, 100% { transform: translate(0, 0) rotate(0deg); } 33% { transform: translate(30px, -30px) rotate(120deg); } 66% { transform: translate(-20px, 20px) rotate(240deg); } } .login-bg__circle { position: absolute; border-radius: 50%; opacity: 0.1; background: #ffffff; animation: float 20s ease-in-out infinite; } .login-bg__circle--1 { width: 400px; height: 400px; top: -150px; right: -100px; animation-delay: 0s; } .login-bg__circle--2 { width: 300px; height: 300px; bottom: 10%; left: -100px; animation-delay: -7s; } .login-bg__circle--3 { width: 200px; height: 200px; top: 40%; right: -50px; animation-delay: -14s; } @keyframes float { 0%, 100% { transform: translate(0, 0) scale(1); } 33% { transform: translate(30px, -30px) scale(1.1); } 66% { transform: translate(-20px, 20px) scale(0.9); } } // 内容区域 .login-content { display: flex; flex-direction: column; min-height: 100vh; padding: 0 50px; position: relative; z-index: 1; } // 头部 Logo 和标题 .login-header { display: flex; flex-direction: column; align-items: center; padding-top: 120px; margin-bottom: 60px; animation: slideDown 0.8s ease-out; } @keyframes slideDown { from { opacity: 0; transform: translateY(-30px); } to { opacity: 1; transform: translateY(0); } } .login-logo { width: 180px; height: 180px; border-radius: 40px; background: rgba(255, 255, 255, 0.95); display: flex; align-items: center; justify-content: center; margin-bottom: 40px; box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3); animation: logoFloat 3s ease-in-out infinite; } @keyframes logoFloat { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } } .login-logo__image { width: 140px; height: 140px; } .login-title { font-size: 48px; font-weight: bold; color: #ffffff; margin-bottom: 16px; text-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); animation: fadeIn 1s ease-out 0.3s both; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .login-subtitle { font-size: 28px; color: rgba(255, 255, 255, 0.8); animation: fadeIn 1s ease-out 0.5s both; } // 登录主体区域 .login-body { flex: 1; display: flex; flex-direction: column; justify-content: center; animation: slideUp 0.8s ease-out 0.4s both; } @keyframes slideUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } .login-methods { display: flex; flex-direction: column; gap: 30px; margin-top: -40px; } .login-methods__tip { text-align: center; margin-top: 10px; } // 登录按钮 .login-btn { height: 96px; width: 100%; border-radius: 48px; border: none; box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3); transition: all 0.3s ease; &:active { transform: scale(0.98); box-shadow: 0 5px 20px rgba(0, 0, 0, 0.2); } &--disabled { opacity: 0.5; pointer-events: none; } } .login-btn__content { display: flex; align-items: center; justify-content: center; gap: 12px; } .login-btn__icon { font-size: 36px; } .login-btn__text { font-size: 32px; font-weight: 600; color: #ffffff; } // 分割线 .login-methods__divider { display: flex; align-items: center; gap: 20px; margin: 10px 0; } .divider-line { flex: 1; height: 1px; background: rgba(255, 255, 255, 0.3); } .divider-text { font-size: 24px; color: rgba(255, 255, 255, 0.6); } // 特性列表 .login-features { display: flex; justify-content: space-around; padding: 20px 0; } .feature-item { display: flex; flex-direction: column; align-items: center; gap: 12px; } .feature-icon { font-size: 40px; animation: pulse 2s ease-in-out infinite; } @keyframes pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.1); } } .feature-text { font-size: 22px; color: rgba(255, 255, 255, 0.8); } // 非微信小程序环境提示 .login-non-weapp { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 60px 40px; background: rgba(255, 255, 255, 0.1); border-radius: 24px; backdrop-filter: blur(10px); } .non-weapp-icon { font-size: 80px; margin-bottom: 30px; } .non-weapp-title { font-size: 32px; font-weight: 600; color: #ffffff; margin-bottom: 16px; } .non-weapp-desc { font-size: 26px; color: rgba(255, 255, 255, 0.7); text-align: center; line-height: 1.6; } // 底部协议区域 .login-footer { padding: 30px 0 50px; } .login-agreement { display: flex; align-items: flex-start; gap: 12px; } // 自定义勾选框 .login-agreement__checkbox { flex-shrink: 0; width: 40px; height: 40px; border-radius: 8px; border: 3px solid rgba(255, 255, 255, 0.5); background: transparent; display: flex; align-items: center; justify-content: center; margin-top: 2px; transition: all 0.2s ease; &--checked { background: #07c160; border-color: #07c160; } } .login-agreement__check { color: #ffffff; font-size: 28px; font-weight: bold; line-height: 1; } .login-agreement__text { font-size: 24px; color: rgba(255, 255, 255, 0.8); line-height: 1.6; } .link { color: #ffffff; font-weight: 600; text-decoration: underline; }