Suomi

Tutustu CSS-mediakyselyiden ja mukautettujen ominaisuuksien tehokkuuteen luodessasi automaattisia vaaleita ja tummia teemoja, jotka mukautuvat käyttäjän mieltymyksiin ja parantavat saavutettavuutta.

CSS:n light-dark-funktio: Automaattinen teeman sovitus globaalille yleisölle

Nykypäivän globaalisti yhdistyneessä maailmassa verkkosivustojen on oltava saavutettavia ja visuaalisesti miellyttäviä käyttäjille, joilla on erilaiset taustat ja mieltymykset. Yksi tehokkaimmista tavoista saavuttaa tämä on automaattinen teeman mukauttaminen, erityisesti tarjoamalla sekä vaaleita että tummia teemoja, jotka mukautuvat käyttäjän järjestelmäasetusten mukaan. Tämä blogikirjoitus opastaa sinua tämän toiminnallisuuden toteuttamisessa CSS-mediakyselyiden ja mukautettujen ominaisuuksien avulla, varmistaen saumattoman ja mukavan selauskokemuksen kansainväliselle yleisöllesi.

Miksi toteuttaa automaattiset vaaleat ja tummat teemat?

On useita painavia syitä sisällyttää automaattinen teeman mukauttaminen verkkoprojekteihisi:

Kuinka toteuttaa automaattinen teeman mukauttaminen CSS:llä

Automaattisen teeman mukauttamisen ydin on prefers-color-scheme-mediakysely. Tämän CSS-mediakyselyn avulla voit tunnistaa käyttäjän suosiman värimaailman (vaalea tai tumma) ja soveltaa vastaavia tyylejä.

Vaihe 1: Määritä mukautetut ominaisuudet (CSS-muuttujat)

Aloita määrittämällä mukautetut ominaisuudet (CSS-muuttujat) tallentaaksesi vaalean ja tumman teemasi väriarvot. Tämä helpottaa teemojen välillä vaihtamista päivittämällä vain muuttujien arvot.


:root {
  --background-color: #ffffff; /* Vaalean teeman tausta */
  --text-color: #000000; /* Vaalean teeman teksti */
  --link-color: #007bff; /* Vaalean teeman linkki */
  --button-background-color: #f0f0f0;
  --button-text-color: #000;
}

@media (prefers-color-scheme: dark) {
  :root {
    --background-color: #121212; /* Tumman teeman tausta */
    --text-color: #ffffff; /* Tumman teeman teksti */
    --link-color: #66b3ff; /* Tumman teeman linkki */
    --button-background-color: #333;
    --button-text-color: #fff;
  }
}

Tässä esimerkissä määritämme muuttujat taustavärille, tekstin värille, linkin värille ja painikkeiden väreille. :root-valitsin soveltaa näitä muuttujia koko dokumenttiin. @media (prefers-color-scheme: dark)-mediakysely korvaa sitten nämä muuttujat tumman teeman arvoilla, kun käyttäjä on asettanut järjestelmänsä tummaan tilaan.

Vaihe 2: Sovella mukautettuja ominaisuuksia tyyleihisi

Seuraavaksi sovella näitä mukautettuja ominaisuuksia CSS-tyyleihisi hallitaksesi verkkosivustosi elementtien ulkoasua.


body {
  background-color: var(--background-color);
  color: var(--text-color);
  transition: background-color 0.3s, color 0.3s; /* Sulava siirtymä */
}

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

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

Tässä käytämme var()-funktiota päästäksemme käsiksi mukautettujen ominaisuuksiemme arvoihin. Olemme myös lisänneet transition-ominaisuuden body-elementtiin luodaksemme sulavan siirtymän teemojen välillä.

Vaihe 3: Testaus ja hienosäätö

Testaa toteutuksesi perusteellisesti eri selaimilla ja käyttöjärjestelmillä. Nykyaikaiset selaimet, kuten Chrome, Firefox, Safari ja Edge, tukevat täysin prefers-color-scheme-mediakyselyä. Voit vaihtaa vaalean ja tumman tilan välillä käyttöjärjestelmäsi asetuksista nähdäksesi muutokset verkkosivustollasi.

Edistyneet tekniikat ja huomioitavat seikat

Manuaalisen teemanvaihtajan tarjoaminen

Vaikka automaattinen teeman mukauttaminen on hyvä lähtökohta, jotkut käyttäjät saattavat haluta manuaalisesti ohittaa järjestelmäasetuksensa. Voit tarjota manuaalisen teemanvaihtajan käyttämällä JavaScriptiä ja paikallista tallennustilaa (local storage).

