The CSS Podcast - 036: Text & Typography
Tekst jest jednym z podstawowych elementów składowych internetu.
Podczas tworzenia witryny nie musisz koniecznie stylizować tekstu. HTML ma całkiem rozsądne domyślne style.
Tekst stanowi jednak prawdopodobnie większość Twojej witryny, więc warto dodać do niego trochę stylów, aby go uatrakcyjnić. Zmieniając kilka podstawowych właściwości, możesz znacznie poprawić komfort czytania dla użytkowników.
W tym module zaczniemy od reguły @font-face
, która umożliwia importowanie niestandardowych czcionek na strony internetowe. Dzięki temu masz pewność, że używasz dokładnie takiej typografii, jakiej potrzebujesz, niezależnie od czcionek zainstalowanych przez użytkownika.
Następnie omówimy podstawowe właściwości czcionek CSS, w tym font-family
, font-style
, font-weight
i font-size
. Te podstawy przygotowują grunt pod manipulowanie tekstem pod kątem stylu i czytelności.
Omówimy też właściwości dotyczące akapitów, takie jak text-indent
i word-spacing
, a na koniec przejdziemy do zaawansowanych tematów, takich jak czcionki zmienne i pseudoelementy, które pozwalają jeszcze bardziej dopracować typografię.
W trakcie szkolenia podamy praktyczne przykłady i wskazówki, które pomogą Ci utrwalić wiedzę i nauczyć się stosować te techniki CSS.
Reguła @font-face
Reguła CSS @font-face
jest kluczowa w projektowaniu stron internetowych, ponieważ umożliwia określanie i używanie niestandardowych czcionek do wyświetlania tekstu. Zaletą @font-face
jest jego wszechstronność: umożliwia pobieranie czcionek z serwera zdalnego lub z czcionki zainstalowanej na urządzeniu użytkownika.
Składnia
@font-face {
font-family: "Trickster";
src:
local("Trickster"),
url("trickster-COLRv1.otf") format("opentype") tech(color-COLRv1),
url("trickster-outline.otf") format("opentype"),
url("trickster-outline.woff") format("woff")
}
Deskryptory
ascent-override
- Dostosowuje dane dotyczące wznoszenia, co ma wpływ na przestrzeń nad linią bazową.
descent-override
- Dostosowuje wartość descent, co wpływa na odstęp poniżej linii bazowej.
font-display
- Określa sposób wyświetlania czcionki w zależności od stanu pobierania.
font-family
- Określa nazwę czcionki do użycia we właściwościach związanych z czcionkami.
font-stretch
- Ustawia dopuszczalne skalowanie w poziomie, określone jako pojedyncza wartość lub zakres.
font-style
- Określa styl czcionki, obsługując zakresy kątów dla stylów ukośnych.
font-weight
- Określa grubość czcionki lub zakres dostępnych grubości.
font-feature-settings
- Umożliwia dostęp do funkcji czcionek OpenType.
font-variation-settings
- Umożliwia precyzyjne sterowanie ustawieniami czcionki zmiennej.
line-gap-override
- Zastępuje domyślną przerwę między wierszami czcionki.
size-adjust
- Stosuje współczynnik skalowania do konturu i danych czcionki.
src
- Określa źródło czcionki, lokalne lub zdalne. Jest to wymagane w przypadku reguły
@font-face
. Łączenieurl()
ilocal()
w ramachsrc
to powszechna strategia, która używa lokalnej czcionki, jeśli jest dostępna, a w przypadku jej braku wraca do zdalnego pliku czcionki. Przeglądarki ustalają priorytety zasobów na podstawie kolejności deklaracji, więclocal()
powinno zwykle poprzedzaćurl()
. unicode-range
- Ogranicza znaki, dla których ma być używana ta czcionka.
Opis
@font-face
uwalnia projektantów od ograniczeń czcionek „bezpiecznych dla internetu”, ponieważ umożliwia im stosowanie niestandardowej typografii. Funkcja local()
umożliwia wyszukiwanie czcionki na urządzeniu użytkownika, co zapewnia płynne działanie, które nie musi zależeć od połączenia z internetem.
Typy MIME czcionek
Format | Typ MIME |
---|---|
TrueType | font/ttf |
OpenType | font/otf |
Web Open Font Format | font/woff |
Web Open Font Format 2 | font/woff2 |
Różnica między @font-face a font-family
W usłudze porównywania cen terminy @font-face
i font-family
są często mylone, ale służą do różnych celów.
Jak już wspomnieliśmy, @font-face
to reguła służąca do definiowania niestandardowych czcionek, których chcesz używać w aplikacji internetowej. Informuje przeglądarkę, skąd pobrać czcionkę, jak ją wyświetlać podczas wczytywania (za pomocą właściwości font-display
) i który podzbiór znaków pobrać (za pomocą unicode-range
).
Z kolei font-family
to właściwość CSS używana w regule CSS do przypisywania elementowi określonej czcionki lub listy czcionek. Czcionki wymienione w sekcji
font-family
mogą być bezpiecznymi czcionkami internetowymi, czcionkami systemowymi lub czcionkami niestandardowymi zdefiniowanymi za pomocą
@font-face
.
Podsumowując, @font-face
deklaruje czcionkę i nadaje jej nazwę, a font-family
stosuje tę zadeklarowaną czcionkę do elementów HTML.
Oto przykład użycia obu tych metod:
<table>
<thead>
<tr>
<th><p><pre>
@font-face {
font-family: "CustomFont";
src: url("customfont.woff2") format("woff2");
}
body {
font-family: "CustomFont", Arial, sans-serif;
}
W tym przykładzie @font-face
definiuje „CustomFont” i informuje przeglądarkę, gdzie go szukać. Właściwość font-family
stosuje ją do elementu body, a w przypadku niedostępności czcionki „CustomFont” używa czcionki Arial.
Zmiana kroju pisma
Użyj ikony font-family
, aby zmienić krój tekstu.
Właściwość font-family
akceptuje rozdzieloną przecinkami listę ciągów znaków, które odnoszą się do konkretnych lub ogólnych rodzin czcionek. Konkretne rodziny czcionek to ciągi znaków ujęte w cudzysłów, np. „Helvetica”, „EB Garamond” lub „Times New Roman”. Ogólne rodziny czcionek to słowa kluczowe takie jak serif
, sans-serif
i monospace
(pełną listę opcji znajdziesz w MDN). Przeglądarka wyświetli pierwszy dostępny krój pisma z podanej listy.
Jeśli używasz font-family
, podaj co najmniej jedną ogólną rodzinę czcionek na wypadek, gdyby przeglądarka użytkownika nie miała preferowanych przez Ciebie czcionek. Ogólnie rzecz biorąc, zastępcza ogólna rodzina czcionek powinna być podobna do preferowanych czcionek: jeśli używasz font-family: "Helvetica"
(rodziny czcionek bezszeryfowych), zastępcza powinna być sans-serif
.
Używanie czcionek kursywnych i pochylonych
Użyj tagu font-style
, aby określić, czy tekst ma być pisany kursywą. font-style
akceptuje jedno z tych słów kluczowych: normal
, italic
i oblique
.
Pogrubianie tekstu
Użyj font-weight
, aby ustawić „grubość” tekstu. Ta właściwość akceptuje wartości słów kluczowych (normal
, bold
), względne wartości słów kluczowych (lighter
, bolder
) i wartości liczbowe (100
–900
).
Słowa kluczowe normal
i bold
są odpowiednikami wartości liczbowych 400
i 700
.
Słowa kluczowe lighter
i bolder
są obliczane względem elementu nadrzędnego. Więcej informacji o tym, jak jest określana ta wartość, znajdziesz w artykule Znaczenie względnych wag w MDN.
Zmiana rozmiaru tekstu
Użyj font-size
, aby kontrolować rozmiar elementów tekstowych. Ta właściwość akceptuje wartości długości, wartości procentowe i kilka wartości słów kluczowych.
Oprócz wartości długości i procentowych atrybut font-size
akceptuje niektóre bezwzględne wartości słów kluczowych (xx-small
, x-small
, small
, medium
, large
, x-large
, xx-large
) i kilka względnych wartości słów kluczowych (smaller
, larger
). Wartości względne są względne w stosunku do atrybutu font-size
elementu nadrzędnego.
Zmiana odstępów między wierszami
Użyj line-height
, aby określić wysokość każdego wiersza w elemencie. Ta właściwość akceptuje liczbę, długość, wartość procentową lub słowo kluczowe normal
. Zwykle zalecamy używanie liczby zamiast długości lub wartości procentowej, aby uniknąć problemów z dziedziczeniem.
Zmienianie odstępów między znakami
Użyj tagu letter-spacing
, aby kontrolować ilość miejsca w poziomie między znakami w tekście. Ta właściwość akceptuje wartości długości, takie jak em
, px
i rem
.
Pamiętaj, że podana wartość zwiększa ilość naturalnej przestrzeni między znakami. W poniższym demo spróbuj wybrać poszczególne litery, aby zobaczyć rozmiar ich obramowania i jak zmienia się on wraz z wartością letter-spacing
.
Zmienianie odstępów między słowami
Użyj word-spacing
, aby zwiększyć lub zmniejszyć długość odstępu między poszczególnymi słowami w tekście. Ta właściwość akceptuje wartości długości, takie jak em
, px
i rem
. Pamiętaj, że podana długość dotyczy dodatkowej przestrzeni poza normalnym odstępem. Oznacza to, że word-spacing: 0
jest równoważne word-spacing: normal
.
font
skrót
Możesz użyć skróconej właściwości font
, aby ustawić wiele właściwości związanych z czcionką naraz. Lista możliwych właściwości to font-family
, font-size
, font-stretch
, font-style
, font-variant
, font-weight
i line-height
.
Szczegółowe informacje o kolejności tych właściwości znajdziesz w artykule font
w MDN.
Dodawanie podkreśleń, nadkreśleń i przekreśleń do tekstu
Aby dodać wiersze do tekstu, użyj text-decoration
. Najczęściej używane są podkreślenia, ale możesz też dodać linie nad tekstem lub przez niego.
Właściwość text-decoration
jest skrótem od bardziej szczegółowych właściwości opisanych poniżej.
Usługa text-decoration-line
akceptuje słowa kluczowe underline
, overline
i line-through
. Możesz też określić wiele słów kluczowych w wielu wierszach.
Właściwość text-decoration-color
określa kolor wszystkich dekoracji z text-decoration-line
.
Właściwość text-decoration-style
akceptuje słowa kluczowe solid
, double
, dotted
, dashed
i wavy
.
Właściwość text-decoration-thickness
akceptuje wartości długości i ustawia szerokość linii wszystkich dekoracji z text-decoration-line
.
Właściwość text-decoration
jest skrótem wszystkich poprzednich właściwości.
Dodawanie wcięcia w tekście
Użyj text-indent
, aby dodać wcięcie do bloków tekstu. Ta właściwość przyjmuje wartość długości (np. 10px
, 2em
) lub procentową szerokość bloku zawierającego.
Radzenie sobie z treściami, które nie mieszczą się w widocznym obszarze lub są ukryte
Użyj text-overflow
, aby określić, jak mają być reprezentowane ukryte treści. Dostępne są 2 opcje: clip
(domyślna), która powoduje obcięcie tekstu w miejscu, w którym przekracza on limit, oraz ellipsis
, która powoduje wyświetlenie wielokropka (…) w miejscu, w którym tekst przekracza limit.
Kontrolowanie białych znaków
Właściwość white-space
służy do określania sposobu obsługi białych znaków w elemencie. Więcej informacji znajdziesz w white-space
artykule na MDN.
white-space: pre
może być przydatne do renderowania grafiki ASCII lub starannie wciętych bloków kodu.
Kontrolowanie podziału wyrazów
Użyj word-break
, aby zmienić sposób dzielenia słów, które nie mieszczą się w wierszu. Domyślnie przeglądarka nie dzieli wyrazów. Użycie wartości słowa kluczowego break-all
dla word-break
spowoduje, że przeglądarka w razie potrzeby podzieli słowa na poszczególne znaki.
Zmiana wyrównania tekstu
Użyj text-align
, aby określić wyrównanie poziome tekstu w bloku lub elemencie komórki tabeli. Ta właściwość akceptuje wartości słów kluczowych left
, right
, start
, end
, center
, justify
i match-parent
.
Wartości left
i right
wyrównują tekst odpowiednio do lewej i prawej strony bloku.
Użyj symboli start
i end
, aby przedstawić położenie początku i końca wiersza tekstu w bieżącym trybie pisania. Dlatego w języku angielskim znak start
odpowiada znakowi left
, a w języku arabskim, który jest zapisywany od prawej do lewej (RTL), znakowi right
. Są to wyrównania logiczne. Więcej informacji znajdziesz w module Właściwości logiczne.
Użyj ikony center
, aby wyrównać tekst do środka bloku.
Wartość justify
porządkuje tekst i automatycznie zmienia odstępy między wyrazami, tak aby tekst był wyrównany do lewej i prawej krawędzi bloku.
Kontrolowanie sposobu zawijania tekstu
Użyj text-wrap
, aby zmienić sposób zawijania tekstu w elemencie.
Słowa kluczowe akceptowane w przypadku tej właściwości to wrap
, nowrap
, balance
i stable
. Wartość domyślna to wrap
, która minimalizuje przepełnienie, zawijając tekst w wierszach wzdłuż normalnych spacji i podziałów wyrazów.
Możesz użyć słowa kluczowego nowrap
, aby uzyskać dokładnie odwrotny efekt i zapobiec dzieleniu tekstu na wiersze, co może powodować przepełnienie.
Aby uzyskać taką samą ilość tekstu w każdym wierszu, np. podczas pisania nagłówków, użyj słowa kluczowego balance
. Aby zwiększyć wydajność, przeglądarki będą stosować tę wartość tylko w przypadku elementów z maksymalnie 6 wierszami tekstu.
Słowo kluczowe stable
działa podobnie jak wrap
, ale jest przeznaczone do używania z tekstem contenteditable. Gdy ustawisz text-wrap: stable
, wiersze nad edytowaną treścią nie będą się przesuwać.
Czasami długie ciągi znaków bez wyraźnego punktu podziału mogą przepełniać kontenery.
Aby kontrolować sposób podziału tego typu tekstu, użyj elementu overflow-wrap
.
Słowa kluczowe, których możesz użyć w przypadku tej usługi, to normal
, break-word
i anywhere
. Domyślne ustawienie to normal
. Tekst nie będzie przenoszony do następnego wiersza, chyba że zawiera spacje lub naturalne punkty podziału.
Wartości anywhere
i break-word
dodają punkty przerwania w dowolnym miejscu w ciągu znaków, aby zapobiec przepełnieniu. Słowa kluczowe różnią się sposobem reagowania na rozmiar min-content
wewnętrzny lub jawny. Słowo kluczowe anywhere
umożliwia wszystkie możliwe miękkie podziały wiersza. Wartość break-word
nie jest odpowiednia i sprawi, że tekst będzie długi jak najdłuższe słowo.
Zmiana kierunku tekstu
Użyj direction
, aby ustawić kierunek tekstu: ltr
(od lewej do prawej, domyślnie) lub rtl
(od prawej do lewej). Niektóre języki, takie jak arabski, hebrajski czy perski, są zapisywane od prawej do lewej, więc należy użyć direction: rtl
. W przypadku języka angielskiego i innych języków pisanych od lewej do prawej użyj znaku direction: ltr
.
Zmiana przepływu tekstu
Użyj writing-mode
, aby zmienić sposób przepływu i ułożenia tekstu. Wartość domyślna to horizontal-tb
, ale możesz też ustawić writing-mode
na vertical-lr
lub vertical-rl
w przypadku tekstu, który ma być wyświetlany poziomo.
Zmiana orientacji tekstu
Użyj text-orientation
, aby określić orientację znaków w tekście. Prawidłowe wartości tego atrybutu to mixed
i upright
. Ta właściwość jest istotna tylko wtedy, gdy element writing-mode
ma wartość inną niż horizontal-tb
.
Dodawanie cienia do tekstu
Użyj text-shadow
, aby dodać cień do tekstu. Ta właściwość oczekuje 3 długości (x-offset
, y-offset
i blur-radius
) oraz koloru.
Więcej informacji znajdziesz w sekcji text-shadow
naszego modułu dotyczącego cieni.
Czcionki zmienne
Zwykle czcionki „normalne” wymagają importowania różnych plików dla różnych wersji kroju pisma, takich jak pogrubiony, kursywa czy skondensowany. Czcionki zmienne to czcionki, które mogą zawierać wiele różnych wariantów kroju pisma w jednym pliku.
Więcej informacji znajdziesz w tym artykule o czcionkach zmiennych.
Pseudoelementy
::first-letter
i ::first-line
pseudo-elementy
Pseudoelementy ::first-letter
i ::first-line
są odpowiednio kierowane na pierwszą literę i pierwszy wiersz elementu tekstowego.
::selection
pseudo-element
Użyj pseudoelementu ::selection
, aby zmienić wygląd tekstu wybranego przez użytkownika.
W przypadku tego pseudoelementu można używać tylko określonych właściwości CSS: color
, background-color
, text-decoration
, text-shadow
, stroke-color
, fill-color
, stroke-width
.
font-variant
Właściwość font-variant
to skrót kilku właściwości CSS, które umożliwiają wybieranie wariantów czcionki, takich jak small-caps
i slashed-zero
. Ten skrót obejmuje właściwości CSS font-variant-alternates
, font-variant-caps
, font-variant-east-asian
, font-variant-ligatures
i font-variant-numeric
. Kliknij linki przy poszczególnych właściwościach, aby dowiedzieć się więcej o ich użyciu.
Sprawdź swoją wiedzę
Sprawdź swoją wiedzę o typografii w internecie
Które z tych słów kluczowych można użyć jako font-family
ogólnego słowa zastępczego?
serif
monospace
italic
italic
jest prawidłowym słowem kluczowym dla font-style
, a nie dla font-family
.sci-fi
fantasy
jest jednak prawidłową kreacją zastępczą dla font-family
.sans-serif
helvetica
"Helvetica"
nie jest ogólnym słowem kluczowym, ale odnosi się do konkretnej rodziny czcionek.Które wyrażenie służy do przekształcenia pierwszej litery każdego słowa na wielką literę? np. This is a sentence.
➡ This Is A Sentence.
text-capitalize: true;
text-case: capitalize;
text-transform: capitalize;
font-style: capitals;
font-variant: capitalize;
Prawda czy fałsz: użyj text-orientation
, aby wyrównać tekst do lewej, prawej lub środka.
text-orientation
zmienia obrót liter w wierszu.text-orientation
zmienia obrót liter w wierszu. Użyj text-align
, aby wyrównać tekst do lewej, prawej lub środka (i nie tylko).Której właściwości CSS można użyć, aby zmienić odstęp między wierszami tekstu?
line-spacing
leading
baseline-distance
line-height
Zasoby
- W artykule Sprawdzone metody dotyczące czcionek znajdziesz informacje o importowaniu i renderowaniu czcionek oraz inne sprawdzone metody korzystania z nich w internecie.
- MDN Fundamental text and font styling