Italiano

Esplora la potenza delle media query CSS e delle proprietà personalizzate per creare temi chiari e scuri automatici che si adattano alle preferenze dell'utente, migliorando l'accessibilità e l'aspetto visivo per un pubblico globale.

Funzione CSS Light-Dark: Adattamento Automatico del Tema per un Web Globale

Nel mondo globalmente connesso di oggi, i siti web devono essere accessibili e visivamente attraenti per utenti con background e preferenze diverse. Uno dei modi più efficaci per raggiungere questo obiettivo è attraverso l'adattamento automatico del tema, offrendo specificamente sia un tema chiaro che uno scuro che si regolano in base alle impostazioni di sistema dell'utente. Questo post del blog ti guiderà nell'implementazione di questa funzionalità utilizzando le media query CSS e le proprietà personalizzate, garantendo un'esperienza di navigazione fluida e confortevole per il tuo pubblico internazionale.

Perché Implementare Temi Chiari e Scuri Automatici?

Ci sono diverse ragioni convincenti per incorporare l'adattamento automatico del tema nei tuoi progetti web:

Come Implementare l'Adattamento Automatico del Tema con i CSS

Il nucleo dell'adattamento automatico del tema risiede nella media query prefers-color-scheme. Questa media query CSS ti permette di rilevare lo schema di colori preferito dall'utente (chiaro o scuro) e di applicare gli stili corrispondenti.

Passo 1: Definire le Proprietà Personalizzate (Variabili CSS)

Inizia definendo le proprietà personalizzate (variabili CSS) per memorizzare i valori dei colori per i tuoi temi chiari e scuri. Questo rende facile passare da un tema all'altro semplicemente aggiornando i valori delle variabili.


:root {
  --background-color: #ffffff; /* Sfondo tema chiaro */
  --text-color: #000000; /* Testo tema chiaro */
  --link-color: #007bff; /* Link tema chiaro */
  --button-background-color: #f0f0f0;
  --button-text-color: #000;
}

@media (prefers-color-scheme: dark) {
  :root {
    --background-color: #121212; /* Sfondo tema scuro */
    --text-color: #ffffff; /* Testo tema scuro */
    --link-color: #66b3ff; /* Link tema scuro */
    --button-background-color: #333;
    --button-text-color: #fff;
  }
}

In questo esempio, definiamo variabili per il colore di sfondo, il colore del testo, il colore dei link e i colori dei pulsanti. Il selettore :root applica queste variabili all'intero documento. La media query @media (prefers-color-scheme: dark) sovrascrive quindi queste variabili con i valori del tema scuro quando l'utente ha impostato il proprio sistema in modalità scura.

Passo 2: Applicare le Proprietà Personalizzate ai Tuoi Stili

Successivamente, applica queste proprietà personalizzate ai tuoi stili CSS per controllare l'aspetto degli elementi del tuo sito web.


body {
  background-color: var(--background-color);
  color: var(--text-color);
  transition: background-color 0.3s, color 0.3s; /* Transizione fluida */
}

a {
  color: var(--link-color);
}

button {
  background-color: var(--button-background-color);
  color: var(--button-text-color);
  border: none;
  padding: 10px 20px;
  cursor: pointer;
}

Qui, stiamo usando la funzione var() per accedere ai valori delle nostre proprietà personalizzate. Abbiamo anche aggiunto una proprietà transition all'elemento body per creare una transizione fluida tra i temi.

Passo 3: Test e Perfezionamento

Testa approfonditamente la tua implementazione su diversi browser e sistemi operativi. I browser moderni come Chrome, Firefox, Safari ed Edge supportano pienamente la media query prefers-color-scheme. Puoi passare dalla modalità chiara a quella scura nelle impostazioni del tuo sistema operativo per vedere le modifiche riflesse nel tuo sito web.

Tecniche Avanzate e Considerazioni

Fornire un Selettore di Tema Manuale

Sebbene l'adattamento automatico del tema sia un ottimo punto di partenza, alcuni utenti potrebbero preferire di sovrascrivere manualmente le impostazioni di sistema. Puoi fornire un selettore di tema manuale usando JavaScript e il local storage.

HTML:



JavaScript:


const themeToggle = document.getElementById('theme-toggle');
const body = document.body;

let currentTheme = localStorage.getItem('theme') || 'auto'; // Predefinito su auto