HTML:



JavaScript:


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

let currentTheme = localStorage.getItem('theme') || 'auto'; // Oletusarvo on automaattinen

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;
}

// Aseta alkuteema sivun latautuessa
if (currentTheme === 'dark') {
  setTheme('dark');
} else if (currentTheme === 'light') {
  setTheme('light');
} else {
  //Jos asetettu automaattiseksi, anna prefers-color-schemen päättää
}


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

CSS: Lisää seuraava CSS aiemman CSS:n lisäksi. Huomaa manuaalinen ohitus:


body.light-theme {
  --background-color: #ffffff; /* Vaalean teeman tausta */
  --text-color: #000000; /* Vaalean teeman teksti */
  --link-color: #007bff; /* Vaalean teeman linkki */
  --button-background-color: #f0f0f0;
  --button-text-color: #000;
}

body.dark-theme {
  --background-color: #121212; /* Tumman teeman tausta */
  --text-color: #ffffff; /* Tumman teeman teksti */
  --link-color: #66b3ff; /* Tumman teeman linkki */
  --button-background-color: #333;
  --button-text-color: #fff;
}

Tämä koodinpätkä lisää painikkeen, jonka avulla käyttäjät voivat vaihtaa vaalean, tumman ja automaattisen teeman välillä. Valittu teema tallennetaan paikalliseen tallennustilaan, jotta se säilyy sivulatausten välillä.

Kuvien ja SVG-tiedostojen käsittely

Jotkin kuvat ja SVG-tiedostot eivät välttämättä näytä hyvältä sekä vaaleassa että tummassa teemassa. Voit käyttää CSS-mediakyselyitä näyttääksesi ehdollisesti eri versioita näistä resursseista.


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;
  }
}

Tämä koodinpätkä näyttää yhden kuvan (luokalla light-mode) vaaleassa tilassa ja eri kuvan (luokalla dark-mode) tummassa tilassa.

Väripalettia koskevia huomioita kansainväliselle yleisölle

Kun valitset väripaletteja vaalealle ja tummalle teemallesi, ota huomioon kulttuuriset assosiaatiot ja saavutettavuusnäkökohdat. Tässä on joitakin yleisiä ohjeita:

Suorituskykyyn liittyviä huomioita

Vaikka automaattisen teeman mukauttamisen toteuttaminen on suhteellisen yksinkertaista, on tärkeää ottaa huomioon sen mahdollinen vaikutus suorituskykyyn. Vältä liian monimutkaisten CSS-valitsimien tai animaatioiden käyttöä, jotka voivat hidastaa renderöintiä. Varmista myös, että mukautetut ominaisuutesi on määritelty tehokkaasti muuttujien hakujen aiheuttaman kuormituksen minimoimiseksi.

Tässä on joitakin parhaita käytäntöjä suorituskyvyn optimoimiseksi:

Saavutettavuuden parhaat käytännöt

Varmista, että vaaleat ja tummat teemasi täyttävät saavutettavuusohjeet, kuten WCAG (Web Content Accessibility Guidelines). Tämä sisältää riittävän värikontrastin tarjoamisen, semanttisen HTML:n käytön ja sen varmistamisen, että kaikki interaktiiviset elementit ovat käytettävissä näppäimistöllä.

Tässä on joitakin erityisiä saavutettavuuden parhaita käytäntöjä, joita noudattaa:

Esimerkkejä eri alueilta

Harkitse näitä esimerkkejä siitä, kuinka vaaleita ja tummia teemoja voidaan räätälöidä monipuoliselle globaalille yleisölle:

Yhteenveto

Automaattisten vaaleiden ja tummien teemojen toteuttaminen on tärkeä askel kohti saavutettavamman ja käyttäjäystävällisemmän verkkokokemuksen luomista globaalille yleisölle. Hyödyntämällä CSS-mediakyselyitä ja mukautettuja ominaisuuksia voit helposti mukauttaa verkkosivustosi ulkoasua vastaamaan käyttäjien mieltymyksiä, vähentää silmien rasitusta ja parantaa saavutettavuutta näkövammaisille käyttäjille. Muista ottaa huomioon kulttuuriset assosiaatiot, saavutettavuusohjeet ja suorituskykyyn liittyvät seikat varmistaaksesi saumattoman ja osallistavan selauskokemuksen kaikille.

Omaksumalla nämä tekniikat osoitat sitoutumisesi nykyaikaisiin web-suunnittelun periaatteisiin ja vastaat kansainvälisen yleisösi moninaisiin tarpeisiin, tehden verkkosivustostasi kutsuvan ja mukavan tilan kaikille.