<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"/><meta content="width=device-width, initial-scale=1.0" name="viewport"/><title>GenshinZone | Genshin Impact Game Blog</title><meta content="GenshinZone is a dedicated Genshin Impact blog platform, providing the latest guides, character builds, weapon recommendations, in-depth exploration, and version previews. Your one-stop destination for all Genshin Impact news and strategies!" name="description"/><meta content=",game guides,Genshin Impact guides,character builds,weapon builds,miHoYo,Genshin news,Genshin tips,game strategies,version updates,open world games,anime games" name="keywords"/><link href="https://www.genshinzone.cc/" rel="canonical"/><style> /* Global Styles */ :root { --primary: #64b2e3; --secondary: #f9c639; --accent: #ec6d77; --dark: #2c3e50; --light: #f7f8fc; --anemo: #73dbc8; --geo: #f1b94b; --electro: #af7ee7; --dendro: #a6c938; --hydro: #21a1d5; --pyro: #ef6a4c; --cryo: #a0d8f1; } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; } body { background-color: var(--light); background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><rect fill="%23f7f8fc" width="50" height="50" x="0" y="0"/><rect fill="%23eef0f7" width="50" height="50" x="50" y="0"/><rect fill="%23eef0f7" width="50" height="50" x="0" y="50"/><rect fill="%23f7f8fc" width="50" height="50" x="50" y="50"/></svg>'); color: var(--dark); } .container { max-width: 1200px; margin: 0 auto; padding: 0 20px; } a { text-decoration: none; color: var(--primary); transition: all 0.3s ease; } a:hover { color: var(--accent); } button { cursor: pointer; border: none; border-radius: 25px; padding: 10px 25px; font-weight: bold; transition: all 0.3s ease; background-color: var(--primary); color: white; } button:hover { background-color: var(--accent); transform: translateY(-2px); box-shadow: 0 5px 15px rgba(236, 109, 119, 0.4); } /* Header Styles */ header { background: linear-gradient(135deg, #73dbc8, #21a1d5, #af7ee7); color: white; padding: 20px 0; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); position: relative; overflow: hidden; } header::before { content: ''; position: absolute; width: 100%; height: 100%; top: 0; left: 0; background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><circle cx="25" cy="25" r="10" fill="%23ffffff10"/><circle cx="75" cy="75" r="15" fill="%23ffffff10"/><circle cx="75" cy="25" r="5" fill="%23ffffff10"/><circle cx="25" cy="75" r="8" fill="%23ffffff10"/></svg>'); opacity: 0.3; } .navbar { display: flex; justify-content: space-between; align-items: center; } .logo { font-size: 24px; font-weight: bold; color: white; display: flex; align-items: center; } .logo img { height: 40px; margin-right: 10px; } nav ul { display: flex; list-style: none; } nav ul li { margin-left: 30px; } nav ul li a { color: white; font-weight: bold; position: relative; } nav ul li a::after { content: ''; position: absolute; bottom: -5px; left: 0; width: 0; height: 2px; background-color: var(--secondary); transition: width 0.3s ease; } nav ul li a.active::after, nav ul li a:hover::after { width: 100%; } .hero { display: flex; align-items: center; padding: 60px 0; } .hero-content { flex: 1; } .hero h1 { font-size: 48px; margin-bottom: 20px; line-height: 1.2; position: relative; z-index: 1; } .hero h1::after { content: ''; position: absolute; width: 60px; height: 6px; background-color: var(--secondary); bottom: -10px; left: 0; border-radius: 3px; } .hero p { font-size: 18px; margin-bottom: 30px; line-height: 1.6; max-width: 600px; } .hero-buttons { display: flex; gap: 15px; } .hero-image { flex: 1; display: flex; justify-content: flex-end; position: relative; } .hero-image img { max-width: 100%; border-radius: 10px; box-shadow: 0 20px 40px rgba(0, 0, 0, 0.2); transform: perspective(1000px) rotateY(-10deg); transition: transform 0.5s ease; } .hero-image img:hover { transform: perspective(1000px) rotateY(0); } /* Main Content Styles */ main { padding: 60px 0; } .content-section { margin-bottom: 80px; } .section-title { text-align: center; margin-bottom: 50px; position: relative; } .section-title h2 { font-size: 36px; display: inline-block; padding-bottom: 10px; position: relative; } .section-title h2::after { content: ''; position: absolute; width: 60%; height: 4px; background: linear-gradient(90deg, transparent, var(--secondary), transparent); left: 20%; bottom: 0; border-radius: 2px; } .section-title p { color: #777; font-size: 18px; max-width: 700px; margin: 15px auto 0; } /* Articles Grid */ .article-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 30px; } .article-card { background-color: white; border-radius: 15px; overflow: hidden; box-shadow: 0 10px 20px rgba(0, 0, 0, 0.05); transition: all 0.3s ease; position: relative; display: flex; flex-direction: column; } .article-card:hover { transform: translateY(-10px); box-shadow: 0 20px 30px rgba(0, 0, 0, 0.1); } .article-image { height: 200px; overflow: hidden; } .article-image img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s ease; } .article-card:hover .article-image img { transform: scale(1.1); } .article-category { position: absolute; top: 15px; right: 15px; background-color: var(--secondary); color: white; padding: 5px 15px; border-radius: 20px; font-size: 12px; font-weight: bold; box-shadow: 0 3px 10px rgba(249, 198, 57, 0.4); text-transform: capitalize; } .article-content { padding: 20px; position: relative; flex-grow: 1; display: flex; flex-direction: column; } .article-meta { display: flex; align-items: center; margin-bottom: 10px; font-size: 13px; color: #777; } .article-meta span { display: flex; align-items: center; margin-right: 15px; } .article-meta i { margin-right: 5px; } .article-content h3 { font-size: 20px; margin-bottom: 10px; line-height: 1.4; flex-grow: 1; } .article-content h3 a { color: var(--dark); } .article-content h3 a:hover { color: var(--primary); } .article-content p { color: #555; margin-bottom: 20px; line-height: 1.5; font-size: 15px; } .read-more { font-weight: bold; font-size: 14px; display: inline-flex; align-items: center; margin-top: auto; } .read-more i { margin-left: 5px; transition: transform 0.3s ease; } .read-more:hover i { transform: translateX(5px); } /* Popular Tags Section */ .popular-tags-section { margin-bottom: 80px; padding: 40px 0; background-color: #fff; border-radius: 20px; box-shadow: 0 10px 30px rgba(0,0,0,0.05); } .popular-tags { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 20px; justify-content: center; } .tag { background-color: var(--light); color: var(--dark); padding: 8px 18px; border-radius: 20px; font-size: 14px; transition: all 0.3s ease; } .tag:hover { background-color: var(--primary); color: white; transform: translateY(-2px); } /* Newsletter Section */ .newsletter { background-color: var(--dark); color: white; border-radius: 20px; padding: 50px; margin-bottom: 80px; position: relative; overflow: hidden; text-align: center; } .newsletter::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><circle cx="20" cy="20" r="4" fill="%23ffffff10"/><circle cx="60" cy="60" r="8" fill="%23ffffff10"/><circle cx="80" cy="20" r="6" fill="%23ffffff10"/><circle cx="40" cy="80" r="4" fill="%23ffffff10"/></svg>'); opacity: 0.3; } .newsletter h2 { font-size: 32px; margin-bottom: 15px; position: relative; display: inline-block; padding-bottom: 10px; } .newsletter h2::after { content: ''; position: absolute; width: 60%; height: 4px; background-color: var(--secondary); bottom: 0; left: 50%; transform: translateX(-50%); border-radius: 2px; } .newsletter p { font-size: 16px; margin: 0 auto 30px; max-width: 600px; line-height: 1.6; } .newsletter-form { display: flex; max-width: 600px; position: relative; margin: 0 auto; } .newsletter-form input { flex: 1; padding: 15px 20px; border: none; border-radius: 30px; font-size: 16px; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2); } .newsletter-form button { position: absolute; right: 5px; top: 5px; height: calc(100% - 10px); border-radius: 25px; background: linear-gradient(135deg, var(--primary), var(--accent)); } .newsletter-form button:hover { background: linear-gradient(135deg, var(--accent), var(--primary)); } #subscribe-toast { position: fixed; bottom: 30px; left: 50%; transform: translateX(-50%); background-color: var(--accent); color: white; padding: 15px 30px; border-radius: 50px; box-shadow: 0 5px 15px rgba(0,0,0,0.2); z-index: 9999; opacity: 0; visibility: hidden; transition: opacity 0.5s, visibility 0.5s, bottom 0.5s; } #subscribe-toast.show { opacity: 1; visibility: visible; bottom: 50px; } /* Footer Styles */ footer { background-color: var(--dark); color: white; padding: 60px 0 30px; position: relative; } footer::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 5px; background: linear-gradient(90deg, var(--anemo), var(--geo), var(--electro), var(--dendro), var(--hydro), var(--pyro), var(--cryo)); } .footer-content { display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px; margin-bottom: 40px; } .footer-heading { font-size: 18px; margin-bottom: 20px; position: relative; padding-bottom: 10px; } .footer-heading::after { content: ''; position: absolute; width: 30px; height: 3px; background-color: var(--secondary); bottom: 0; left: 0; border-radius: 2px; } .footer-links { list-style: none; } .footer-links li { margin-bottom: 10px; color: #aaa; transition: all 0.3s ease; } .footer-links li:hover { color: white; transform: translateX(5px); } .footer-bottom { text-align: center; padding-top: 30px; border-top: 1px solid rgba(255, 255, 255, 0.1); color: #aaa; font-size: 14px; } @media (max-width: 1024px) { .article-grid { grid-template-columns: repeat(2, 1fr); } .footer-content { grid-template-columns: 1fr 1fr; } } @media (max-width: 768px) { .hero { flex-direction: column; text-align: center; } .hero h1::after { left: 50%; transform: translateX(-50%); } .hero p { margin: 0 auto 30px; } .hero-buttons { justify-content: center; } .hero-image { margin-top: 40px; justify-content: center; } .article-grid, .footer-content { grid-template-columns: 1fr; } .newsletter { padding: 30px 20px; } .newsletter-form { flex-direction: column; gap: 15px; } .newsletter-form button { position: static; width: 100%; height: auto; } } </style><script type="application/ld+json">{ "@context": "https://schema.org", "@type": "WebSite", "name": "GenshinZone", "url": "https://www.genshinzone.cc", "publisher": { "@type": "Organization", "@id": "https://www.genshinzone.cc/#website", "name": "GenshinZone", "url": "https://www.genshinzone.cc", "description": "GenshinZone is a dedicated Genshin Impact blog platform, providing the latest guides, character builds, weapon recommendations, in-depth exploration, and version previews. Your one-stop destination for all Genshin Impact news and strategies!", "foundingDate": "2023", "logo": { "@type": "ImageObject", "url": "https://www.genshinzone.cc/game_logo.png", "caption": "GenshinZone Logo" } }}</script></head><body><header><div class="container"><div class="navbar"><a class="logo" href="/"><img alt="GenshinZone" src="/game_logo.png"/> GenshinZone </a><nav><ul id="navbar-links"><!-- Dynamic content will be injected here --></ul></nav></div><div class="hero"><div class="hero-content"><h1>Your Guide to the World of Genshin Impact</h1><p>Explore the latest strategies, character builds, and updates for Genshin Impact. Join our community of travelers and enhance your adventure through the seven nations.</p><div class="hero-buttons"><button id="start-exploring-btn">Start Exploring</button></div></div><div class="hero-image"><img alt="Genshin Impact Hero Image" src="/images/common/998edd80df4d148b84ae984f351f1360.jpg"/></div></div></div></header><main><div class="container"><!-- Section 1: Featured Contents --><section class="content-section" id="featured-contents-section"><div class="section-title"><h2>Featured Contents</h2><p>Catch up with our most popular guides and news about the game's ever-expanding universe</p></div><div class="article-grid" id="latest_all-grid"><!-- JS will populate this --></div></section><!-- Section 2: Latest News --><section class="content-section" id="latest-news-section"><div class="section-title"><h2>Latest News</h2><p>Stay current with the newest content and changes coming to the game</p></div><div class="article-grid" id="latest_news-grid"><!-- JS will populate this --></div></section><!-- Section 3: Popular Guides --><section class="content-section" id="popular-guides-section"><div class="section-title"><h2>Popular Guides</h2><p>Explore key characters and strategies that define the gaming experience</p></div><div class="article-grid" id="latest_guides-grid"><!-- JS will populate this --></div></section><!-- Section 4: Hot Articles --><section class="content-section" id="hot-articles-section"><div class="section-title"><h2>Hot Articles</h2><p>Discover trending topics and in-depth analysis from our community</p></div><div class="article-grid" id="latest_articles-grid"><!-- JS will populate this --></div></section><!-- Section 5: Popular Tags --><section class="popular-tags-section"><div class="section-title"><h2>Popular Tags</h2><p>Find content by browsing the most popular tags in our community</p></div><div class="popular-tags" id="popular-tags-container"><!-- JS will populate this --></div></section><section class="newsletter"><h2>Subscribe To Our Newsletter</h2><p>Stay up to date with the latest news, guides, and exclusive content. Join our community and never miss an update!</p><form class="newsletter-form"><input placeholder="Enter your email address" type="email"/><button type="submit">Subscribe</button></form></section></div></main><footer><div class="container"><div class="footer-content" id="footer-content-container"><!-- Dynamic content will be injected here --></div><div class="footer-bottom"><p id="copyright-text"></p></div></div></footer><script> document.addEventListener('DOMContentLoaded', () => { const dataUrl = '/data/index.json'; // --- UTILITY FUNCTIONS --- const fetchData = async () => { try { const response = await fetch(dataUrl); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } return await response.json(); } catch (error) { console.error("Could not fetch data:", error); return null; } }; const showToast = (message) => { let toast = document.getElementById('subscribe-toast'); if (!toast) { toast = document.createElement('div'); toast.id = 'subscribe-toast'; document.body.appendChild(toast); } toast.textContent = message; toast.classList.add('show'); setTimeout(() => { toast.classList.remove('show'); }, 3000); }; // --- POPULATION FUNCTIONS --- const populateNavigation = (navItems) => { const navList = document.getElementById('navbar-links'); if (!navList || !navItems) return; navList.innerHTML = ''; const currentPage = window.location.pathname; navItems.forEach(item => { const li = document.createElement('li'); const a = document.createElement('a'); a.textContent = item.label.charAt(0).toUpperCase() + item.label.slice(1).toLowerCase(); a.href = item.link; if (item.link === currentPage || (item.link === '/' && (currentPage === '/index.html' || currentPage === '/'))) { a.classList.add('active'); } li.appendChild(a); navList.appendChild(li); }); }; const populateArticles = (key, articles) => { const grid = document.getElementById(`${key}-grid`); if (!grid || !articles) return; grid.innerHTML = ''; articles.slice(0, 3).forEach(article => { // Displaying 3 per section for a clean look const articleCard = ` <article class="article-card"> <a href="${article.link}" class="article-image-link"> <div class="article-image"> <img src="${article.image}" alt="${article.title}"> </div> </a> <span class="article-category">${article.category.replace(/_/g, ' ')}</span> <div class="article-content"> <div class="article-meta"> <span><i>👤</i> By ${article.author}</span> <span><i>🕒</i> ${new Date(article.date).toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' })}</span> </div> <h3><a href="${article.link}">${article.title}</a></h3> <p>${article.excerpt}</p> <a href="${article.link}" class="read-more">Read More <i>→</i></a> </div> </article> `; grid.innerHTML += articleCard; }); }; const populateTags = (tags) => { const container = document.getElementById('popular-tags-container'); if (!container || !tags) return; container.innerHTML = ''; tags.forEach(tag => { const a = document.createElement('a'); a.href = tag.link; a.className = 'tag'; a.textContent = `#${tag.name}`; container.appendChild(a); }); }; const populateFooter = (footerColumns, copyright) => { const container = document.getElementById('footer-content-container'); const copyrightEl = document.getElementById('copyright-text'); if (container && footerColumns) { container.innerHTML = ''; const aboutDiv = document.createElement('div'); aboutDiv.innerHTML = ` <h4 class="footer-heading">About US</h4> <ul class="footer-links"> ${footerColumns[0].contents.map(item => `<li>${item}</li>`).join('')} </ul>`; container.appendChild(aboutDiv); footerColumns.slice(1).forEach(column => { const div = document.createElement('div'); let contentHtml = `<h4 class="footer-heading">${column.title}</h4>`; if (column.contents && column.contents.length > 0) { contentHtml += `<ul class="footer-links">`; column.contents.forEach(item => { contentHtml += `<li>${item}</li>`; }); contentHtml += `</ul>`; } div.innerHTML = contentHtml; container.appendChild(div); }); } if (copyrightEl && copyright) { copyrightEl.textContent = copyright; } }; // --- EVENT LISTENERS & UI ENHANCEMENTS --- const addEventListeners = () => { // Start Exploring Button const startExploringBtn = document.getElementById('start-exploring-btn'); if (startExploringBtn) { startExploringBtn.addEventListener('click', (e) => { e.preventDefault(); const firstSection = document.querySelector('.content-section'); if (firstSection) { firstSection.scrollIntoView({ behavior: 'smooth' }); } }); } // Newsletter Form const newsletterForm = document.querySelector('.newsletter-form'); if (newsletterForm) { newsletterForm.addEventListener('submit', (e) => { e.preventDefault(); const emailInput = newsletterForm.querySelector('input[type="email"]'); if (!emailInput.value || !emailInput.value.includes('@') || !emailInput.value.includes('.')) { showToast('Please enter a valid email address.'); return; } showToast('Subscribe successful'); newsletterForm.reset(); }); } // Article hover animations document.addEventListener('mouseover', event => { const card = event.target.closest('.article-card'); if (card) { const category = card.querySelector('.article-category'); if (category) { category.style.transform = 'translateY(-5px)'; category.style.boxShadow = '0 5px 15px rgba(249, 198, 57, 0.6)'; } } }); document.addEventListener('mouseout', event => { const card = event.target.closest('.article-card'); if (card) { const category = card.querySelector('.article-category'); if (category) { category.style.transform = 'translateY(0)'; category.style.boxShadow = '0 3px 10px rgba(249, 198, 57, 0.4)'; } } }); // Sticky header on scroll const navbar = document.querySelector('.navbar'); const header = document.querySelector('header'); if (navbar && header) { const headerHeight = header.offsetHeight; window.addEventListener('scroll', () => { if (window.scrollY > headerHeight) { navbar.style.position = 'fixed'; navbar.style.top = '0'; navbar.style.left = '0'; navbar.style.right = '0'; navbar.style.backgroundColor = 'rgba(44, 62, 80, 0.95)'; navbar.style.padding = '10px 20px'; navbar.style.zIndex = '1000'; navbar.style.boxShadow = '0 5px 15px rgba(0, 0, 0, 0.1)'; navbar.style.transition = 'all 0.3s ease'; // Add padding to body to prevent content from jumping if (document.body.style.paddingTop !== navbar.offsetHeight + 'px') { document.body.style.paddingTop = navbar.offsetHeight + 'px'; } } else { navbar.style.position = 'relative'; // Changed from static navbar.style.backgroundColor = 'transparent'; navbar.style.padding = '0'; navbar.style.boxShadow = 'none'; document.body.style.paddingTop = '0'; } }); } }; // --- INITIALIZATION --- const init = async () => { const data = await fetchData(); if (data) { populateNavigation(data.navigation); populateArticles('latest_all', data.latest_all); populateArticles('latest_news', data.latest_news); populateArticles('latest_guides', data.latest_guides); populateArticles('latest_articles', data.latest_articles); populateTags(data.tag); populateFooter(data.footer, data.copyright); } addEventListeners(); // Hero load animation const heroContent = document.querySelector('.hero-content'); const heroImage = document.querySelector('.hero-image'); if (heroContent && heroImage) { heroContent.style.opacity = '0'; heroImage.style.opacity = '0'; heroContent.style.transform = 'translateY(50px)'; heroImage.style.transform = 'perspective(1000px) rotateY(-10deg) translateX(50px)'; setTimeout(() => { heroContent.style.transition = 'all 1s ease'; heroContent.style.opacity = '1'; heroContent.style.transform = 'translateY(0)'; }, 300); setTimeout(() => { heroImage.style.transition = 'all 1s ease'; heroImage.style.opacity = '1'; heroImage.style.transform = 'perspective(1000px) rotateY(-10deg) translateX(0)'; }, 600); } }; init(); }); </script></body></html>