Maison > interface Web > tutoriel CSS > le corps du texte

Comment pouvez-vous remplacer le paramètre « préfère-couleur-schéma » du système pour des sites Web spécifiques et garantir une expérience utilisateur cohérente, quelle que soit la préférence de mode sombre de leur système ?

Barbara Streisand
Libérer: 2024-10-26 08:07:30
original
916 Les gens l'ont consulté

How can you override the system's

Remplacement du paramètre CSS "prefers-color-scheme"

Afin de s'adapter à l'introduction des modes sombres dans macOS, Windows et iOS, il est indispensable de mettre en place un mode sombre pour les applications web. Les options natives de Safari, Chrome et Firefox utilisent la règle multimédia CSS « ​​@media (prefers-color-scheme: dark) » pour appliquer automatiquement les styles de mode sombre lorsque le système est défini sur le mode sombre.

Cependant, la limite de cette approche réside dans la préférence potentielle de certains utilisateurs de remplacer le mode sombre du système pour des sites Web spécifiques. De plus, Microsoft Edge ne prend actuellement pas en charge cette règle multimédia.

Solution

Pour relever ce défi, une solution complète implique les éléments suivants :

CSS

Implémentation de variables et de thèmes CSS :

<code class="css">:root {
    --font-color: #000;
    --link-color: #1C75B9;
    --link-white-color: #fff;
    --bg-color: rgb(243,243,243);
}

[data-theme="dark"] {
    --font-color: #c1bfbd;
    --link-color: #0a86da;
    --link-white-color: #c1bfbd;
    --bg-color: #333;
}</code>
Copier après la connexion

Ensuite, utilisez ces variables le cas échéant :

<code class="css">body {
    color: #000;
    color: var(--font-color);
    background: rgb(243,243,243);
    background: var(--bg-color);
}</code>
Copier après la connexion

JavaScript

Détectez le thème préféré de l'utilisateur et basculez entre les modes clair et sombre :

<code class="javascript">function detectColorScheme(){
    var theme="light";    //default to light

    // Get the theme from local storage, overriding OS settings
    if(localStorage.getItem("theme")){
        if(localStorage.getItem("theme") == "dark"){
            var theme = "dark";
        }
    } else if(!window.matchMedia) {
        // MatchMedia method not supported
        return false;
    } else if(window.matchMedia("(prefers-color-scheme: dark)").matches) {
        // OS theme setting detected as dark
        var theme = "dark";
    }

    // Set document with a `data-theme` attribute if dark theme preferred
    if (theme=="dark") {
         document.documentElement.setAttribute("data-theme", "dark");
    }
}
detectColorScheme();

function switchTheme(e) {
    if (e.target.checked) {
        localStorage.setItem('theme', 'dark');
        document.documentElement.setAttribute('data-theme', 'dark');
        toggleSwitch.checked = true;
    } else {
        localStorage.setItem('theme', 'light');
        document.documentElement.setAttribute('data-theme', 'light');
        toggleSwitch.checked = false;
    }    
}

// Toggle switch listener
const toggleSwitch = document.querySelector('#theme-switch input[type="checkbox"]');
toggleSwitch.addEventListener('change', switchTheme, false);

// Pre-check the dark-theme checkbox if dark-theme is set
if (document.documentElement.getAttribute("data-theme") == "dark"){
    toggleSwitch.checked = true;
}</code>
Copier après la connexion

HTML

Incluez une case à cocher pour basculer entre les thèmes :

<code class="html"><label id="theme-switch" class="theme-switch" for="checkbox_theme">
    <input type="checkbox" id="checkbox_theme">
</label></code>
Copier après la connexion

Cette approche utilise des variables CSS et JavaScript pour détecter automatiquement le thème préféré de l'utilisateur et l'appliquer dynamiquement. Il offre également à l'utilisateur la possibilité de remplacer le paramètre du mode sombre pour des applications Web spécifiques.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!