Téléverser les fichiers vers "Theme-Bento/assets/js"
This commit is contained in:
parent
da3214fc2e
commit
0c2da2cde1
Theme-Bento/assets/js
1
Theme-Bento/assets/js/main.js
Normal file
1
Theme-Bento/assets/js/main.js
Normal file
@ -0,0 +1 @@
|
||||
console.log('This site was generated by Hugo.');
|
64
Theme-Bento/assets/js/theme-toggle.js
Normal file
64
Theme-Bento/assets/js/theme-toggle.js
Normal file
@ -0,0 +1,64 @@
|
||||
function toggleTheme() {
|
||||
const html = document.documentElement;
|
||||
const currentTheme = html.getAttribute('data-theme');
|
||||
const newTheme = currentTheme === 'light' ? 'dark' : 'light';
|
||||
const sunIcon = document.querySelector('.sun-icon');
|
||||
const moonIcon = document.querySelector('.moon-icon');
|
||||
|
||||
html.setAttribute('data-theme', newTheme);
|
||||
localStorage.setItem('theme', newTheme);
|
||||
|
||||
// Toggle icon visibility
|
||||
if (newTheme === 'dark') {
|
||||
sunIcon.style.display = 'none';
|
||||
moonIcon.style.display = 'block';
|
||||
} else {
|
||||
sunIcon.style.display = 'block';
|
||||
moonIcon.style.display = 'none';
|
||||
}
|
||||
}
|
||||
|
||||
// Initialize theme and icon on load
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const savedTheme = localStorage.getItem('theme') || 'light';
|
||||
const sunIcon = document.querySelector('.sun-icon');
|
||||
const moonIcon = document.querySelector('.moon-icon');
|
||||
|
||||
document.documentElement.setAttribute('data-theme', savedTheme);
|
||||
|
||||
if (savedTheme === 'dark') {
|
||||
sunIcon.style.display = 'none';
|
||||
moonIcon.style.display = 'block';
|
||||
} else {
|
||||
sunIcon.style.display = 'block';
|
||||
moonIcon.style.display = 'none';
|
||||
}
|
||||
});
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const mobileMenuToggle = document.querySelector('.mobile-menu-toggle');
|
||||
const mobileMenuClose = document.querySelector('.mobile-menu-close');
|
||||
const mobileMenu = document.querySelector('.mobile-menu');
|
||||
|
||||
function closeMenu() {
|
||||
mobileMenu.classList.remove('active');
|
||||
document.body.style.overflow = '';
|
||||
}
|
||||
|
||||
function openMenu() {
|
||||
mobileMenu.classList.add('active');
|
||||
document.body.style.overflow = 'hidden';
|
||||
}
|
||||
|
||||
mobileMenuToggle.addEventListener('click', openMenu);
|
||||
mobileMenuClose.addEventListener('click', closeMenu);
|
||||
|
||||
// Fermer le menu en cliquant en dehors
|
||||
document.addEventListener('click', function(e) {
|
||||
if (mobileMenu.classList.contains('active') &&
|
||||
!mobileMenu.contains(e.target) &&
|
||||
!mobileMenuToggle.contains(e.target)) {
|
||||
closeMenu();
|
||||
}
|
||||
});
|
||||
});
|
47
Theme-Bento/assets/js/typewriter.js
Normal file
47
Theme-Bento/assets/js/typewriter.js
Normal file
@ -0,0 +1,47 @@
|
||||
class Typewriter {
|
||||
constructor(element) {
|
||||
this.element = element;
|
||||
this.words = JSON.parse(element.getAttribute('data-text'));
|
||||
this.wait = parseInt(element.getAttribute('data-wait') || 3000);
|
||||
this.currentWord = 0;
|
||||
this.txt = '';
|
||||
this.isDeleting = false;
|
||||
this.type();
|
||||
}
|
||||
|
||||
type() {
|
||||
const current = this.currentWord % this.words.length;
|
||||
const fullTxt = this.words[current];
|
||||
|
||||
if (this.isDeleting) {
|
||||
this.txt = fullTxt.substring(0, this.txt.length - 1);
|
||||
} else {
|
||||
this.txt = fullTxt.substring(0, this.txt.length + 1);
|
||||
}
|
||||
|
||||
this.element.innerHTML = `<span class="typewriter-text">${this.txt}</span>`;
|
||||
|
||||
let typeSpeed = 100;
|
||||
|
||||
if (this.isDeleting) {
|
||||
typeSpeed /= 2;
|
||||
}
|
||||
|
||||
if (!this.isDeleting && this.txt === fullTxt) {
|
||||
typeSpeed = this.wait;
|
||||
this.isDeleting = true;
|
||||
} else if (this.isDeleting && this.txt === '') {
|
||||
this.isDeleting = false;
|
||||
this.currentWord++;
|
||||
typeSpeed = 500;
|
||||
}
|
||||
|
||||
setTimeout(() => this.type(), typeSpeed);
|
||||
}
|
||||
}
|
||||
|
||||
// Initialisation immédiate
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const elements = document.querySelectorAll('.typewriter');
|
||||
elements.forEach(element => new Typewriter(element));
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user