,

Przydatne właściwości CSS, które prawdopodobnie znajdą zastosowanie w Twoich projektach

W sieci można znaleźć wiele artykułów pokazujących ciekawe, rzadko wykorzystywane czy zapomniane właściwości CSS, które koniecznie musimy wykorzystać w swoich projektach. Niestety często przedstawione tipy możemy potraktować tylko jako ciekawostkę, która przyda nam się raz w karierze developera, zdarza się również, że zaprezentowane właściwości są na poziomie eksperymentalnym i nie możemy użyć ich w komercyjnym projekcie.

Dzisiaj chciałbym przedstawić kilka właściwości, które rzadko znajduje wykonując code review, a które prawdopodobnie znajdą wykorzystanie w wielu Waszych projektach. Dla każdej z właściwości postaram się podać konkretny przykład użycia.

Flex Gap

Bardzo przydatna i często pomijana właściwość gap służąca do określania odstępów między elementami układu zbudowanego za pomocą flexboxa. Jeszcze do niedawna sam tworząc layout kolumnowy do zarządzania odległościami między kolumnami wykorzystałem albo marginesy lub ujemne marginesy dla wrappera i padding dla elementów wewnątrz. Takie podejście wymagało większej ilości kodu, dodatkowym problemem były odległości w pionie, które często chcemy wyłączyć dla ostatniego rzędu, przy zmieniających się ilościach kolumn generowało to dużo niepotrzebnej zabawy z nth-child.

Właściwość gap pozwala nam na ustalenie tych odległości bez konieczności ustawiania dodatkowych marginesów, paddingów czy korzystania z nth-child dla wyłączenia tych marginesów.

Przykład użycia
.columns {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.culumns .item {
  flex-basis: calc(33.333% - 20px/3);
  max-width: calc(33.333% - 20px/3);
}Code language: CSS (css)

W tym przykładzie elementy z klasą .item znajdujące się w elemencie z klasą .columns będą miały 1/3 szerokości, a odległość między tymi elementami będzie wynosiła 10px, zarówno w pionie jak i w poziomie. Przy wykorzystaniu gap konieczne jest odjęcie od szerokości kolumny obszaru, który zostanie wykorzystany na odstępy. W naszym przykładzie gap ustawiony jest na 10px, chcemy wyświetlić 3 elementy w rzędzie, co oznacza, że będziemy mieli dwie przestrzenie po 10px między 3 elementami. Dlatego od 33.333% szerokości każdej kolumny odejmujemy 20px dzielone na 3. Oczywiście właściwość gap można ustawić osobno dla obu osi, jeśli chcemy by odstępy poziome wynosiły 10px, a pionowe 0, wystarczy użyć gap: 0 10px.

Text-overflow oraz -webkit-line-clamp

Kafelki z zajawką wpisu są nieodłącznym elementem wielu witryn internetowych. Często projektanci ograniczają ilość treści w takiej zajawce dodając na końcu wielokropek. Jeśli zajawka ma mieć maksymalnie jedną linijkę możemy wykorzystać właściwość text-overflow z parametrem ellipsis.

Przykład wykorzystania:
p {
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden;
}Code language: CSS (css)

Takie style dodane dla paragrafu spowodują, że wyświetli się on w postaci jednej linii, bez znaczenia jak długi faktycznie będzie, a na jego końcu zostanie dodany wielokropek.

Okej, text-overflow jest dość znany i wykorzystywany, ale co w przypadku gdy musimy uciąć tekst nie po jednej linii, ale np. po trzech i również chcemy dodać na końcu wielokropek? Tutaj text-overflow: ellipsis nie zadziała, jednak możemy skorzystać z właściwości line-clamp.

Przykład użycia:
p {  
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;  
  overflow: hidden;
}Code language: CSS (css)

Aby line-clamp działał prawidłowo na element musi zostać nałożona właściwość display z parametrem -webkit-box, a sama właściwość line-clamp musi zostać podana z prefixem -webkit. Rozwiązanie te nie jest w 100% wspierane, ale jak możemy zobaczyć na Can I Use wsparcie z prefixem -webkit występuje we wszystkich popularnych przeglądarkach, możemy więc z niego spokojnie korzystać we wszystkich projektach, które nie wymagają wsparcia dla starszych przeglądarek.

@supports

Jest to reguła, która pozwala sprawdzać czy dana przeglądarka obsługuje konkretną właściwość CSS. Często kusi nas by użyć rozwiązania, które nie ma pełnego wsparcia dla wszystkich wersji przeglądarek, dla których musimy te wsparcie zagwarantować. W takim przypadku zazwyczaj rezygnujemy z jakiegoś rozwiązania czy efektu i wdrażamy gorsze, mające pełne wsparcie. Moim zdaniem zamiast równać w dół dla przeglądarki, której używa 2% internetu, lepiej równać w górę, w czym pomoże nam reguła @supports.

Przykład użycia:
@supports (display: grid) {
  .classname {
    display: grid;
  }
}

.classname {
  display: flex;
}Code language: CSS (css)

W powyższym przykładzie sprawdzamy czy przeglądarka wspiera CSS Grid Layout, jeśli tak to dla elementu z klasą classname dodana zostanie właściwość display z wartością grid, jeśli zaś przeglądarka nie wspiera grida to element classname otrzyma właściwość display z wartością flex.

Columns

Potrzebujesz rozłożyć listę wypunktowaną na kilka kolumn lub stworzyć prosty layout w stylu masonry? Możesz wykorzystać nie tylko layout oparty na gridzie i flexie, do dyspozycji jest również właściwość columns, która jest shorthandem dwóch właściwości: column-width oraz column-count. Pierwsza z nich określa szerokość kolumny, druga liczbę kolumn. Do określenia odległości między kolumnami możemy wykorzystać właściwość column-gap.

Dodatkową, przydatna właściwością jest break-inside, które posłuży do zablokowania łamania się elementów między kolumnami. Domyślnie ustawienie column-count: 2; na np. listę wypunktowaną może spowodować, że zawartość ostatniego li w pierwszej kolumnie zostanie częściowo przeniesiona do drugiej kolumny. Aby temu zapobiec wystarczy dla tagu <li> dodać właściwość break-inside z wartością avoid-column.

Przykład użycia:
.ul {
  column-count: 2;
  column-gap: 2rem;
}Code language: CSS (css)

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

Nasza pasja do technologii nie kończy się na dostarczaniu wnikliwych treści poprzez ten blog. Zapraszamy po więcej tajników specjalistycznej wiedzy dla entuzjastów takich jak Ty.

Tematy

animacje animate Attribute inheritance Block Theme Branża IT bug Code Comments CSS CSS Flexbox developer tools Doc Blocks dostępność www Edge Edge computing Editor Flex Gap FSE Full Site Editing GIT GIT Submodules Gutenberg HTTP HTTP/2 HTTP/3 IT JS Memcached Optimization plik SVG Praca praca w IT Rozmowy o WordPress strony www SVG Text-overflow theme.json v-model Vue.js wcag web accessibility Web development webkit line clamp Wordpress wp postmeta api wp transient