Zmniejsz odstępy od góry i dołu tekstu, aby uzyskać równowagę optyczną.
Data publikacji: 14 stycznia 2025 r.
Od wersji 133 Chrome text-box
pozwala deweloperom i projektantom dostosować przestrzeń nad i pod tekstem.
Browser Support
Długopis:
text-box-trim: trim-start | trim-end | trim-both | none;
text-box-edge: cap | ex | text | leading;
line-fit-edge: alphabetic | text;
Skrót:
text-box: trim-both cap alphabetic;
Ta właściwość umożliwia kontrolowanie przestrzeni nad i pod tekstem, np. <h1>
, <button>
i <p>
. Każda czcionka zajmuje inną ilość miejsca w bloku kierunkowym, co wpływa na rozmiar elementu. Ten chaotyczny sposób tworzenia treści nie jest łatwy do zmierzenia i do tej pory nie dało się go kontrolować.
Czcionka wie, teraz CSS też wie.
Przestrzeń nad i pod czcionką wynika z tego, jak strony internetowe wyświetlają tekst (tzw. „półprzestrzeń”). Ten temat został szczegółowo omówiony w poście Matthiasa Otta pt. The Thing With Leading In CSS (pol. „To z prowadzeniem w CSS”). W przypadku ręcznego sporządzania składu wiersze tekstu oddzielano od siebie kawałkami ołowiu. Wzorując się na czcionkach, sieć dzieli tę przestrzeń na pół i przydziela po połowie na górę i dół treści.
Ta historia jest istotna, ponieważ text-box
podaje nazwy każdej połowy: powyżej i poniżej. Dodatkowo możesz przyciąć film.
text-box
ma też wcześniejsze publikacje. Możesz pamiętać interesujący post Ethana Wanga Leading-Trim: The Future Of Digital Typesetting (Leading-Trim: przyszłość cyfrowego składu tekstu), w którym po raz pierwszy przedstawiono leading-trim
(wcześniej text-box
).
Twoim punktem wyjścia do przycinania tekstu może być Figma i jej opcje „przycinania pionowego” przeznaczone dla projektantów. Ten post na forum X pokazuje, gdzie znajduje się ta opcja przycinania pionowego i jak można jej używać w przypadku przycisków.
Niezależnie od tego, jak tu dotarłeś/-aś, ta niewielka kontrola typografii może mieć ogromne znaczenie.
Omówienie funkcji i składni
Oto 2 najczęstsze krótkie instrukcje, których użyjesz podczas pracy z text-box
:
h1 {
/* trim both sides to the capital letters */
text-box: trim-both cap alphabetic;
/* trim both sides to the lowercase letter x */
text-box: trim-both ex alphabetic;
}
Najczęstszym zastosowaniem tej funkcji będzie przycinanie obu elementów do cap alphabetic
. W tych demonstracjach jest to odpowiednio 10 razy. W poprzednim przykładzie pokazano jednak również ex alphabetic
, ponieważ jest ona przydatna do zachowania równowagi optycznej na swój własny sposób.
Środowisko do testowania eksploratora
W tym demonstracyjnym filmie możesz zapoznać się ze składnią i zobaczyć wyniki za pomocą menu. Możesz zmieniać czcionki, wartości przycinania górnego i dolnego oraz korzystać z wizualizacji i etykiet z kolorami.
Co możesz zrobić:
- Wizualna kontrola działania funkcji
text-box-trim
w przypadku wariantów tekstu jednowierszowego i wielowierszowego. - Najechanie kursorem na wariant i zobaczenie wartości przycięcia użytych do uzyskania tego efektu.
- Zmiana czcionki.
- przycinanie tylko jednej strony pola tekstowego;
- sprawdzać składnię podczas gry;
Co mogę zbudować za pomocą tej usługi lub jakie problemy rozwiązuje?
Dzięki tej funkcji można stosować znacznie prostsze rozwiązania do wyśrodkowywania i wyrównywania. Możesz nawet zbliżyć się do właściwego odstępu, w którym między treściami można użyć znaku gap
.
Łatwiejsze wyśrodkowywanie
W przypadku mniejszych elementów wstawianych w tekście i elementów nierozdzielnych od treści odpowiednim stylem jest padding: 10px
, który zapewnia równe odstępy po obu stronach. Jednak wynik może wprowadzać w błąd, ponieważ często ma dodatkowe miejsce u góry i na dole.
Aby temu zaradzić, deweloperzy często celowo zmniejszają odstępy u góry i u dołu (blok), aby zrównoważyć efekt półprzesunięcia.
button {
padding-block: 5px;
padding-inline: 10px;
}
W tej chwili pozostaje nam wypróbować różne kombinacje wartości, aż wszystko będzie wyglądać estetycznie. Może ona dobrze wyglądać na jednym ekranie i w danym systemie operacyjnym, ale nie na innym.
text-box
pozwala przyciąć pierwszą połowę spacji w tekście, dzięki czemu przydatne są wartości wyrównania takie jak 10px
:
button {
text-box: trim-both cap alphabetic;
padding: 10px;
}
Oto kilka elementów <button>
, które pokazują, jak przycinanie przestrzeni za pomocą text-box
sprawia, że padding: 10px
wygląda na równy ze wszystkich stron w praktycznym elemencie interaktywnym. Zwróć uwagę, jak czcionka alternatywna może wygenerować bardzo różne wartości odstępu między wierszami.
Oto elementy <span>
, które często służą do wyświetlania kategorii lub plakiet. Innym momentem, w którym wyrównanie boków powinno być najlepszym rozwiązaniem, ale do wersji text-box
musieliśmy znaleźć inne rozwiązanie.
Łatwiejsza współpraca
Dodatkowa, niekontrolowana spacja w polu tekstowym nad (over
) i pod (under
) tekstem utrudnia też wyrównanie. Poniższe przykłady pokazują, kiedy interlinia o połowie szerokości może utrudniać wyrównanie i jak przycinanie bloków po obu stronach pola tekstowego może poprawić wyrównanie.
Tutaj obraz jest umieszczony obok tekstu. Obraz będzie miał wysokość wymaganą przez tekst, ale bez text-box
obraz jest zawsze trochę wyższy. Dzięki text-box
obraz może idealnie pasować do tekstu.
Zwróć uwagę, że w sytuacjach z zawijaniem wierszy biała przestrzeń znajduje się nad pierwszym sformatowanym wierszem tekstu i pod ostatnim sformatowanym wierszem tekstu.
W tym przykładzie zwróć uwagę, jak funkcja logicznie dostosowuje się do zmiany w writing-mode
. Spróbuj zmienić tekst i obserwuj, jak układ pozostaje wyrównany.
Kontynuuj naukę
Chcesz wiedzieć więcej? Na liście linków poniżej znajdziesz dodatkowe informacje i przypadki użycia.
- https://codepen.io/collection/zxQBaL – kolekcja Codepen zawierająca wszystkie wymienione wyżej wersje demonstracyjne
- https://github.com/jantimon/text-box-trim-examples – świetne badania i demonstracje autorstwa Jana Nicklasa
- https://css-tricks.com/two-css-properties-for-trimming-text-box-whitespace/
- https://drafts.csswg.org/css-inline-3/#text-edges
- Nie mylić z
size-adjust
aniascent-override
https://web.dev/articles/css-size-adjust - https://www.smashingmagazine.com/2012/12/css-baseline-the-good-the-bad-and-the-ugly/
- https://css-tricks.com/two-css-properties-for-trimming-text-box-whitespace/
- stosowany w wielu elementach HTML https://codepen.io/nileshprajapati/pen/RweKdmw
- Post na blogu Safari https://webkit.org/blog/16301/webkit-features-in-safari-18-2/
- https://piccalil.li/blog/why-im-excited-about-text-box-trim-as-a-designer/