Contatta l'assistenza

Rispondiamo per e-mail, di solito entro due giorni.

Per prevenire abusi, Google reCAPTCHA verifica questo invio; alcuni dati vengono trasmessi a Google. Lo script viene caricato solo quando apri questo modulo.

← Tutti gli articoli

Un contatore che segue la pagina nel tema scuro

Un contatore è un'immagine sulla pagina di qualcun altro. Quando quella pagina ha un tema scuro, l'immagine non lo sa: è stata disegnata sul server, molto prima che la preferenza di sistema del visitatore fosse un fatto. Un distintivo bianco su una pagina scura è il risultato consueto, e sembra un buco.

Quindici dei design qui presenti se la cavano lo stesso. Senza interrogare la pagina e senza JavaScript — non ce n'è alcuno coinvolto. L'immagine commuta da sé.

Come

SVG non è un'immagine, è un documento, e un documento può portare un foglio di stile. Il server disegna quindi il design due volte, chiaro e scuro, mette entrambi in un unico file e aggiunge tre righe di CSS:

.s4uD{display:none} @media(prefers-color-scheme:dark){.s4uL{display:none}.s4uD{display:inline}}

Il browser applica quella media query dentro l'immagine, anche quando l'immagine viene caricata con un semplice tag <img> da un altro dominio. Metti il sistema su scuro e il contatore segue — senza ricaricare, senza che la pagina attorno c'entri in alcun modo.

Quanto costa

Entrambe le versioni stanno nel file, quindi il file è circa il doppio. Misurato su un design: 1.029 byte normalmente, 2.041 con il gemello scuro. Questo è il prezzo onesto e il motivo per cui non è l'impostazione predefinita: si chiede per inserimento invece di imporlo a tutti.

Non c'è una seconda richiesta né un secondo giro. Arriva un file, e la metà che non serve non viene mai dipinta.

La trappola nel mezzo

Sfumature, filtri e maschere in SVG si richiamano tramite id. Entrambe le versioni di un design nascono dallo stesso codice, quindi entrambe portano sfumature chiamate g1, g2 e così via. Mettile tutte e due in un documento e la seconda definizione di un id semplicemente non vale — la versione scura si disegna in silenzio con i colori di quella chiara.

Niente segnala un errore. Il file è valido. Ha solo un aspetto sbagliato, in un modo che è facile addossare al design invece che al montaggio.

Prima che le due metà si uniscano, ogni id della versione scura viene quindi rinominato con un prefisso, e ogni url(#...) che vi punta viene riscritto di conseguenza. È un passo piccolo e saltarlo produce un difetto che un'occhiata rapida non riesce a spiegare.

Quando si rifiuta

Se manca una delle metà, se una non produce un elemento <svg>, o se le due escono identiche byte per byte — il che significa che il design non ha una variante scura — viene restituita la versione chiara intatta. Un SVG montato a metà sarebbe peggio di nessun tema scuro, e un contatore che si disegna vale più di uno che è astuto.

Pubblicità