Crunchyroll Logo

Alle Franchises & Serien im Überblick

const categories = [ "Chainsaw Man", "Jujutsu Kaisen", "Spy x Family", "Attack on Titan", "Blue Lock", "Demon Slayer", "Final Fantasy", "Toilet-bound Hanako-kun", "NieR: Automata", "Sword Art Online", "Detektiv Conan", "My Dress Up Darling", "Oshi No Ko", "One Piece", "Assassination Classroom", "Meine Wiedergeburt als Schleim\u2026", "Solo Leveling", "Dark Souls", "Date A Life", "Dr. Stone", "Dragon Quest", "Dragonball", "Frieren: Beyond Journey's End", "Harry Potter", "Hatsune Miku", "Hunter x Hunter", "Inuyasha", "Kingdom Hearts", "My Hero Academia", "Naruto Shippuden", "Overlord", "Re:ZERO", "Sakamoto Days", "Wind Breaker", "Call of the Night", "The Eminence in Shadow", "Kaiju No.8", "Fairy Tail", "Nanoblock", "Edens Zero", "Genshin Impact", "Black Butler", "Highschool DXD", "Jojo's Bizarre Adventure", "Tokyo Revengers", "Tamagotchi", "DanDaDan", "Undead Unluck", ]; categories.sort((a, b) => { const n = s => s.replace(/[^a-zA-Z\u00e4\u00f6\u00fc\u00c4\u00d6\u00dc\u00df]/g, '').toLowerCase(); return n(a).localeCompare(n(b), 'de'); }); const grouped = {}; categories.forEach(cat => { const key = cat[0].toUpperCase(); if (!grouped[key]) grouped[key] = []; grouped[key].push(cat); }); const letters = Object.keys(grouped).sort((a, b) => a.localeCompare(b, 'de')); // Alphabet nav const nav = document.getElementById('alphaNav'); letters.forEach(letter => { const a = document.createElement('a'); a.href = '#section-' + letter; a.textContent = letter; a.style.cssText = 'font-family:"Bebas Neue",sans-serif;font-size:18px;color:#9395a5;text-decoration:none;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;border:1px solid transparent;transition:color 0.2s,border-color 0.2s,background 0.2s;'; a.addEventListener('mouseover', () => { a.style.color = '#ff5e00'; a.style.borderColor = '#ff5e00'; a.style.background = 'rgba(255,94,0,0.07)'; }); a.addEventListener('mouseout', () => { a.style.color = '#9395a5'; a.style.borderColor = 'transparent'; a.style.background = 'transparent'; }); nav.appendChild(a); }); // Sections const main = document.getElementById('mainContent'); letters.forEach(letter => { const section = document.createElement('div'); section.id = 'section-' + letter; section.style.cssText = 'margin-top:56px;'; // Letter heading const heading = document.createElement('div'); heading.style.cssText = 'display:flex;align-items:center;gap:20px;margin-bottom:20px;'; const char = document.createElement('span'); char.textContent = letter; char.style.cssText = 'font-family:"Bebas Neue",sans-serif;font-size:64px;line-height:1;color:#ff5e00;min-width:50px;'; const line = document.createElement('span'); line.style.cssText = 'flex:1;height:1px;background:linear-gradient(to right,#ff5e00,transparent);'; heading.appendChild(char); heading.appendChild(line); section.appendChild(heading); // Grid const grid = document.createElement('div'); grid.style.cssText = 'display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;'; grouped[letter].forEach(cat => { const specialLinks = { "Frieren: Beyond Journey's End": "https://www.jb-spielwaren.de/frieren-beyond-journey-s-end/", "Jojo's Bizarre Adventure": "https://www.jb-spielwaren.de/jojo-s-bizarre-adventure/", "Kaiju No.8": "https://www.jb-spielwaren.de/kaiju-no-8/", "Re:ZERO": "https://www.jb-spielwaren.de/re-zero/", "Toilet-bound Hanako-kun": "https://www.jb-spielwaren.de/toilet-bound-hanako-kun/", }; const slug = cat .replace(/[\u00e4]/g, 'ae').replace(/[\u00f6]/g, 'oe').replace(/[\u00fc]/g, 'ue') .replace(/[\u00c4]/g, 'Ae').replace(/[\u00d6]/g, 'Oe').replace(/[\u00dc]/g, 'Ue') .replace(/'/g, '-').replace(/[^a-zA-Z0-9 ]/g, '') .trim() .replace(/ +/g, '-'); const link = document.createElement('a'); link.href = specialLinks[cat] || 'https://jb-spielwaren.de/' + slug; link.style.cssText = 'display:flex;align-items:center;gap:12px;padding:13px 18px;background:#fff;border:1px solid #e4e6ed;border-radius:8px;text-decoration:none;color:#1a1b22;font-size:14px;font-family:"Outfit",sans-serif;font-weight:400;letter-spacing:0.3px;transition:background 0.18s,border-color 0.18s,transform 0.18s,color 0.18s,box-shadow 0.18s;cursor:pointer;box-shadow:0 1px 4px rgba(0,0,0,0.07);'; const icon = document.createElement('span'); icon.textContent = '\u25b8'; icon.style.cssText = 'font-size:11px;color:#9395a5;transition:color 0.18s;flex-shrink:0;'; const text = document.createElement('span'); text.textContent = cat; link.appendChild(icon); link.appendChild(text); link.addEventListener('mouseover', () => { link.style.background = '#fff8f9'; link.style.borderColor = 'rgba(255,94,0,0.3)'; link.style.transform = 'translateX(4px)'; link.style.color = '#ff5e00'; link.style.boxShadow = '0 4px 14px rgba(255,94,0,0.1)'; icon.style.color = '#ff5e00'; }); link.addEventListener('mouseout', () => { link.style.background = '#fff'; link.style.borderColor = '#e4e6ed'; link.style.transform = 'translateX(0)'; link.style.color = '#1a1b22'; link.style.boxShadow = '0 1px 4px rgba(0,0,0,0.07)'; icon.style.color = '#9395a5'; }); grid.appendChild(link); }); section.appendChild(grid); main.appendChild(section); });