Dateien nach "Minecraft-Modern-Theme/js" hochladen

This commit is contained in:
2025-11-29 17:24:31 +00:00
parent 9e8a51a482
commit 227912ea8a
4 changed files with 151 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
document.addEventListener('DOMContentLoaded', function() {
// === FAQ TABS FUNKTIONALITÄT ===
const tabButtons = document.querySelectorAll('.faq-tab-button');
const tabPanes = document.querySelectorAll('.faq-tab-pane');
tabButtons.forEach(button => {
button.addEventListener('click', () => {
// 1. Aktive Klassen von allen Buttons und Panes entfernen
tabButtons.forEach(btn => btn.classList.remove('active'));
tabPanes.forEach(pane => pane.classList.remove('active'));
// 2. Aktive Klasse zum geklickten Button hinzufügen
button.classList.add('active');
// 3. Den zugehörigen Inhalt (Pane) finden und aktivieren
const targetCategory = button.getAttribute('data-category');
const targetPane = document.querySelector(`.faq-tab-pane[data-category="${targetCategory}"]`);
if (targetPane) {
targetPane.classList.add('active');
}
});
});
// === FAQ AKKORDEON FUNKTIONALITÄT (bleibt gleich) ===
const faqItems = document.querySelectorAll('.faq-item');
faqItems.forEach(item => {
const question = item.querySelector('.faq-question');
const answer = item.querySelector('.faq-answer');
if (question && answer) {
question.addEventListener('click', () => {
// 'active' Klasse zum aktuellen Item togglen
const isActive = item.classList.toggle('active');
// Höhe der Antwort anpassen für smooth slide
if (isActive) {
answer.style.maxHeight = answer.scrollHeight + 'px';
} else {
answer.style.maxHeight = null;
}
});
}
});
});

View File

@@ -0,0 +1,17 @@
// /js/header-scroll.js
document.addEventListener('DOMContentLoaded', function() {
// WICHTIG: Das Skript nur ausführen, wenn wir NICHT im Customizer sind.
// Diese Prüfung ist robuster und funktioniert ohne PHP.
if ( window.location.href.includes('/wp-admin/customize.php') || ( window.parent && window.parent.wp && window.parent.wp.customize ) ) {
return; // Skript hier beenden, wenn wir im Customizer sind.
}
const header = document.querySelector('.site-header');
window.addEventListener('scroll', function() {
if (window.scrollY > 50) {
header.classList.add('scrolled');
} else {
header.classList.remove('scrolled');
}
});
});

View File

@@ -0,0 +1,55 @@
document.addEventListener('DOMContentLoaded', function() {
// Hole den Slider-Container
const heroSlider = document.querySelector('.hero-slider');
// Stelle sicher, dass der Slider auf der Seite existiert, bevor du versuchst, ihn zu konfigurieren
if (!heroSlider) {
return;
}
// Konfiguration für den Slider vorbereiten
const swiperConfig = {
// Optionen für den Slider
loop: true, // Endloses Schleifen
// Autoplay
autoplay: {
delay: 5000, // 5 Sekunden pro Slide
disableOnInteraction: false, // Autoplay nicht nach Klick stoppen
},
// Wenn der Nutzer die Maus darüber bewegt, pausieren
pauseOnMouseEnter: true,
// Effekt
effect: 'fade', // Übergangseffekt: 'slide', 'fade', 'cube', etc.
fadeEffect: {
crossFade: true
}
};
// Prüfe, ob die Pfeile ausgeblendet werden sollen
if (sliderSettings.hideArrows === '1') {
heroSlider.classList.add('slider-hide-arrows');
} else {
// Navigation nur hinzufügen, wenn sie nicht ausgeblendet wird
swiperConfig.navigation = {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
};
}
// Prüfe, ob die Paginierung ausgeblendet werden soll
if (sliderSettings.hidePagination === '1') {
heroSlider.classList.add('slider-hide-pagination');
} else {
// Pagination nur hinzufügen, wenn sie nicht ausgeblendet wird
swiperConfig.pagination = {
el: '.swiper-pagination',
clickable: true, // Klick auf Punkt springt zum Slide
};
}
// Initialisiere den Slider mit der konfigurierten Optionen
new Swiper('.hero-slider', swiperConfig);
});

View File

@@ -0,0 +1,32 @@
document.addEventListener('DOMContentLoaded', function () {
const html = document.documentElement;
const toggle = document.querySelector('.theme-toggle');
const iconMoon = toggle.querySelector('.icon-moon');
const iconSun = toggle.querySelector('.icon-sun');
const defaultMode = typeof sliderSettings !== 'undefined' ? sliderSettings.defaultMode : 'dark';
const saved = localStorage.getItem('themeMode') || defaultMode;
if (saved === 'light') {
html.classList.add('light-mode');
iconMoon.style.display = 'none';
iconSun.style.display = 'block';
} else {
iconMoon.style.display = 'block';
iconSun.style.display = 'none';
}
toggle.addEventListener('click', function () {
html.classList.toggle('light-mode');
if (html.classList.contains('light-mode')) {
iconMoon.style.display = 'none';
iconSun.style.display = 'block';
localStorage.setItem('themeMode', 'light');
} else {
iconMoon.style.display = 'block';
iconSun.style.display = 'none';
localStorage.setItem('themeMode', 'dark');
}
});
});