Jednostki rozmiaru

Podcast CSS – 008: Sizing units

Internet jest medium responsywnym, ale czasami warto kontrolować jego wymiary, aby poprawić ogólną jakość interfejsu. Dobrym przykładem jest ograniczanie długości wierszy, aby ułatwić czytelność. Jak to zrobić w takim elastycznym medium, jak internet?

W tym przypadku możesz użyć jednostki ch, która jest równa szerokości znaku „0” w renderowanym czcionce o obliczonym rozmiarze. Ta jednostka pozwala ograniczyć szerokość tekstu za pomocą jednostki przeznaczonej do określania rozmiaru tekstu, co z kolei umożliwia przewidywalne kontrolowanie niezależnie od rozmiaru tekstu. Jednostka ch jest jedną z kilku jednostek przydatnych w określonych kontekstach, takich jak ten przykład.

Numbers

Liczby służą do definiowania opacity, line-height, a nawet wartości kanałów kolorów w rgb. Liczby są bezwymiarowymi liczbami całkowitymi (1, 2, 3, 100) i dziesiętnymi (.1, .2, .3).

Liczby mają znaczenie w zależności od kontekstu. Na przykład podczas definiowania line-heightliczba jest reprezentowana przez współczynnik, jeśli zdefiniujesz ją bez jednostki pomocniczej:

p {
  font-size: 24px;
  line-height: 1.5;
}

W tym przykładzie 1.5 jest równa 150% wyliczonego rozmiaru czcionki w pikselach elementu p. Oznacza to, że jeśli p ma wartość font-size 24px, wysokość wiersza zostanie obliczona jako 36px.

Liczb można też używać w tych miejscach:

  • Podczas ustawiania wartości filtrów: filter: sepia(0.5) do elementu zostanie zastosowany sepia filtr 50%.
  • Podczas ustawiania przezroczystości: opacity: 0.5 zostanie zastosowana przezroczystość 50%.
  • W kanałach kolorów: rgb(50, 50, 50), gdzie wartości 0–255 są akceptowalne do ustawienia wartości koloru. Zobacz lekcję o kolorach
  • Aby przekształcić element: transform: scale(1.2), aby powiększyć element do 120% jego początkowego rozmiaru.

Wartość (%)

Korzystając z procentów w CSS, musisz wiedzieć, jak są one obliczane. Na przykład width jest obliczana jako procent dostępnej szerokości w elemencie nadrzędnym.

div {
  width: 300px;
  height: 100px;
}

div p {
  width: 50%; 
}

W tym przykładzie szerokość elementu div p wynosi 150px, zakładając, że układ używa domyślnego elementu box-sizing: content-box.

Jeśli ustawisz margin lub padding jako wartość procentową, będą one stanowić część szerokości elementu nadrzędnego, niezależnie od kierunku.

div {
  width: 300px;
  height: 100px;
}

div p {
  margin-top: 50%; /* calculated: 150px */
  padding-left: 50%; /* calculated: 150px */
}

W powyższym fragmencie kodu zarówno margin-top, jak i padding-left będą się przeliczać na 150px.

div {
  width: 300px;
  height: 100px;
}

div p {
  width: 50%; /* calculated: 150px */
  transform: translateX(10%); /* calculated: 15px */
}

Jeśli wartość transform jest wyrażona w procentach, jest ona określana na podstawie elementu z ustawionymi przekształceniami. W tym przykładzie p ma wartość translateX o wartości 10% i width o wartości 50%. Najpierw oblicz szerokość: 150px, bo to 50% szerokości elementu nadrzędnego. Następnie weź 10%150px, czyli 15px.

Wymiary i długości

Jeśli dołączysz jednostkę do liczby, stanie się ona wymiarem. Na przykład 1rem jest wymiarem. W tym kontekście jednostka przypisana do liczby jest w specyfikacjach określana jako token wymiaru. Długości to wymiary odnoszące się do odległości. Mogą być bezwzględne lub względne.

Bezwzględne długości

