/* 2024长三角国际新能源汽车与智能交通产业博览会 - 全局样式 */ /* 根变量定义 */ :root { /* 主题色彩系统 */ --primary-gradient-start: #10b981; --primary-gradient-end: #3b82f6; --secondary-gradient-start: #8b5cf6; --secondary-gradient-end: #ec4899; --accent-gradient-start: #f59e0b; --accent-gradient-end: #ef4444; /* 中性色 */ --gray-50: #f9fafb; --gray-100: #f3f4f6; --gray-200: #e5e7eb; --gray-300: #d1d5db; --gray-400: #9ca3af; --gray-500: #6b7280; --gray-600: #4b5563; --gray-700: #374151; --gray-800: #1f2937; --gray-900: #111827; /* 间距系统 */ --spacing-xs: 0.5rem; --spacing-sm: 1rem; --spacing-md: 1.5rem; --spacing-lg: 2rem; --spacing-xl: 3rem; --spacing-2xl: 4rem; /* 动画时长 */ --transition-fast: 150ms; --transition-base: 300ms; --transition-slow: 500ms; --transition-slower: 700ms; /* 阴影 */ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05); --shadow-base: 0 4px 6px -1px rgba(0, 0, 0, 0.1); --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1); --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1); /* 圆角 */ --radius-sm: 0.375rem; --radius-base: 0.5rem; --radius-lg: 0.75rem; --radius-xl: 1rem; --radius-full: 9999px; } /* 全局重置和基础样式 */ * { margin: 0; padding: 0; box-sizing: border-box; } html { scroll-behavior: smooth; font-size: 16px; } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans SC', 'Microsoft YaHei', sans-serif; line-height: 1.6; color: var(--gray-800); background-color: var(--gray-50); } /* 渐变背景动画 */ @keyframes gradientShift { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } .gradient-bg { background: linear-gradient(-45deg, var(--primary-gradient-start), var(--primary-gradient-end), var(--secondary-gradient-start), var(--secondary-gradient-end)); background-size: 400% 400%; animation: gradientShift 15s ease infinite; } .gradient-primary { background: linear-gradient(135deg, var(--primary-gradient-start), var(--primary-gradient-end)); } .gradient-secondary { background: linear-gradient(135deg, var(--secondary-gradient-start), var(--secondary-gradient-end)); } .gradient-accent { background: linear-gradient(135deg, var(--accent-gradient-start), var(--accent-gradient-end)); } /* 导航栏样式 */ .navbar { position: fixed; top: 0; left: 0; right: 0; z-index: 1000; background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(10px); box-shadow: var(--shadow-base); transition: all var(--transition-base) ease; } .navbar.scrolled { background: rgba(255, 255, 255, 0.98); box-shadow: var(--shadow-lg); } .nav-link { position: relative; padding: var(--spacing-xs) var(--spacing-sm); color: var(--gray-700); text-decoration: none; transition: color var(--transition-fast) ease; overflow: hidden; } .nav-link::after { content: ''; position: absolute; bottom: 0; left: 50%; width: 0; height: 2px; background: linear-gradient(90deg, var(--primary-gradient-start), var(--primary-gradient-end)); transform: translateX(-50%); transition: width var(--transition-base) ease; } .nav-link:hover::after, .nav-link.active::after { width: 100%; } /* 卡片动画效果 */ @keyframes cardFloat { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } } .card { background: white; border-radius: var(--radius-lg); padding: var(--spacing-lg); box-shadow: var(--shadow-base); transition: all var(--transition-base) ease; position: relative; overflow: hidden; } .card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 4px; background: linear-gradient(90deg, var(--primary-gradient-start), var(--primary-gradient-end)); transform: scaleX(0); transform-origin: left; transition: transform var(--transition-base) ease; } .card:hover { transform: translateY(-5px); box-shadow: var(--shadow-xl); } .card:hover::before { transform: scaleX(1); } /* 按钮样式 */ .btn { display: inline-block; padding: var(--spacing-sm) var(--spacing-lg); border-radius: var(--radius-full); font-weight: 600; text-decoration: none; transition: all var(--transition-base) ease; position: relative; overflow: hidden; cursor: pointer; border: none; outline: none; } .btn-primary { background: linear-gradient(135deg, var(--primary-gradient-start), var(--primary-gradient-end)); color: white; box-shadow: 0 4px 15px rgba(16, 185, 129, 0.3); } .btn-primary:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(16, 185, 129, 0.4); } .btn-secondary { background: white; color: var(--gray-700); border: 2px solid var(--gray-200); } .btn-secondary:hover { background: var(--gray-50); border-color: var(--primary-gradient-start); color: var(--primary-gradient-start); } /* 波纹效果 */ @keyframes ripple { 0% { transform: scale(0); opacity: 1; } 100% { transform: scale(4); opacity: 0; } } .ripple { position: absolute; border-radius: 50%; background: rgba(255, 255, 255, 0.5); animation: ripple 0.6s ease-out; pointer-events: none; } /* 加载动画 */ @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .spinner { display: inline-block; width: 40px; height: 40px; border: 4px solid var(--gray-200); border-top-color: var(--primary-gradient-start); border-radius: 50%; animation: spin 1s linear infinite; } /* 数字滚动动画 */ @keyframes countUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .count-up { animation: countUp var(--transition-slow) ease-out; } /* 淡入动画 */ @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .fade-in { animation: fadeIn var(--transition-slower) ease-out; } /* 滑入动画 */ @keyframes slideInLeft { from { opacity: 0; transform: translateX(-50px); } to { opacity: 1; transform: translateX(0); } } @keyframes slideInRight { from { opacity: 0; transform: translateX(50px); } to { opacity: 1; transform: translateX(0); } } .slide-in-left { animation: slideInLeft var(--transition-slow) ease-out; } .slide-in-right { animation: slideInRight var(--transition-slow) ease-out; } /* 脉冲动画 */ @keyframes pulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.05); opacity: 0.9; } } .pulse { animation: pulse 2s ease-in-out infinite; } /* 光晕效果 */ @keyframes glow { 0%, 100% { box-shadow: 0 0 20px rgba(16, 185, 129, 0.5); } 50% { box-shadow: 0 0 40px rgba(16, 185, 129, 0.8); } } .glow { animation: glow 2s ease-in-out infinite; } /* 时间线样式 */ .timeline { position: relative; padding-left: var(--spacing-xl); } .timeline::before { content: ''; position: absolute; left: 15px; top: 0; bottom: 0; width: 2px; background: linear-gradient(180deg, var(--primary-gradient-start), var(--primary-gradient-end)); } .timeline-item { position: relative; padding-bottom: var(--spacing-xl); } .timeline-item::before { content: ''; position: absolute; left: -25px; top: 5px; width: 12px; height: 12px; border-radius: 50%; background: var(--primary-gradient-start); border: 3px solid white; box-shadow: var(--shadow-base); } /* 网格布局动画 */ .grid-item { opacity: 0; transform: scale(0.9); animation: gridFadeIn var(--transition-slow) ease-out forwards; } @keyframes gridFadeIn { to { opacity: 1; transform: scale(1); } } .grid-item:nth-child(1) { animation-delay: 0.1s; } .grid-item:nth-child(2) { animation-delay: 0.2s; } .grid-item:nth-child(3) { animation-delay: 0.3s; } .grid-item:nth-child(4) { animation-delay: 0.4s; } .grid-item:nth-child(5) { animation-delay: 0.5s; } .grid-item:nth-child(6) { animation-delay: 0.6s; } /* 响应式设计 */ @media (max-width: 768px) { :root { font-size: 14px; } .card { padding: var(--spacing-md); } .timeline { padding-left: var(--spacing-lg); } } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } } /* 打印样式 */ @media print { .navbar, .btn, .no-print { display: none !important; } body { font-size: 12pt; color: black; background: white; } .card { box-shadow: none; border: 1px solid #ddd; page-break-inside: avoid; } } /* 辅助类 */ .text-gradient { background: linear-gradient(135deg, var(--primary-gradient-start), var(--primary-gradient-end)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .hover-scale { transition: transform var(--transition-base) ease; } .hover-scale:hover { transform: scale(1.05); } .hover-lift { transition: transform var(--transition-base) ease; } .hover-lift:hover { transform: translateY(-5px); } .overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(180deg, transparent, rgba(0, 0, 0, 0.7)); } .container { max-width: 1200px; margin: 0 auto; padding: 0 var(--spacing-md); }