/* 基础样式重置 */ * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; line-height: 1.6; color: #2d5a3d; min-height: 100vh; overflow-x: hidden; } /* 容器样式 */ .container { max-width: 1200px; margin: 0 auto; padding: 20px; min-height: 100vh; display: flex; flex-direction: column; position: relative; z-index: 1; } /* 头部样式 */ .header { text-align: center; margin-bottom: 40px; padding: 40px 20px; background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(20px); border-radius: 20px; box-shadow: 0 8px 32px rgba(76, 175, 80, 0.1); border: 1px solid rgba(76, 175, 80, 0.2); position: relative; overflow: hidden; } .header::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 4px; background: linear-gradient(90deg, transparent, #4caf50, transparent); animation: headerGlow 3s ease-in-out infinite; } @keyframes headerGlow { 0% { left: -100%; } 50% { left: 100%; } 100% { left: 100%; } } .header h1 { font-size: 2.5rem; font-weight: 700; background: linear-gradient(135deg, #4caf50, #81c784, #4caf50); background-size: 200% 200%; -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; margin-bottom: 10px; animation: titleGradient 4s ease-in-out infinite; } @keyframes titleGradient { 0%, 100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } } .header p { font-size: 1.1rem; color: #66bb6a; opacity: 0.9; } /* 主要内容区域 */ .main { flex: 1; display: grid; grid-template-columns: 1fr 1fr; gap: 40px; align-items: start; } /* 表单容器 */ .form-container { background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(20px); padding: 35px; border-radius: 20px; box-shadow: 0 8px 32px rgba(76, 175, 80, 0.1); border: 1px solid rgba(76, 175, 80, 0.2); transition: all 0.3s ease; } .form-container:hover { transform: translateY(-5px); box-shadow: 0 12px 40px rgba(76, 175, 80, 0.15); } /* 表单样式 */ .qr-form { display: flex; flex-direction: column; gap: 25px; } .input-group { display: flex; flex-direction: column; gap: 8px; } .input-group label { font-weight: 600; color: #2d5a3d; font-size: 0.95rem; } textarea, select { padding: 12px 16px; border: 2px solid rgba(76, 175, 80, 0.3); border-radius: 12px; font-size: 1rem; background: rgba(255, 255, 255, 0.9); transition: all 0.3s ease; resize: vertical; } textarea { min-height: 100px; font-family: inherit; } textarea:focus, select:focus { outline: none; border-color: #4caf50; box-shadow: 0 0 0 3px rgba(76, 175, 80, 0.1); background: rgba(255, 255, 255, 1); } .options-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 20px; } /* 按钮样式 */ .generate-btn { padding: 15px 30px; background: linear-gradient(135deg, #4caf50, #66bb6a); color: white; border: none; border-radius: 12px; font-size: 1.1rem; font-weight: 600; cursor: pointer; transition: all 0.3s ease; position: relative; overflow: hidden; letter-spacing: 0.5px; } .generate-btn::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); transition: left 0.5s ease; } .generate-btn:hover::before { left: 100%; } .generate-btn:hover { transform: translateY(-2px); box-shadow: 0 8px 25px rgba(76, 175, 80, 0.3); } .generate-btn:active { transform: translateY(0); } .generate-btn.loading .btn-text { display: none; } .generate-btn.loading .btn-loading { display: inline; } .btn-loading { display: none; } /* 结果容器 */ .result-container { background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(20px); padding: 35px; border-radius: 20px; box-shadow: 0 8px 32px rgba(76, 175, 80, 0.1); border: 1px solid rgba(76, 175, 80, 0.2); min-height: 400px; display: flex; align-items: center; justify-content: center; transition: all 0.3s ease; } /* 加载动画 */ .loading { text-align: center; color: #4caf50; } .loading-spinner { width: 50px; height: 50px; border: 4px solid rgba(76, 175, 80, 0.2); border-top: 4px solid #4caf50; border-radius: 50%; animation: spin 1s linear infinite; margin: 0 auto 20px; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* 错误样式 */ .error { text-align: center; color: #d32f2f; } .error-icon { font-size: 3rem; margin-bottom: 15px; } .error-message { font-size: 1.1rem; margin-bottom: 20px; color: #666; } .retry-btn { padding: 10px 20px; background: #4caf50; color: white; border: none; border-radius: 8px; cursor: pointer; transition: all 0.3s ease; } .retry-btn:hover { background: #45a049; transform: translateY(-1px); } /* 结果显示 */ .result { width: 100%; text-align: center; } .qr-display { margin-bottom: 25px; } .qr-display img { max-width: 100%; height: auto; border-radius: 12px; box-shadow: 0 4px 20px rgba(76, 175, 80, 0.2); transition: all 0.3s ease; } .qr-display img:hover { transform: scale(1.05); box-shadow: 0 8px 30px rgba(76, 175, 80, 0.3); } .result-info { display: flex; flex-direction: column; gap: 20px; } .result-text { font-size: 1rem; color: #666; word-break: break-all; background: rgba(76, 175, 80, 0.1); padding: 12px; border-radius: 8px; border-left: 4px solid #4caf50; } .result-actions { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; } .download-btn, .copy-btn, .new-btn { padding: 10px 16px; border: none; border-radius: 8px; cursor: pointer; font-size: 0.9rem; font-weight: 500; transition: all 0.3s ease; } .download-btn { background: #4caf50; color: white; } .copy-btn { background: #2196f3; color: white; } .new-btn { background: #ff9800; color: white; } .download-btn:hover, .copy-btn:hover, .new-btn:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2); } /* 隐藏类 */ .hidden { display: none !important; } /* 页脚样式 */ .footer { text-align: center; margin-top: 40px; padding: 25px; background: rgba(255, 255, 255, 0.9); backdrop-filter: blur(15px); border-radius: 15px; color: #66bb6a; font-size: 0.9rem; border: 1px solid rgba(76, 175, 80, 0.1); } /* 平板端适配 (768px - 1024px) */ @media (max-width: 1024px) and (min-width: 768px) { .container { max-width: 95%; padding: 15px; } .main { gap: 30px; } .header h1 { font-size: 2.2rem; } .form-container, .result-container { padding: 25px; } .options-grid { grid-template-columns: repeat(2, 1fr); } } /* 手机端适配 (最大768px) */ @media (max-width: 768px) { .container { padding: 10px; } .header { margin-bottom: 25px; padding: 25px 15px; } .header h1 { font-size: 1.8rem; } .header p { font-size: 1rem; } .main { grid-template-columns: 1fr; gap: 25px; } .form-container, .result-container { padding: 20px; } .options-grid { grid-template-columns: 1fr; gap: 15px; } .result-actions { flex-direction: column; align-items: center; } .download-btn, .copy-btn, .new-btn { width: 100%; max-width: 200px; } } /* 小屏手机适配 (最大480px) */ @media (max-width: 480px) { .container { padding: 8px; } .header { padding: 20px 10px; margin-bottom: 20px; } .header h1 { font-size: 1.6rem; } .form-container, .result-container { padding: 15px; border-radius: 15px; } .generate-btn { padding: 12px 20px; font-size: 1rem; } textarea { min-height: 80px; } .qr-display img { max-width: 90%; } }