D'accord.. Il y a un peu de CSS impliqué ?, mais c'était beaucoup plus simple que les réponses que j'ai trouvées sur Internet.
Qu'est-ce que j'essaie d'accomplir ?
J'essaie de réaliser deux choses avec cette méthode.
Nous aurons donc un site Web qui se chargera dans le thème attendu par l'utilisateur et lui permettra ensuite de le modifier quand il le souhaite.
Étape 1 : Créer un bouton pour basculer
<img class="mode" src="./img/moon.svg">
J'utilise une image comme bouton qui a une image svg d'une lune. Vous pouvez ajouter votre bouton ou votre case à cocher qui vous convient pour basculer entre deux options.
Étape 2 : Mettez vos détails de couleur dans CSS en tant que propriétés personnalisées
:root{ color-scheme: light dark; --light-bg: ghostwhite; --light-color: darkslategray; --light-code: tomato; --dark-bg: darkslategray; --dark-color: ghostwhite; --dark-code: gold; } .light{ color-scheme: light; } .dark{ color-scheme: dark; }
D'accord... Donc, à la racine, vous voyez une propriété appelée schéma de couleurs et cela va changer la donne.
Comme vous pouvez le voir, il prend des valeurs claires ou sombres. J'ai également créé deux classes .light et .dark qui définissent la valeur du schéma de couleurs sur sombre ou clair.
Étape 3 : Ajoutez des couleurs à différentes parties de votre code
body{ background-color: light-dark(var(--light-bg), var(--dark-bg)); }
Maintenant, chaque fois qu'une propriété demande une couleur (comme l'arrière-plan, les propriétés de couleur), vous pouvez utiliser la fonction appelée light-dark().
Cette fonction prend deux valeurs, la première est utilisée lorsque le schéma de couleurs est défini sur clair et la seconde est utilisée lorsque le schéma de couleurs est défini sur sombre.
Oui... Il s'agit d'une fonction sortie en mai 2024. Elle est assez nouvelle, mais elle sera bientôt adaptée. Et il s’agit d’un support de base au moment de la rédaction de cet article. Voici la documentation pour cela
Si vous l'utilisez, le CSS détectera automatiquement la préférence de l'utilisateur du système d'exploitation et la définira sur la couleur souhaitée.
Nous avons atteint notre premier objectif, le site Web se chargera avec le mode couleur que l'utilisateur souhaitait déjà dans son système d'exploitation.
Étape 4 : Utilisez Javascript pour basculer entre les modes sombre et clair
// mode is the toggle button mode.addEventListener("click", ()=>{ // we are getting the color scheme here let theme = document.documentElement.style.colorScheme; /* when a website is first loaded it will have null as its color-scheme value*/ if(theme == null){ // this window.matchMedia() checks if the user prefers the dark theme if(window.matchMedia("(prefers-color-scheme:dark)").matches){ /* if they prefer dark, clicking on our button should turn everything to light, the color-scheme will be given a value as light */ document.documentElement.style.colorScheme = "light"; } // Or else the color-scheme will be set to dark document.documentElement.style.colorScheme = "dark"; } /* Now since our toggle button set the color scheme, we can simply change light to dark and dark to light using below code */ else{ document.documentElement.style.colorScheme = (theme == "light")? "dark": "light"; } });
Ici, document.documentElement.style.colorScheme fait en fait référence à l'élément :root de CSS.
Comme nous avons déjà réussi à ouvrir le site Web en mode préféré de l'utilisateur à l'étape précédente, ici, lorsque vous cliquez sur le bouton bascule, il effectue les tâches suivantes.
*PS : * Ceci est mon premier message et je suis encore débutant dans le développement Web. Mais lorsque j’ai recherché cette méthode, je n’ai vu aucun article à ce sujet. Si vous le savez déjà, je suis désolé de vous avoir harcelé ?. Je pensais que cet article m'aiderait à me souvenir de ce processus chaque fois que je travaille sur un nouveau projet.
Si vous travaillez pour que votre site Web fonctionne sur d'anciens navigateurs, cette méthode n'est certainement pas pour vous. Parlez-moi dans les commentaires de cet article. Merci d'avoir lu.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!