index.ejs 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942
  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. <link rel="icon" href="/assets/icon/favicon.ico" type="image/x-icon">
  7. <title>Art Number Coloring - Free Printable Coloring Pages | Paint Online</title>
  8. <meta name="description"
  9. content="Explore over 20,000+ FREE printable coloring pages! Dive into a massive collection for all ages, perfect for instant download, home printing, or even online coloring directly in your browser.">
  10. <meta property="og:title" content="Art Number Coloring - Free Printable Coloring Pages | Paint Online">
  11. <meta property="og:description"
  12. content="Explore over 20,000+ FREE printable coloring pages! Dive into a massive collection for all ages, perfect for instant download, home printing, or even online coloring directly in your browser.">
  13. <link rel="stylesheet" href="/stylesheets/v2/styles.css">
  14. <style>
  15. .feature-grid {
  16. display: grid;
  17. grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  18. gap: 25px;
  19. margin: 30px 0;
  20. }
  21. .feature-card {
  22. background-color: #f9f9f9;
  23. padding: 25px;
  24. border-radius: 8px;
  25. border-left: 4px solid var(--secondary-color);
  26. transition: transform 0.3s ease;
  27. }
  28. .feature-card:hover {
  29. transform: translateY(-5px);
  30. box-shadow: 0 8px 15px rgba(0, 0, 0, 0.08);
  31. }
  32. .feature-card h4 {
  33. color: var(--primary-color);
  34. margin-bottom: 10px;
  35. font-size: 1.2rem;
  36. }
  37. .collection-grid {
  38. display: grid;
  39. grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  40. gap: 25px;
  41. }
  42. .collection-card {
  43. background-color: white;
  44. border-radius: 8px;
  45. overflow: hidden;
  46. box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1);
  47. margin-bottom: 20px;
  48. transition: all 0.3s ease;
  49. }
  50. .collection-image {
  51. height: 360px;
  52. background-color: #f0f0f0;
  53. overflow: hidden;
  54. position: relative;
  55. }
  56. .collection-image img {
  57. width: 100%;
  58. height: 100%;
  59. object-fit: fill;
  60. transition: transform 0.5s ease;
  61. }
  62. .collection-card:hover .collection-image img {
  63. transform: scale(1.05);
  64. }
  65. .collection-image picture {
  66. width: 100%;
  67. height: 100%;
  68. object-fit: fill;
  69. transition: transform 0.5s ease;
  70. }
  71. .collection-card:hover .collection-image picture {
  72. transform: scale(1.05);
  73. }
  74. .collection-content {
  75. padding: 15px;
  76. }
  77. .collection-title {
  78. font-weight: 600;
  79. margin-bottom: 8px;
  80. color: var(--text-color);
  81. }
  82. .collection-desc {
  83. font-size: 0.9rem;
  84. margin-bottom: 8px;
  85. color: var(--light-text);
  86. }
  87. .cta-btn {
  88. display: inline-block;
  89. background-color: var(--primary-color);
  90. color: white;
  91. padding: 12px 30px;
  92. border-radius: 30px;
  93. text-decoration: none;
  94. font-weight: 600;
  95. transition: all 0.3s ease;
  96. margin: 15px 10px 0;
  97. }
  98. .cta-btn:hover {
  99. background-color: var(--secondary-color);
  100. }
  101. .subscribe-form {
  102. background-color: var(--secondary-color);
  103. padding: 30px;
  104. border-radius: 10px;
  105. text-align: center;
  106. margin: 30px 0;
  107. }
  108. .subscribe-form h3 {
  109. color: white;
  110. margin-top: 0;
  111. }
  112. .form-group {
  113. margin: 15px 0;
  114. display: flex;
  115. flex-direction: column;
  116. }
  117. .form-group label {
  118. color: white;
  119. margin-bottom: 8px;
  120. font-weight: 500;
  121. }
  122. .form-group input {
  123. padding: 12px;
  124. border: none;
  125. border-radius: 5px;
  126. font-size: 1rem;
  127. }
  128. .benefits {
  129. display: flex;
  130. flex-wrap: wrap;
  131. justify-content: center;
  132. gap: 15px;
  133. margin: 20px 0;
  134. }
  135. .benefit {
  136. background-color: white;
  137. padding: 10px 15px;
  138. border-radius: 20px;
  139. font-size: 0.9rem;
  140. display: flex;
  141. align-items: center;
  142. }
  143. .benefit svg {
  144. margin-right: 5px;
  145. color: var(--primary-color);
  146. }
  147. /* 视频和线稿区域样式 */
  148. .video-section {
  149. background-color: white;
  150. border-radius: 10px;
  151. padding: 40px;
  152. box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05);
  153. margin: 50px 0;
  154. }
  155. .content-container {
  156. display: grid;
  157. grid-template-columns: 1fr 1fr;
  158. gap: 30px;
  159. margin-bottom: 10px;
  160. }
  161. /* 视频播放器样式 */
  162. .video-player {
  163. position: relative;
  164. background-color: #000;
  165. border-radius: 8px;
  166. overflow: hidden;
  167. cursor: pointer;
  168. aspect-ratio: 1/1;
  169. /* 修改为1:1比例 */
  170. }
  171. .video-player video {
  172. width: 100%;
  173. height: 100%;
  174. object-fit: cover;
  175. display: block;
  176. }
  177. .play-button {
  178. position: absolute;
  179. top: 50%;
  180. left: 50%;
  181. transform: translate(-50%, -50%);
  182. width: 80px;
  183. height: 80px;
  184. background-color: rgba(255, 107, 107, 0.8);
  185. border-radius: 50%;
  186. display: flex;
  187. align-items: center;
  188. justify-content: center;
  189. transition: all 0.3s ease;
  190. }
  191. .play-button:hover {
  192. background-color: rgba(255, 107, 107, 1);
  193. transform: translate(-50%, -50%) scale(1.1);
  194. }
  195. .play-button::after {
  196. content: "";
  197. width: 0;
  198. height: 0;
  199. border-top: 15px solid transparent;
  200. border-bottom: 15px solid transparent;
  201. border-left: 25px solid white;
  202. margin-left: 5px;
  203. }
  204. /* 线稿图样式 */
  205. .lineart-container {
  206. position: relative;
  207. border-radius: 8px;
  208. overflow: hidden;
  209. aspect-ratio: 1/1;
  210. /* 修改为1:1比例 */
  211. background-color: #f5f5f5;
  212. }
  213. .lineart-container img {
  214. width: 100%;
  215. height: 100%;
  216. object-fit: contain;
  217. /* 使用contain保持图像比例 */
  218. padding: 15px;
  219. /* 添加内边距,使图像不贴边 */
  220. }
  221. /* 线稿图悬停效果 */
  222. .lineart-overlay {
  223. position: absolute;
  224. bottom: 0;
  225. left: 0;
  226. right: 0;
  227. background: linear-gradient(to top, rgba(0, 0, 0, 0.7), transparent);
  228. padding: 15px;
  229. color: white;
  230. opacity: 0;
  231. transition: opacity 0.3s ease;
  232. }
  233. .lineart-container:hover .lineart-overlay {
  234. opacity: 1;
  235. }
  236. .lineart-title {
  237. font-weight: 600;
  238. margin-bottom: 5px;
  239. }
  240. .lineart-desc {
  241. font-size: 0.9rem;
  242. opacity: 0.9;
  243. }
  244. .app-tutorial {
  245. display: grid;
  246. grid-template-columns: 1fr 1fr;
  247. gap: 40px;
  248. }
  249. .video-container {
  250. position: relative;
  251. background-color: #000;
  252. border-radius: 8px;
  253. overflow: hidden;
  254. cursor: pointer;
  255. /* aspect-ratio: 1/1; */
  256. }
  257. .video-container video {
  258. box-sizing: border-box;
  259. width: 100%;
  260. height: 100%;
  261. object-fit: contain;
  262. display: block;
  263. }
  264. .tutorial-steps {
  265. display: flex;
  266. flex-direction: column;
  267. justify-content: center;
  268. }
  269. .step {
  270. margin-bottom: 30px;
  271. padding-left: 30px;
  272. position: relative;
  273. }
  274. .step-number {
  275. position: absolute;
  276. left: 0;
  277. top: 0;
  278. width: 30px;
  279. height: 30px;
  280. border-radius: 50%;
  281. background-color: var(--primary-color);
  282. color: white;
  283. display: flex;
  284. align-items: center;
  285. justify-content: center;
  286. font-weight: bold;
  287. }
  288. .step-title {
  289. font-size: 1.2rem;
  290. font-weight: 600;
  291. color: var(--text-color);
  292. margin-bottom: 10px;
  293. }
  294. .step-desc {
  295. color: var(--light-text);
  296. line-height: 1.7;
  297. }
  298. .app-badge-container {
  299. display: flex;
  300. justify-content: center;
  301. gap: 20px;
  302. margin-top: 30px;
  303. }
  304. .app-badge {
  305. display: flex;
  306. justify-content: center;
  307. align-items: center;
  308. width: 160px;
  309. height: auto;
  310. background-color: black;
  311. border-radius: 8px;
  312. margin: 10px;
  313. transition: transform 0.3s ease;
  314. }
  315. .app-badge:hover {
  316. transform: translateY(-5px);
  317. }
  318. @media (max-width: 768px) {
  319. .feature-grid {
  320. grid-template-columns: 1fr;
  321. }
  322. .collection-grid {
  323. grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  324. gap: 20px;
  325. }
  326. .content-container {
  327. grid-template-columns: 1fr;
  328. }
  329. .video-section h2 {
  330. font-size: 1.5rem;
  331. }
  332. .play-button {
  333. width: 60px;
  334. height: 60px;
  335. }
  336. .play-button::after {
  337. border-top: 12px solid transparent;
  338. border-bottom: 12px solid transparent;
  339. border-left: 20px solid white;
  340. }
  341. .app-tutorial {
  342. grid-template-columns: 1fr;
  343. }
  344. }
  345. </style>
  346. <script type="application/ld+json">
  347. {
  348. "@context": "https://schema.org",
  349. "@type": "WebSite",
  350. "name": "Art Number Coloring",
  351. "description": "Explore over 20,000+ FREE printable coloring pages! Dive into a massive collection for all ages, perfect for instant download, home printing, or even online coloring directly in your browser.",
  352. "url": "https://art.pcoloring.com",
  353. "mainEntityOfPage": "https://art.pcoloring.com",
  354. "publisher": {
  355. "@type": "Organization",
  356. "name": "Art Number Coloring",
  357. "logo": {
  358. "@type": "ImageObject",
  359. "url": "https://art.pcoloring.com/assets/icon/icon.webp",
  360. "width": 180,
  361. "height": 180
  362. }
  363. },
  364. "potentialAction": {
  365. "@type": "SearchAction",
  366. "target": {
  367. "@type": "EntryPoint",
  368. "urlTemplate": "https://art.pcoloring.com/coloring-page-gallery?search={search_term_string}"
  369. },
  370. "query-input": "required name=search_term_string"
  371. },
  372. "image": {
  373. "@type": "ImageObject",
  374. "url": "https://art.pcoloring.com/assets/images/hero.webp", // 替换为代表网站整体的图片
  375. "width": 820,
  376. "height": 360
  377. },
  378. "thumbnailUrl": "https://art.pcoloring.com/assets/images/hero.webp"
  379. }
  380. </script>
  381. <script type="application/ld+json">
  382. {
  383. "@context": "https://schema.org",
  384. "@type": "VideoObject",
  385. "name": "Dog Riding an Electric Scooter - Video Story Coloring Page",
  386. "description": "Watch the real-life story of a dog riding an electric scooter that inspired our coloring page. Then, color it yourself!",
  387. "thumbnailUrl": "https://d2mb6s2cy1zg97.cloudfront.net/thumbs/coloring-page/vs-poster/320/67b2b23b9c09d12e648ea25a.webp",
  388. "uploadDate": "2025-01-17T08:00:00+08:00", // 替换为实际上传日期和时区
  389. "contentUrl": "https://d1tdr4l5yr56j4.cloudfront.net/%E7%8B%97%E9%AA%91%E7%94%B5%E5%8A%A8%E8%BD%A602-story.m3u8",
  390. "duration": "PT11S",
  391. "potentialAction": {
  392. "@type": "WatchAction",
  393. "target": {
  394. "@type": "EntryPoint",
  395. "url": "https://art.pcoloring.com/video-coloring-pages"
  396. }
  397. },
  398. "interactionStatistic": {
  399. "@type": "InteractionCounter",
  400. "interactionType": "https://schema.org/WatchAction",
  401. "userInteractionCount": 2353
  402. }
  403. }
  404. </script>
  405. <script type="application/ld+json">
  406. {
  407. "@context": "https://schema.org",
  408. "@type": "VideoObject",
  409. "name": "How to Use Art Number Coloring App for Digital Coloring",
  410. "description": "Learn how to download, browse, color, save, and share your artworks seamlessly using the Art Number Coloring mobile and tablet app. Unleash your creativity on the go!",
  411. "thumbnailUrl": "https://art.pcoloring.com/assets/images/app-tutorial-poster.webp",
  412. "uploadDate": "2025-06-15T10:00:00+08:00",
  413. "contentUrl": "https://art.pcoloring.com/assets/video/art-number-coloring.mp4",
  414. "duration": "PT45S", // 例如:12秒
  415. "potentialAction": {
  416. "@type": "WatchAction",
  417. "target": {
  418. "@type": "EntryPoint",
  419. "url": "https://art.pcoloring.com"
  420. }
  421. },
  422. "interactionStatistic": {
  423. "@type": "InteractionCounter",
  424. "interactionType": "https://schema.org/WatchAction",
  425. "userInteractionCount": 3252 // 替换为实际观看次数
  426. }
  427. }
  428. </script>
  429. <script type='text/javascript'
  430. src='https://platform-api.sharethis.com/js/sharethis.js#property=685036ce6c1ae8001abaded7&product=sop'
  431. async='async'></script>
  432. </head>
  433. <!-- Google tag (gtag.js) -->
  434. <script async src="https://www.googletagmanager.com/gtag/js?id=G-JBGGVGLHTP"></script>
  435. <script>
  436. window.dataLayer = window.dataLayer || [];
  437. function gtag() { dataLayer.push(arguments); }
  438. gtag('js', new Date());
  439. gtag('config', 'G-JBGGVGLHTP');
  440. </script>
  441. </head>
  442. <body>
  443. <%- include('header') %>
  444. <main class="container">
  445. <section>
  446. <h1>Welcome to Art Number Coloring</h1>
  447. <p>Your ultimate destination for creative expression! Dive into a massive universe of over <strong><a
  448. href="/coloring-page-gallery">20,000
  449. stunning coloring pages</a></strong>, meticulously crafted to spark joy and relaxation for all ages.
  450. Forget
  451. about complicated art supplies—here, creativity is at your fingertips.</p>
  452. <p>Explore our expansive gallery and choose your next masterpiece. Every single coloring page is
  453. <strong>completely free to download in high-definition for printing</strong>, so you can enjoy the classic
  454. feel of pen on paper. Or, for instant fun, unleash your inner artist with our <strong><a
  455. href="/tips-tricks/how-to-color-online">intuitive online digital
  456. coloring tool</a></strong>, available directly in your browser!
  457. </p>
  458. <p>But the fun doesn't stop there. Take your passion for coloring anywhere with our dedicated
  459. <strong><a href="/app">mobile and tablet apps</a></strong>. Whether you're at home or on the go, Art Number
  460. Coloring provides a seamless and
  461. engaging experience, perfectly designed to meet all your coloring needs and help you unleash your full
  462. creative potential. Start your colorful journey with us today!
  463. </p>
  464. </section>
  465. <section class="video-section">
  466. <a href="/video-coloring-pages" class="no-underline-link">
  467. <h2>Video Story Coloring Pages</h2>
  468. </a>
  469. <p>Art originates from life. This fun moment was captured by our artists and turned into a coloring page. Come
  470. and bring it to life with colors!</p>
  471. <div class="content-container">
  472. <!-- 左侧视频播放器 -->
  473. <div class="video-player" id="storyVideo">
  474. <video
  475. poster="https://d2mb6s2cy1zg97.cloudfront.net/thumbs/coloring-page/vs-poster/320/67b2b23b9c09d12e648ea25a.webp"
  476. controls>
  477. <source
  478. src="https://d1tdr4l5yr56j4.cloudfront.net/%E7%8B%97%E9%AA%91%E7%94%B5%E5%8A%A8%E8%BD%A602-story.m3u8"
  479. type="application/x-mpegURL">
  480. Your browser does not support the video tag.
  481. </video>
  482. <div class="play-button"></div>
  483. </div>
  484. <!-- 右侧线稿图 -->
  485. <div class="lineart-container">
  486. <a href="/coloring-page/676be5cb86bb4d3392aac198"><img
  487. src="https://d2mb6s2cy1zg97.cloudfront.net/thumbs/coloring-page/page/640/676be5cb86bb4d3392aac198.webp"
  488. alt="Coloring Line Art"></a>
  489. <div class="lineart-overlay">
  490. <div class="lineart-title">Dog Riding an Electric Scooter</div>
  491. <div class="lineart-desc">Click to download or color online along with the video</div>
  492. </div>
  493. </div>
  494. </div>
  495. <a href="/video-coloring-pages"><button class="btn">View More >></button></a>
  496. </section>
  497. <section>
  498. <a href="/flower-coloring-pages" class="no-underline-link">
  499. <h2>New Collection: Flower Coloring Pages</h2>
  500. </a>
  501. <p>From peonies and tulips to sunflowers and roses, come pick your favorite flowers to color!</p>
  502. <div class="collection-card">
  503. <div class="collection-image">
  504. <a href="/flower-coloring-pages">
  505. <picture>
  506. <source media="(min-width: 768px)" srcset="/assets/coloring-pages/flower-3-1.webp">
  507. <source media="(max-width: 767px)" srcset="/assets/coloring-pages/flower-16-9.webp">
  508. <img src="/assets/coloring-pages/flower-16-9.webp" alt="Flower Coloring Pages">
  509. </picture>
  510. </a>
  511. </div>
  512. <div class="collection-content">
  513. <div class="collection-title">Beautiful Flower Bouquet</div>
  514. <div class="collection-desc">A vibrant bouquet featuring a mix of seasonal flowers, perfect for practicing
  515. color blending and shading.</div>
  516. <a href="/flower-coloring-pages"><button class="btn">View More >></button></a>
  517. </div>
  518. </div>
  519. <div class="collection-card">
  520. <div class="collection-image">
  521. <a href="/zentangle-coloring-pages">
  522. <picture>
  523. <source media="(min-width: 768px)" srcset="/assets/coloring-pages/zentangle-3-1.webp">
  524. <source media="(max-width: 767px)" srcset="/assets/coloring-pages/zentangle-16-9.webp">
  525. <img src="/assets/coloring-pages/zentangle-16-9.webp" alt="Zentangle Coloring Pages">
  526. </picture>
  527. </a>
  528. </div>
  529. <div class="collection-content">
  530. <div class="collection-title">Creative Zentangle Art</div>
  531. <div class="collection-desc">A blend of structured patterns and artistic imagination in intricate doodle
  532. art.</div>
  533. <a href="/zentangle-coloring-pages"><button class="btn">View More >></button></a>
  534. </div>
  535. </div>
  536. <div class="collection-grid">
  537. <a href="/mandala-coloring-pages" class="collection-card">
  538. <div class="collection-image" style="height: 200px">
  539. <img src="/assets/coloring-pages/mandala-16-9.webp" alt="Mandalas coloring pages">
  540. </div>
  541. <div class="collection-content">
  542. <div class="collection-title">Mandala Coloring Pages</div>
  543. <p class="collection-desc">Explore intricate patterns perfect for experimenting with bold color
  544. combinations and symmetrical designs.</p>
  545. </div>
  546. </a>
  547. <a href="/simple-coloring-pages" class="collection-card">
  548. <div class="collection-image" style="height: 200px">
  549. <img src="/assets/coloring-pages/simple-16-9.webp" alt="Simple coloring pages">
  550. </div>
  551. <div class="collection-content">
  552. <div class="collection-title">Simple Coloring Pages For Kids</div>
  553. <p class="collection-desc">Easy-peasy coloring fun for little artists, designed just for kids!</p>
  554. </div>
  555. </a>
  556. <a href="/fantasy-coloring-pages" class="collection-card">
  557. <div class="collection-image" style="height: 200px">
  558. <img src="/assets/coloring-pages/fantasy-16-9.webp" alt="Fantasy coloring pages">
  559. </div>
  560. <div class="collection-content">
  561. <div class="collection-title">Fantasy Coloring Pages</div>
  562. <p class="collection-desc">Let your imagination soar with dragons, unicorns, and magical
  563. landscapes. Perfect for dramatic color combinations.</p>
  564. </div>
  565. </a>
  566. </div>
  567. <a href="/coloring-pages"><button class="btn">More Collections >></button></a>
  568. </section>
  569. <section>
  570. <h2>Explore over 20,000 free printable coloring pages for all ages</h2>
  571. <p style="text-align: start;">Dive into our <strong><a href="/coloring-page-gallery">Coloring Page Gallery</a></strong> with 20,000+ free printable designs! Explore
  572. via intuitive search filters—find themes, styles, or difficulty levels in seconds. Print your favorites or
  573. color online with our digital tools—all completely free. Unleash creativity today!</p>
  574. <h3>2025 Latest Coloring Pages:</h3>
  575. <div class="coloring-grid">
  576. <% latest.forEach(item=> { %>
  577. <div class="coloring-card">
  578. <div data-content-id="<%= item._id %>" class="coloring-image">
  579. <a href="<%= item.uri %>"><img src="<%= item.thumb %>" alt="<%= item.title %>"></a>
  580. </div>
  581. <div class="coloring-content">
  582. <div class="coloring-title"><%= item.title %></div>
  583. </div>
  584. </div>
  585. <% }); %>
  586. </div>
  587. <a href="/coloring-page-gallery" class="cta-btn">More Coloring Pages >></a>
  588. </section>
  589. <section class="subscribe-form">
  590. <h3>Free Coloring Pages Sent to Your Inbox</h3>
  591. <p>Get the Eclectic Coloring Book delivered to you and start coloring today.</p>
  592. <div class="benefits">
  593. <div class="benefit">
  594. <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
  595. <path d="M21 7L9 19L3 13" stroke="currentColor" stroke-width="2" stroke-linecap="round"
  596. stroke-linejoin="round" />
  597. </svg>
  598. Daily new coloring pages updated synchronously
  599. </div>
  600. <div class="benefit">
  601. <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
  602. <path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path>
  603. <path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path>
  604. </svg>
  605. Stay updated with Art Number Coloring community dynamics in real time
  606. </div>
  607. <div class="benefit">
  608. <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
  609. <path
  610. d="M12 2C6.48 2 2 6.48 2 12C2 17.52 6.48 22 12 22C17.52 22 22 17.52 22 12C22 6.48 17.52 2 12 2ZM12 20C7.59 20 4 16.41 4 12C4 7.59 7.59 4 12 4C16.41 4 20 7.59 20 12C20 16.41 16.41 20 12 20Z">
  611. </path>
  612. <path d="M12 12C10.9 12 10 11.1 10 10C10 8.9 10.9 8 12 8C13.1 8 14 8.9 14 10C14 11.1 13.1 12 12 12Z">
  613. </path>
  614. </svg>
  615. Access to Subscriber Central for exclusive content
  616. </div>
  617. </div>
  618. <form id="subscribeForm">
  619. <div class="form-group">
  620. <label for="email">Enter your email to receive your Eclectic Coloring Book instantly</label>
  621. <input type="email" id="email" placeholder="your@email.com" required>
  622. <div id="emailError" class="error-message" style="color: red; display: none;"></div>
  623. </div>
  624. <button type="submit" class="btn btn-accent">Get My Coloring Book</button>
  625. <div id="formMessage" class="form-message" style="margin-top: 15px; display: none;"></div>
  626. </form>
  627. </section>
  628. <section>
  629. <h2>Unleash Your Creativity</h2>
  630. <p>Art Number Coloring offers free printable coloring pages and tutorials for everyone. Whether you're a
  631. beginner
  632. or an experienced artist, there's something for you here.</p>
  633. <div class="feature-grid">
  634. <div class="feature-card">
  635. <h4>Print and Color at Home</h4>
  636. <p>Print your coloring page to color at home with markers, colored pencils, or crayons. Create your own cozy
  637. coloring corner!</p>
  638. </div>
  639. <div class="feature-card">
  640. <h4>Digital Coloring Online</h4>
  641. <p>Use our APP client to color according to number guidance on your phone/tablet, or color online directly
  642. on the web</p>
  643. </div>
  644. <div class="feature-card">
  645. <h4>All Ages Welcome</h4>
  646. <p>From simple designs for kids to intricate patterns for adults, our collection has something for every
  647. skill
  648. level and age.</p>
  649. </div>
  650. </div>
  651. <p>We bring the imagery, you bring your imagination! Start exploring our collection of free coloring pages today
  652. and let your creativity shine.</p>
  653. </section>
  654. <section>
  655. <h2>How to Use Our Coloring App for Digtal Coloring </h2>
  656. <div class="app-tutorial">
  657. <div class="video-container" id="appVideo">
  658. <video muted loop>
  659. <source src="/assets/video/art-number-coloring.mp4" type="video/mp4">
  660. Your browser does not support the video tag.
  661. </video>
  662. <div class="play-button"></div>
  663. </div>
  664. <div class="tutorial-steps">
  665. <div class="step">
  666. <div class="step-number">1</div>
  667. <div class="step-title">Download the App</div>
  668. <div class="step-desc">Visit your device's app store and search for "Art Coloring Book". Click download to
  669. install the app on your phone or tablet.</div>
  670. </div>
  671. <div class="step">
  672. <div class="step-number">2</div>
  673. <div class="step-title">Browse Coloring Pages</div>
  674. <div class="step-desc">Explore our library of thousand of coloring pages sorted by category, difficulty,
  675. or
  676. popularity. Find the perfect page for your mood.</div>
  677. </div>
  678. <div class="step">
  679. <div class="step-number">3</div>
  680. <div class="step-title">Start Digital Coloring</div>
  681. <div class="step-desc">Select a coloring page and complete the coloring according to the number guidance.
  682. </div>
  683. </div>
  684. <div class="step">
  685. <div class="step-number">4</div>
  686. <div class="step-title">Save and Share</div>
  687. <div class="step-desc">Save your colored page to your profile, share it with friends on social media, or
  688. print it out to display in your home.</div>
  689. </div>
  690. </div>
  691. </div>
  692. <div class="app-badge-container">
  693. <a href="itms-apps://itunes.apple.com/app/id1575480118?action=write-review" target="_blank" class="app-badge">
  694. <img src="/assets/icon/icon-app-store.svg" alt="Download on the App Store" style="width:100%">
  695. </a>
  696. <a href="https://play.google.com/store/apps/details?id=com.pcoloring.art.puzzle.color.by.number&pcampaignid=web_share"
  697. target="_blank" class="app-badge">
  698. <img src="/assets/icon/icon-google-play.svg" alt="Get it on Google Play" style="width:100%">
  699. </a>
  700. </div>
  701. </section>
  702. </main>
  703. <%- include('footer') %>
  704. <script src="/scripts/script.js"></script>
  705. <script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
  706. <script>
  707. const storyVideo = document.getElementById('storyVideo');
  708. const video = storyVideo.querySelector('video');
  709. const playButton = storyVideo.querySelector('.play-button');
  710. // 视频播放控制
  711. if (Hls.isSupported()) {
  712. var hls = new Hls();
  713. var url = 'https://d1tdr4l5yr56j4.cloudfront.net/%E7%8B%97%E9%AA%91%E7%94%B5%E5%8A%A8%E8%BD%A602-story.m3u8';
  714. hls.loadSource(url);
  715. hls.attachMedia(video);
  716. } else if (video.canPlayType('application/vnd.apple.mpegurl')) {
  717. // Safari 不支持 hls.js 但原生支持 HLS
  718. video.src = 'https://d1tdr4l5yr56j4.cloudfront.net/%E7%8B%97%E9%AA%91%E7%94%B5%E5%8A%A8%E8%BD%A602-story.m3u8';
  719. } else {
  720. // 浏览器不支持 HLS
  721. console.error('Your browser does not support HLS.');
  722. }
  723. playButton.addEventListener('click', () => {
  724. video.play();
  725. playButton.style.display = 'none';
  726. });
  727. // 视频播放时隐藏play button
  728. video.addEventListener('play', () => {
  729. playButton.style.display = 'none';
  730. });
  731. // 视频暂停时显示播放按钮
  732. video.addEventListener('pause', () => {
  733. playButton.style.display = 'flex';
  734. });
  735. // 视频结束时显示播放按钮
  736. video.addEventListener('ended', () => {
  737. playButton.style.display = 'flex';
  738. });
  739. </script>
  740. <script>
  741. // 视频播放控制
  742. const appVideo = document.getElementById('appVideo');
  743. const video2 = appVideo.querySelector('video');
  744. const playButton2 = appVideo.querySelector('.play-button');
  745. appVideo.addEventListener('click', () => {
  746. if (video2.paused) {
  747. video2.play();
  748. playButton2.style.display = 'none';
  749. } else {
  750. video2.pause();
  751. playButton2.style.display = 'flex';
  752. }
  753. });
  754. // 视频结束时显示播放按钮
  755. video2.addEventListener('ended', () => {
  756. playButton2.style.display = 'flex';
  757. });
  758. </script>
  759. <script>
  760. document.addEventListener('DOMContentLoaded', () => {
  761. // 订阅表单提交处理
  762. const subscribeForm = document.getElementById('subscribeForm');
  763. const emailInput = document.getElementById('email');
  764. const emailError = document.getElementById('emailError');
  765. const formMessage = document.getElementById('formMessage');
  766. subscribeForm.addEventListener('submit', async (e) => {
  767. e.preventDefault();
  768. emailError.style.display = 'none';
  769. formMessage.style.display = 'none';
  770. // 简单的前端验证
  771. if (!emailInput.value.trim()) {
  772. emailError.textContent = 'Please enter your email address';
  773. emailError.style.display = 'block';
  774. return;
  775. }
  776. const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
  777. if (!emailRegex.test(emailInput.value.trim())) {
  778. emailError.textContent = 'Please enter a valid email address';
  779. emailError.style.display = 'block';
  780. return;
  781. }
  782. try {
  783. // 显示加载状态
  784. const submitButton = subscribeForm.querySelector('button');
  785. const originalText = submitButton.textContent;
  786. submitButton.disabled = true;
  787. submitButton.textContent = 'Sending...';
  788. // 发送数据到后端
  789. const response = await fetch('/api/subscribe', {
  790. method: 'POST',
  791. headers: {
  792. 'Content-Type': 'application/json'
  793. },
  794. body: JSON.stringify({
  795. email: emailInput.value.trim()
  796. })
  797. });
  798. const data = await response.json();
  799. // 恢复按钮状态
  800. submitButton.disabled = false;
  801. submitButton.textContent = originalText;
  802. if (response.ok) {
  803. // 成功处理
  804. formMessage.textContent = 'Thank you! Your coloring book has been sent to your email.';
  805. formMessage.style.color = 'green';
  806. formMessage.style.display = 'block';
  807. // 清空表单
  808. emailInput.value = '';
  809. } else {
  810. // 错误处理
  811. formMessage.textContent = data.message || 'An error occurred. Please try again later.';
  812. formMessage.style.color = 'red';
  813. formMessage.style.display = 'block';
  814. }
  815. } catch (error) {
  816. console.error('Error submitting form:', error);
  817. formMessage.textContent = 'An error occurred. Please try again later.';
  818. formMessage.style.color = 'red';
  819. formMessage.style.display = 'block';
  820. }
  821. });
  822. });
  823. </script>
  824. </body>
  825. </html>