Wszystkie bezwzględne długości są przekształcane na podstawie tej samej bazy, dzięki czemu są przewidywalne w każdym miejscu, w którym są używane w CSS. Jeśli na przykład użyjesz wartości cm do określenia rozmiaru elementu, a potem wydrukujesz dokument, powinien on być dokładny, jeśli porównasz go z miernikiem.

div {
  width: 10cm;
  height: 5cm;
  background: black;
}

Jeśli ta strona zostanie wydrukowana, div będzie wydrukowany jako czarny prostokąt o wymiarach 10 x 5 cm. Pamiętaj, że kod CSS jest używany nie tylko do stylizacji treści cyfrowych, ale też do stylizacji treści drukowanych. Długości bezwzględne mogą być bardzo przydatne podczas projektowania na potrzeby druku.

Jednostka Nazwa Odpowiednik
cm Centymetry 1 cm = 96 pikseli/2,54
mm Milimetry 1 mm = 1/10 cm
Pyt. ćwierć milimetra 1Q = 1/40 cm
w Cale 1 cal = 2,54 cm = 96 pikseli
pc Picas 1 pc = 1/6 in
pt Punkty 1 pt = 1/72 cala
px Piksele 1 piksela = 1/96 cala

Długości względne

Długość względna jest obliczana na podstawie wartości podstawowej, podobnie jak wartość procentowa. Różnica między tymi wartościami a procentami polega na tym, że możesz dostosować rozmiar elementów do kontekstu. Oznacza to, że CSS ma jednostki takie jak ch, które używają rozmiaru tekstu jako podstawy, oraz vw, które są oparte na szerokości widocznego obszaru (okna przeglądarki). Długości względne są szczególnie przydatne w internecie ze względu na to, że są elastyczne.

Jednostki względne do rozmiaru czcionki

CSS udostępnia przydatne jednostki zależnie od rozmiaru elementów renderowanej typografii, takich jak rozmiar samego tekstu (em) lub szerokość znaków kroju (ch).

Jednostka w porównaniu z:
em Względem rozmiaru czcionki, tzn. 1.5em będzie o 50% większy od obliczonego rozmiaru czcionki elementu nadrzędnego. (historycznie odpowiadała wysokości dużej litery „M”).
ex Heurystyka określająca, czy użyć wysokości x, litery „x” czy wartości 0,5 em w bieżącym obliczonym rozmiarze czcionki elementu.
czapka Wysokość dużych liter w bieżącym obliczonym rozmiarze czcionki elementu.
ch Średni przeskok znaku wąskiego glifu w czcionce elementu (reprezentowany przez glif „0”).
ic Średnia przestrzeń znakowa znaku o pełnej szerokości w fontzie elementu reprezentowanego przez znak „水” (ideogram oznaczający wodę w językach CJK, U+6C34).
rem Rozmiar czcionki elementu katalogu (domyślnie 16 pikseli).
lh Wysokość wiersza elementu.
rlh Wysokość wiersza elementu głównego.
Tekst, CSS jest 10 razy lepszy z etykietami dla wysokości wierzchołka, wysokości opuszczenia i wysokości x. Wysokość x to 1 ex, a wysokość 0 to 1 ch.

Jednostki względne do widocznego obszaru

Jako podstawy względnej możesz użyć wymiarów widocznego obszaru (okna przeglądarki). Te jednostki dzielą dostępną przestrzeń widoku.

