another-contact.html 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Contact - Art Number Coloring</title>
  7. <style>
  8. /* 基础样式 */
  9. body {
  10. font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
  11. background-color: #f9f9f9;
  12. color: #333;
  13. margin: 0;
  14. padding: 0;
  15. }
  16. .container {
  17. max-width: 1200px;
  18. margin: 0 auto;
  19. padding: 0 15px;
  20. }
  21. h1,
  22. h2,
  23. h3,
  24. h4 {
  25. margin: 0;
  26. }
  27. a {
  28. text-decoration: none;
  29. color: #333;
  30. transition: color 0.3s ease;
  31. }
  32. a:hover {
  33. color: #ff6b6b;
  34. }
  35. /* 颜色定义 */
  36. :root {
  37. --primary: #ff6b6b;
  38. --secondary: #4ecdc4;
  39. --accent: #ffd166;
  40. --background: #f9f9f9;
  41. --text: #333;
  42. --lightText: #666;
  43. }
  44. /* 导航栏 */
  45. header {
  46. background-color: var(--primary);
  47. color: white;
  48. padding: 20px 0;
  49. }
  50. .header-content {
  51. display: flex;
  52. flex-direction: column;
  53. align-items: center;
  54. }
  55. @media (min-width: 768px) {
  56. .header-content {
  57. flex-direction: row;
  58. justify-content: space-between;
  59. }
  60. }
  61. .logo {
  62. display: flex;
  63. align-items: center;
  64. margin-bottom: 15px;
  65. }
  66. @media (min-width: 768px) {
  67. .logo {
  68. margin-bottom: 0;
  69. }
  70. }
  71. .logo svg {
  72. width: 40px;
  73. height: 40px;
  74. margin-right: 10px;
  75. }
  76. .logo span {
  77. font-size: 24px;
  78. font-weight: bold;
  79. }
  80. nav ul {
  81. list-style: none;
  82. margin: 0;
  83. padding: 0;
  84. display: flex;
  85. flex-wrap: wrap;
  86. justify-content: center;
  87. }
  88. nav li {
  89. margin: 0 15px;
  90. }
  91. nav a {
  92. color: white;
  93. font-weight: 500;
  94. }
  95. nav a:hover {
  96. color: var(--accent);
  97. }
  98. /* 主要内容 */
  99. main {
  100. padding: 40px 0;
  101. }
  102. .card {
  103. background-color: white;
  104. border-radius: 8px;
  105. box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  106. padding: 30px;
  107. margin-bottom: 30px;
  108. }
  109. .section-title {
  110. font-size: clamp(1.8rem, 5vw, 2.5rem);
  111. font-weight: bold;
  112. color: var(--primary);
  113. text-align: center;
  114. margin-bottom: 20px;
  115. }
  116. .section-subtitle {
  117. color: var(--lightText);
  118. text-align: center;
  119. margin-bottom: 40px;
  120. }
  121. .contact-container {
  122. display: grid;
  123. grid-template-columns: 1fr;
  124. gap: 30px;
  125. }
  126. @media (min-width: 768px) {
  127. .contact-container {
  128. grid-template-columns: 1fr 1fr;
  129. }
  130. }
  131. .form-group {
  132. margin-bottom: 20px;
  133. }
  134. .form-group label {
  135. display: block;
  136. font-size: 14px;
  137. font-weight: 500;
  138. margin-bottom: 5px;
  139. }
  140. .form-input {
  141. width: 100%;
  142. padding: 10px 12px;
  143. border: 1px solid #ddd;
  144. border-radius: 4px;
  145. transition: all 0.3s ease;
  146. }
  147. .form-input:focus {
  148. outline: none;
  149. border-color: var(--secondary);
  150. box-shadow: 0 0 0 2px rgba(78, 205, 196, 0.2);
  151. }
  152. textarea.form-input {
  153. resize: vertical;
  154. }
  155. .btn-primary {
  156. background-color: var(--secondary);
  157. color: white;
  158. padding: 10px 24px;
  159. border: none;
  160. border-radius: 50px;
  161. font-weight: 500;
  162. cursor: pointer;
  163. transition: all 0.3s ease;
  164. }
  165. .btn-primary:hover {
  166. background-color: var(--primary);
  167. }
  168. .btn-primary:disabled {
  169. opacity: 0.6;
  170. cursor: not-allowed;
  171. }
  172. /* 联系信息 */
  173. .contact-info {
  174. margin-top: 30px;
  175. }
  176. .contact-item {
  177. display: flex;
  178. margin-bottom: 25px;
  179. }
  180. .contact-icon {
  181. width: 40px;
  182. height: 40px;
  183. background-color: var(--primary);
  184. color: white;
  185. border-radius: 50%;
  186. display: flex;
  187. align-items: center;
  188. justify-content: center;
  189. margin-right: 15px;
  190. transition: transform 0.3s ease;
  191. }
  192. .contact-item:hover .contact-icon {
  193. transform: scale(1.1);
  194. }
  195. .contact-details h4 {
  196. color: var(--primary);
  197. font-weight: 600;
  198. margin-bottom: 5px;
  199. }
  200. .social-links {
  201. display: flex;
  202. gap: 10px;
  203. }
  204. .social-link {
  205. width: 40px;
  206. height: 40px;
  207. border-radius: 50%;
  208. display: flex;
  209. align-items: center;
  210. justify-content: center;
  211. color: white;
  212. transition: transform 0.3s ease;
  213. }
  214. .social-link:hover {
  215. transform: scale(1.1);
  216. }
  217. .facebook {
  218. background-color: #1877f2;
  219. }
  220. .twitter {
  221. background-color: #1da1f2;
  222. }
  223. .instagram {
  224. background-color: #e4405f;
  225. }
  226. .pinterest {
  227. background-color: #bd081c;
  228. }
  229. /* 响应消息 */
  230. .alert {
  231. padding: 12px;
  232. margin-top: 15px;
  233. border-radius: 4px;
  234. font-size: 14px;
  235. }
  236. .alert-success {
  237. background-color: #d4edda;
  238. color: #155724;
  239. border: 1px solid #c3e6cb;
  240. }
  241. .alert-danger {
  242. background-color: #f8d7da;
  243. color: #721c24;
  244. border: 1px solid #f5c6cb;
  245. }
  246. /* 页脚 */
  247. footer {
  248. background-color: var(--text);
  249. color: white;
  250. padding: 60px 0;
  251. margin-top: 60px;
  252. }
  253. .footer-grid {
  254. display: grid;
  255. grid-template-columns: 1fr;
  256. gap: 30px;
  257. }
  258. @media (min-width: 768px) {
  259. .footer-grid {
  260. grid-template-columns: repeat(4, 1fr);
  261. }
  262. }
  263. .footer-logo {
  264. display: flex;
  265. align-items: center;
  266. margin-bottom: 15px;
  267. }
  268. .footer-logo svg {
  269. width: 40px;
  270. height: 40px;
  271. margin-right: 10px;
  272. }
  273. .footer-logo span {
  274. font-size: 20px;
  275. font-weight: bold;
  276. }
  277. .footer-text {
  278. color: #999;
  279. font-size: 14px;
  280. }
  281. .footer-title {
  282. font-size: 18px;
  283. font-weight: 600;
  284. margin-bottom: 20px;
  285. }
  286. .footer-links {
  287. list-style: none;
  288. margin: 0;
  289. padding: 0;
  290. }
  291. .footer-links li {
  292. margin-bottom: 10px;
  293. }
  294. .footer-links a {
  295. color: #999;
  296. }
  297. .footer-links a:hover {
  298. color: var(--primary);
  299. }
  300. .footer-bottom {
  301. border-top: 1px solid #444;
  302. margin-top: 40px;
  303. padding-top: 20px;
  304. display: flex;
  305. flex-direction: column;
  306. align-items: center;
  307. }
  308. @media (min-width: 768px) {
  309. .footer-bottom {
  310. flex-direction: row;
  311. justify-content: space-between;
  312. }
  313. }
  314. .copyright {
  315. color: #777;
  316. font-size: 14px;
  317. margin-bottom: 15px;
  318. }
  319. @media (min-width: 768px) {
  320. .copyright {
  321. margin-bottom: 0;
  322. }
  323. }
  324. .footer-social {
  325. display: flex;
  326. gap: 15px;
  327. }
  328. .footer-social a {
  329. color: #999;
  330. }
  331. .footer-social a:hover {
  332. color: var(--primary);
  333. }
  334. </style>
  335. </head>
  336. <body>
  337. <!-- Navigation Bar -->
  338. <header>
  339. <div class="container">
  340. <div class="header-content">
  341. <div class="logo">
  342. <svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
  343. <circle cx="50" cy="50" r="45" fill="#ff6b6b" />
  344. <circle cx="30" cy="30" r="10" fill="#4ecdc4" />
  345. <circle cx="70" cy="30" r="10" fill="#ffd166" />
  346. <circle cx="30" cy="70" r="10" fill="#ffd166" />
  347. <circle cx="70" cy="70" r="10" fill="#4ecdc4" />
  348. <rect x="45" y="45" width="10" height="10" fill="white" />
  349. </svg>
  350. <span>Art Number Coloring</span>
  351. </div>
  352. <nav>
  353. <ul>
  354. <li><a href="/">Home</a></li>
  355. <li><a href="/coloring-pages">Coloring Pages</a></li>
  356. <li><a href="/about">About Us</a></li>
  357. <li><a href="/contact">Contact</a></li>
  358. </ul>
  359. </nav>
  360. </div>
  361. </div>
  362. </header>
  363. <main>
  364. <div class="container">
  365. <section class="card max-w-4xl mx-auto">
  366. <h1 class="section-title">Contact Us</h1>
  367. <p class="section-subtitle">We'd love to hear from you! Whether you have questions, feedback, or just
  368. want to say hello, feel free to reach out to our team using the form below or through our contact
  369. information.</p>
  370. <div class="contact-container">
  371. <!-- Contact Form -->
  372. <div>
  373. <h2 style="font-size: 24px; font-weight: 600; color: var(--secondary); margin-bottom: 20px;">
  374. Send a Message</h2>
  375. <form id="contact-form">
  376. <div class="form-group">
  377. <label for="name">Your Name</label>
  378. <input type="text" id="name" name="name" required class="form-input">
  379. </div>
  380. <div class="form-group">
  381. <label for="email">Your Email</label>
  382. <input type="email" id="email" name="email" required class="form-input">
  383. </div>
  384. <div class="form-group">
  385. <label for="subject">Subject</label>
  386. <input type="text" id="subject" name="subject" required class="form-input">
  387. </div>
  388. <div class="form-group">
  389. <label for="message">Message</label>
  390. <textarea id="message" name="message" required rows="5" class="form-input"></textarea>
  391. </div>
  392. <button type="submit" class="btn-primary">
  393. Send Message
  394. </button>
  395. </form>
  396. </div>
  397. <!-- Contact Information -->
  398. <div>
  399. <h2 style="font-size: 24px; font-weight: 600; color: var(--secondary); margin-bottom: 20px;">
  400. Contact Information</h2>
  401. <div class="contact-info">
  402. <div class="contact-item">
  403. <div class="contact-icon">
  404. <span>📧</span>
  405. </div>
  406. <div class="contact-details">
  407. <h4>Email</h4>
  408. <p><a
  409. href="mailto:art_number_coloring@jccy-tech.com">art_number_coloring@jccy-tech.com</a>
  410. </p>
  411. </div>
  412. </div>
  413. <div class="contact-item">
  414. <div class="contact-icon">
  415. <span>📍</span>
  416. </div>
  417. <div class="contact-details">
  418. <h4>Address</h4>
  419. <p>17th Floor, Shining Building, No. 35 Xueyuan Road, Haidian District, Beijing,
  420. China</p>
  421. </div>
  422. </div>
  423. <!-- Social Media Links -->
  424. <div>
  425. <h3
  426. style="font-size: 18px; font-weight: 600; color: var(--primary); margin-bottom: 15px;">
  427. Follow Us</h3>
  428. <div class="social-links">
  429. <a href="https://www.facebook.com/artcoloring" target="_blank"
  430. class="social-link facebook">
  431. <span>Facebook</span>
  432. </a>
  433. <a href="https://twitter.com/yourhandle" target="_blank"
  434. class="social-link twitter">
  435. <span>Twitter</span>
  436. </a>
  437. <a href="#" target="_blank" class="social-link instagram">
  438. <span>Instagram</span>
  439. </a>
  440. <a href="#" target="_blank" class="social-link pinterest">
  441. <span>Pinterest</span>
  442. </a>
  443. </div>
  444. </div>
  445. </div>
  446. </div>
  447. </div>
  448. </section>
  449. </div>
  450. </main>
  451. <footer>
  452. <div class="container">
  453. <div class="footer-grid">
  454. <div>
  455. <div class="footer-logo">
  456. <svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
  457. <circle cx="50" cy="50" r="45" fill="#ff6b6b" />
  458. <circle cx="30" cy="30" r="10" fill="#4ecdc4" />
  459. <circle cx="70" cy="30" r="10" fill="#ffd166" />
  460. <circle cx="30" cy="70" r="10" fill="#ffd166" />
  461. <circle cx="70" cy="70" r="10" fill="#4ecdc4" />
  462. <rect x="45" y="45" width="10" height="10" fill="white" />
  463. </svg>
  464. <span>Art Number Coloring</span>
  465. </div>
  466. <p class="footer-text">Free printable coloring pages and digital art resources for all ages.</p>
  467. </div>
  468. <div>
  469. <h3 class="footer-title">Quick Links</h3>
  470. <ul class="footer-links">
  471. <li><a href="/">Home</a></li>
  472. <li><a href="/coloring-pages">Coloring Pages</a></li>
  473. <li><a href="/about">About Us</a></li>
  474. <li><a href="/contact">Contact</a></li>
  475. </ul>
  476. </div>
  477. <div>
  478. <h3 class="footer-title">Resources</h3>
  479. <ul class="footer-links">
  480. <li><a href="/faq">FAQ</a></li>
  481. <li><a href="/privacy">Privacy Policy</a></li>
  482. <li><a href="/terms">Terms of Service</a></li>
  483. <li><a href="/app">Download App</a></li>
  484. </ul>
  485. </div>
  486. <div>
  487. <h3 class="footer-title">Contact Us</h3>
  488. <ul class="footer-links">
  489. <li>
  490. <div class="flex items-center">
  491. <span style="margin-right: 10px;">📧</span>
  492. <a href="mailto:art_number_coloring@jccy-tech.com">art_number_coloring@jccy-tech.com</a>
  493. </div>
  494. </li>
  495. <li>
  496. <div class="flex items-center">
  497. <span style="margin-right: 10px;">📍</span>
  498. <span>17th Floor, Shining Building, No. 35 Xueyuan Road, Haidian District, Beijing,
  499. China</span>
  500. </div>
  501. </li>
  502. </ul>
  503. </div>
  504. </div>
  505. <div class="footer-bottom">
  506. <p class="copyright">© 2025 Art Number Coloring. All rights reserved.</p>
  507. <div class="footer-social">
  508. <a href="#" aria-label="Facebook">Facebook</a>
  509. <a href="#" aria-label="Twitter">Twitter</a>
  510. <a href="#" aria-label="Instagram">Instagram</a>
  511. <a href="#" aria-label="Pinterest">Pinterest</a>
  512. </div>
  513. </div>
  514. </div>
  515. </footer>
  516. <script>
  517. document.addEventListener('DOMContentLoaded', function () {
  518. const contactForm = document.getElementById('contact-form');
  519. if (contactForm) {
  520. contactForm.addEventListener('submit', function (e) {
  521. e.preventDefault();
  522. // Show loading state
  523. const submitButton = contactForm.querySelector('button[type="submit"]');
  524. const originalText = submitButton.innerHTML;
  525. submitButton.disabled = true;
  526. submitButton.innerHTML = '<span style="display: inline-block; animation: spin 1s linear infinite;">⟳</span> Sending...';
  527. // Collect form data
  528. const formData = {
  529. name: contactForm.querySelector('#name').value,
  530. email: contactForm.querySelector('#email').value,
  531. subject: contactForm.querySelector('#subject').value,
  532. message: contactForm.querySelector('#message').value
  533. };
  534. // Send data to backend
  535. fetch('/contact', {
  536. method: 'POST',
  537. headers: {
  538. 'Content-Type': 'application/json'
  539. },
  540. body: JSON.stringify(formData)
  541. })
  542. .then(response => response.json())
  543. .then(data => {
  544. // Restore button state
  545. submitButton.disabled = false;
  546. submitButton.innerHTML = originalText;
  547. // Show response message
  548. const messageContainer = document.createElement('div');
  549. messageContainer.className = data.success ? 'alert alert-success' : 'alert alert-danger';
  550. messageContainer.textContent = data.message;
  551. // Add before form
  552. contactForm.parentNode.insertBefore(messageContainer, contactForm.nextSibling);
  553. // If success, clear form
  554. if (data.success) {
  555. contactForm.reset();
  556. // Remove message after 5 seconds
  557. setTimeout(() => {
  558. messageContainer.remove();
  559. }, 5000);
  560. }
  561. })
  562. .catch(error => {
  563. console.error('Error:', error);
  564. submitButton.disabled = false;
  565. submitButton.innerHTML = originalText;
  566. const errorContainer = document.createElement('div');
  567. errorContainer.className = 'alert alert-danger';
  568. errorContainer.textContent = 'Failed to send message. Please try again later.';
  569. contactForm.parentNode.insertBefore(errorContainer, contactForm.nextSibling);
  570. setTimeout(() => {
  571. errorContainer.remove();
  572. }, 5000);
  573. });
  574. });
  575. }
  576. // Loading animation
  577. const style = document.createElement('style');
  578. style.textContent = `
  579. @keyframes spin {
  580. from { transform: rotate(0deg); }
  581. to { transform: rotate(360deg); }
  582. }
  583. `;
  584. document.head.appendChild(style);
  585. });
  586. </script>
  587. </body>
  588. </html>