Dostosowywanie typografii do preferencji użytkownika za pomocą CSS

Metoda dostosowywania czcionki do haseł użytkowników aby mogli wygodnie czytać Twoje treści.

Wciąganie użytkownika w proces projektowania jest dla nich bardzo ekscytujące, dla projektantów i programistów. Użytkownicy mogą łatwo przejść do Twoich usług podczas oglądania treści, a ich preferencje są ściśle wkomponowane w projekt.

W tym poście na blogu omawiamy wykorzystywanie zapytań o media CSS ze zmiennymi czcionkami do dostosowywania czytanie jeszcze bardziej. Możliwość dostosowania stopnia i grubości czcionki z font-variation-settings, co umożliwia mikrodostrajanie przy różnych preferencjach i kontekstów, np. preferencji dotyczących trybu ciemnego lub wysokiego kontrastu. Możemy podjąć te preferencje i dostosować zmienną czcionkę do wygody użytkownika.

  • W trybie ciemnym gradacja kolorów jest nieco mniejsza.
  • Duży kontrast powoduje pogrubienie czcionki.
  • Niski kontrast powoduje, że czcionka jest cieńsza.
.
https://codepen.io/argyleink/pen/mdQrqvj
.

Zapoznaj się z instrukcjami, aby zrozumieć poszczególne elementy kodu CSS i czcionki zmiennych, które umożliwiają włączenie ten ważny moment.

Konfiguruję

Aby pomóc nam skupić się na wartościach ustawień CSS i odmian czcionki, można przeczytać i zobaczyć, za pomocą których można wyświetlić podgląd pracy:

<h1>Variable font weight based on contrast preference</h1>

<p>
  Lorem ipsum dolor sit amet consectetur adipisicing elit.
  Officia, quod? Quidem, nemo aliquam, magnam rerum distinctio
  itaque nisi nam, cupiditate dolorum ad sint. Soluta nemo
  labore aliquid ex, dicta corporis.
</p>

Nawet jeśli nie dodasz kodu CSS, rozmiar czcionki będzie dostosowywać się do preferencji użytkownika. Oto film z innej prezentacji, który pokazuje, jak ustawienie wartości font-size w pikselach ściśniaj dowolne preferencje użytkownika i dlaczego warto ustawić rozmiar czcionki w rem:

Na koniec, aby wyśrodkować i wesprzeć prezentację, dodajmy kilka stylów CSS:

@layer demo.support {
  body {
    display: grid;
    place-content: center;
    padding: var(--size-5);
    gap: var(--size-5);
  }

  h1 {
    text-wrap: balance;
  }
}

O
zrzut ekranu z dotychczasową wersją demonstracyjną (zarówno z ciemnym, jak i jasnym motywem).

Ta konfiguracja demonstracyjna pozwoli Ci rozpocząć testowanie i wdrożenie tego przejrzystego interfejsu typograficznego funkcji.

Wczytywanie czcionki zmiennej Roboto Flex

Strategia adaptacyjna wymaga czcionki zmiennej z istotnymi osiami dla W tym celu potrzebujesz: GRAD i wght. Docelowy użytkownik adaptacyjny preferencjami w tym artykule dotyczą schematu kolorów i kontrastu. Oba te czynniki dostosuje te osie do preferencji użytkownika.

Wczytaj czcionkę zmiennej za pomocą interfejsu API @font-face CSS:

@font-face {
  font-family: "Roboto Flex";
  src: url('https://assets.codepen.io/2585/RobotoFlex') format('truetype');
}

Następnie zastosuj czcionkę do wybranych treści. Następująca usługa porównywania cen stosuje ją do: wszystko:

@layer demo.support {
  body {
    font-family: Roboto Flex;
  }
}

O
zrzut ekranu z wersją demonstracyjną, z czcionką w Roboto Flex
ciemne i jasne motywy.

Niestandardowe właściwości CSS i zapytania o multimedia zapewniające wygraną

Po załadowaniu czcionki możesz przesłać zapytanie o preferencje użytkownika i dostosować zmienną ustawienia czcionki.

Ustawienia w przypadku braku ustawień (domyślne)

Poniższe style początkowe będą stylami domyślnymi lub innym sposobem wyglądu a także style dla użytkowników bez żadnych preferencji.

@layer demo {
  body {
    --base-weight: 400;
    --base-grade: 0;

    font-variation-settings:
      "wght" var(--base-weight),
      "GRAD" var(--base-grade)
    ;
  }
}

Ustawienia, gdy preferowany jest wysoki kontrast

Dla użytkowników, którzy preferują wysoki kontrast w swoim systemie zwiększ wartość --base-weight z 400 do 700:

@layer demo {
  @media (prefers-contrast: more) {
    body {
      --base-weight: 700;
    }
  }
}

Zyskaj większy kontrast podczas czytania.

Ustawienia, gdy preferowany jest niski kontrast

Użytkownicy, którzy wyrazili zgodę na niski kontrast w swoim systemie zmniejsz wartość --base-weight z 400 do 200:

@layer demo {
  @media (prefers-contrast: less) {
    body {
      --base-weight: 200;
    }
  }
}

Teraz podczas czytania można zmniejszyć kontrast.

Ustawienia, gdy preferowany jest tryb ciemny

@layer demo {
  @media (prefers-color-scheme: dark) {
    body {
      --base-grade: -25;
    }
  }
}

Teraz różnice dostrzegalne między światłem na ciemnym i ciemnym świetle pod uwagę.

Wszystko w jednym miejscu

@layer demo {
  body {
    --base-weight: 400;
    --base-grade: 0;

    font-variation-settings:
      "wght" var(--base-weight),
      "GRAD" var(--base-grade)
    ;
  }

  @media (prefers-contrast: more) {
    body {
      --base-weight: 700;
    }
  }

  @media (prefers-contrast: less) {
    body {
      --base-weight: 200;
    }
  }

  @media (prefers-color-scheme: dark) {
    body {
      --base-grade: -25;
    }
  }
}

Albo dla zabawy, korzystając z zagnieżdżania CSS:

@layer demo {
  body {
    --base-weight: 400;
    --base-grade: 0;

    font-variation-settings:
      "wght" var(--base-weight),
      "GRAD" var(--base-grade)
    ;

    @media (prefers-contrast: more)     { --base-weight: 700 }
    @media (prefers-contrast: less)     { --base-weight: 200 }
    @media (prefers-color-scheme: dark) { --base-grade: -25 }
  }
}

W ten sposób powstaje funkcja czytania, która dopasowuje czcionkę do użytkownika. ustawieniach. Pełny kod źródłowy jest dostępny poniżej w Codepen.