Jednostka w stosunku do
vw 1% szerokości widocznego obszaru. Użytkownicy wykorzystują tę jednostkę do wykonywania fajnych sztuczek z czcionką, na przykład do zmiany rozmiaru czcionki nagłówka na podstawie szerokości strony, tak aby wraz ze zmianą rozmiaru strony zmieniał się też rozmiar czcionki.
vh 1% wysokości widocznego obszaru. Możesz go użyć do rozmieszczania elementów w interfejsie, na przykład paska narzędzi w stopce.
vi 1% rozmiaru widocznego obszaru na osi poziomej elementu ukorzeniającego. Osie to tryby pisania. W trybach pisania poziomego, takich jak angielski, oś wstawiona jest pozioma. W trybach pisania pionowego, takich jak niektóre czcionki japońskie, oś wstawiona przebiega od góry do dołu.
vb 1% rozmiaru widocznego obszaru na osi bloku elementu katalogu. W przypadku osi bloku jest to kierunek języka. Języki z orientacją poziomą, takie jak angielski, mają oś bloku pionowego, ponieważ czytelnicy języka angielskiego analizują stronę od góry do dołu. Tryb pisania pionowego ma oś bloku poziomego.
vmin 1% mniejszego wymiaru widocznego obszaru.
vmax 1% większego rozmiaru widocznego obszaru.
div {
  width: 10vw;
}

p {
  max-width: 60ch;
}

W tym przykładzie div to 10% szerokości widocznego obszaru, ponieważ 1vw to 1% szerokości widocznego obszaru. Element p ma wartość max-width o wartości 60ch, co oznacza, że szerokość obliczonej czcionki i rozmiaru nie może przekraczać 60 znaków (60 znaków).

Inne jednostki

Istnieją też inne jednostki, które zostały określone w celu obsługi określonych typów wartości.

Jednostki kąta

module kolorów przyjrzeliśmy się jednostkom kąta, które są przydatne do definiowania wartości kąta, na przykład odcienia w hsl. Są one też przydatne do obracania elementów w ramach funkcji transformacji.

div {
  width: 150px;
  height: 150px;
  transform: rotate(60deg);
}

Za pomocą jednostki kąta deg możesz obracać element div o 90° wokół jego środkowej osi.

div {
  background-image: url('a-low-resolution-image.jpg');
}

@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
  div {
    background-image: url('a-high-resolution-image.jpg');
  }
}

Jednostki rozdzielczości

W poprzednim przykładzie wartość min-resolution to 192dpi. Jednostka dpi oznacza punkty na cal. W tym celu można wykrywać ekrany o bardzo wysokiej rozdzielczości, takie jak wyświetlacze Retina, w zapytaniu o multimedia i podawać obraz o wyższej rozdzielczości.

Sprawdź swoją wiedzę

Sprawdź swoją wiedzę o rozmiarach

Które z tych wymiarów są prawidłowe?

cm
centymetrów, prawidłowy wymiar bezwzględny.
ui
Interfejs użytkownika nie jest wymiarem w CSS.
w
Inches (cale) – prawidłowy wymiar bezwzględny.
8
Nie jest wymiarem usługi porównywania cen
piks.
piksele – prawidłowy wymiar bezwzględny.
ch
Jednostki znaków, prawidłowy wymiar względny.
ux
Wrażenia użytkownika nie są wymiarem w CSS.
em
Jednostki litery „M”, czyli prawidłowy wymiar względny.
np.
Jednostki litery „x” – prawidłowy wymiar względny.

Czym różnią się jednostki bezwzględne od względnych?

Wartości bezwzględne nie mogą ulec zmianie, ale jednostki względne mogą
Wartości bezwzględne mogą się zmieniać, ale podstawa, na podstawie której są obliczane, nie jest możliwa.
Długość bezwzględna jest obliczana na podstawie jednej wspólnej wartości bazowej, gdzie jednostka względna jest porównywana z wartością bazową, która może się zmieniać.
Jednostki względne są bardziej elastyczne i płynne ze względu na kontekstową świadomość, ale jednostki bezwzględne mają moc i przewidywalność, które mogą być podstawą niektórych projektów.

Jednostki widocznego obszaru są bezwzględne.

Prawda
Mogą wydawać się bezwzględne, ale są względne w stosunku do widocznego obszaru, który może być iframe lub webview i nie zawsze odpowiada rozmiarowi ekranu urządzenia.
Fałsz
Są one względne do okna dokumentu, w którym zostały utworzone, które może być takie samo jak ekran urządzenia lub nie.

Zasoby