function setTheme(theme) {
  if (theme === 'dark') {
    body.classList.add('dark-theme');
    body.classList.remove('light-theme');
  } else if (theme === 'light') {
    body.classList.add('light-theme');
    body.classList.remove('dark-theme');
  } else {
    body.classList.remove('light-theme', 'dark-theme');
  }
  localStorage.setItem('theme', theme);
  currentTheme = theme;
}

// Applica il tema iniziale al caricamento della pagina
if (currentTheme === 'dark') {
  setTheme('dark');
} else if (currentTheme === 'light') {
  setTheme('light');
} else {
  //Se impostato su auto, lascia che prefers-color-scheme decida
}


themeToggle.addEventListener('click', () => {
    if (currentTheme === 'auto'){
        setTheme('light');
    } else if (currentTheme === 'light') {
        setTheme('dark');
    } else {
        setTheme('auto');
    }
});

CSS: Aggiungi il seguente CSS insieme al CSS precedente. Nota l'override manuale:


body.light-theme {
  --background-color: #ffffff; /* Sfondo tema chiaro */
  --text-color: #000000; /* Testo tema chiaro */
  --link-color: #007bff; /* Link tema chiaro */
  --button-background-color: #f0f0f0;
  --button-text-color: #000;
}

body.dark-theme {
  --background-color: #121212; /* Sfondo tema scuro */
  --text-color: #ffffff; /* Testo tema scuro */
  --link-color: #66b3ff; /* Link tema scuro */
  --button-background-color: #333;
  --button-text-color: #fff;
}

Questo frammento di codice aggiunge un pulsante che consente agli utenti di alternare tra temi chiari, scuri e automatici. Il tema selezionato viene memorizzato nel local storage in modo che persista tra i caricamenti della pagina.

Gestione di Immagini e SVG

Alcune immagini e SVG potrebbero non avere un bell'aspetto sia in tema chiaro che scuro. Puoi usare le media query CSS per visualizzare condizionatamente versioni diverse di questi asset.


img.light-mode {
  display: block;
}

img.dark-mode {
  display: none;
}

@media (prefers-color-scheme: dark) {
  img.light-mode {
    display: none;
  }

  img.dark-mode {
    display: block;
  }
}

Questo frammento di codice mostra un'immagine (con la classe light-mode) in modalità chiara e un'immagine diversa (con la classe dark-mode) in modalità scura.

Considerazioni sulla Palette di Colori per il Pubblico Internazionale

Quando si scelgono le palette di colori per i temi chiari e scuri, bisogna essere consapevoli delle associazioni culturali e delle considerazioni sull'accessibilità. Ecco alcune linee guida generali:

Considerazioni sulle Prestazioni

Sebbene l'implementazione dell'adattamento automatico del tema sia relativamente semplice, è importante considerare il potenziale impatto sulle prestazioni. Evita di utilizzare selettori CSS o animazioni eccessivamente complessi che possono rallentare il rendering. Inoltre, assicurati che le tue proprietà personalizzate siano definite in modo efficiente per minimizzare il sovraccarico delle ricerche di variabili.

Ecco alcune best practice per ottimizzare le prestazioni:

Best Practice per l'Accessibilità

Assicurati che i tuoi temi chiari e scuri soddisfino le linee guida sull'accessibilità, come le WCAG (Web Content Accessibility Guidelines). Ciò include fornire un contrasto di colore sufficiente, utilizzare HTML semantico e garantire che tutti gli elementi interattivi siano accessibili da tastiera.

Ecco alcune best practice specifiche per l'accessibilità da seguire:

Esempi in Diverse Regioni

Considera questi esempi di come i temi chiari e scuri possono essere adattati per un pubblico globale diversificato:

Conclusione

Implementare temi chiari e scuri automatici è un passo cruciale verso la creazione di un'esperienza web più accessibile e user-friendly per un pubblico globale. Sfruttando le media query CSS e le proprietà personalizzate, puoi facilmente adattare l'aspetto del tuo sito web per corrispondere alle preferenze dell'utente, ridurre l'affaticamento degli occhi e migliorare l'accessibilità per gli utenti con disabilità visive. Ricorda di considerare le associazioni culturali, le linee guida sull'accessibilità e le considerazioni sulle prestazioni per garantire un'esperienza di navigazione fluida e inclusiva per tutti.

Adottando queste tecniche, dimostri un impegno verso i principi del web design moderno e soddisfi le diverse esigenze del tuo pubblico internazionale, rendendo il tuo sito web uno spazio accogliente e confortevole per tutti.