Kurs HTML

16.2. Właściwość transition-property

Strona główna > Kurs CSS > Rozdział 16: Przejścia CSS (Transitions) > Właściwość transition-property

Do czego służy transition-property?

Właściwość transition-property jest kluczowym elementem definicji przejścia CSS. Służy ona do **określenia, które konkretnie właściwości CSS mają być animowane**, gdy ich wartość ulegnie zmianie.

Bez jawnego wskazania właściwości (lub użycia wartości domyślnej all), przeglądarka nie będzie wiedziała, co ma animować, i zmiana wartości nastąpi natychmiastowo.

Składnia i wartości

Właściwość transition-property przyjmuje jedną lub więcej nazw właściwości CSS, oddzielonych przecinkami, lub specjalne słowa kluczowe:

transition-property: none | all | <nazwa-właściwości> [, <nazwa-właściwości>]*;
  • none: Żadna właściwość nie będzie animowana. Przejście nie nastąpi.
  • all (wartość domyślna): Wszystkie właściwości, które mogą być animowane, będą podlegać przejściu. Jest to wygodne, ale może być mniej wydajne, jeśli zmienia się wiele właściwości, a chcemy animować tylko niektóre.
  • <nazwa-właściwości>: Konkretna nazwa właściwości CSS, która ma być animowana (np. background-color, width, opacity, transform, border-radius).
  • Lista nazw właściwości: Można podać wiele nazw właściwości oddzielonych przecinkami, aby animować tylko wybrane z nich.

Przykłady:

.element1 {
  /* Animuj tylko zmianę koloru tła */
  transition-property: background-color;
  transition-duration: 0.3s;
}

.element2 {
  /* Animuj zmianę szerokości i przezroczystości */
  transition-property: width, opacity;
  transition-duration: 0.5s;
}

.element3 {
  /* Animuj wszystkie możliwe do animowania właściwości (domyślne zachowanie) */
  transition-property: all;
  transition-duration: 1s;
}

.element4 {
  /* Wyłącz animację dla tego elementu */
  transition-property: none;
}

Które właściwości można animować?

Jak wspomniano wcześniej, nie wszystkie właściwości CSS nadają się do animacji. Tylko te, dla których przeglądarka potrafi obliczyć stany pośrednie, mogą być płynnie animowane. Lista takich właściwości jest długa i obejmuje między innymi:

  • Właściwości związane z rozmiarem i pozycją: width, height, padding, margin, border-width, top, left, right, bottom.
  • Właściwości związane z wyglądem: color, background-color, border-color, opacity, box-shadow, text-shadow.
  • Właściwości związane z tekstem: font-size, line-height, letter-spacing, word-spacing.
  • Transformacje: transform (bardzo wydajne!).
  • Filtry: filter.
  • Właściwości Flexbox i Grid: np. flex-basis, order (choć animacja order może nie być płynna).

Pełną listę animowalnych właściwości można znaleźć w dokumentacji MDN (Mozilla Developer Network).

Ważne: Animowanie właściwości, które wpływają na layout strony (np. width, height, margin, padding, top, left) jest zazwyczaj mniej wydajne niż animowanie transform i opacity, ponieważ wymaga od przeglądarki przeliczenia układu strony w każdej klatce animacji.

FAQ - Najczęściej zadawane pytania

Co się stanie, jeśli podam właściwość, której nie da się animować?

Jeśli w transition-property podasz nazwę właściwości, która nie jest animowalna (np. display), przeglądarka po prostu zignoruje tę część definicji przejścia dla tej konkretnej właściwości. Zmiana wartości tej właściwości nastąpi natychmiastowo, bez animacji.

Czy muszę podawać prefiksy przeglądarek dla transition-property?

Współczesne przeglądarki generalnie dobrze wspierają standardową składnię transition-property. Jednak dla zapewnienia kompatybilności ze starszymi wersjami (zwłaszcza Safari i starsze Androidy), czasami można jeszcze spotkać potrzebę użycia prefiksu -webkit- (np. -webkit-transition-property). Zazwyczaj jednak nie jest to już konieczne.

Kiedy używać all, a kiedy konkretnych nazw właściwości?

Używaj all, gdy chcesz, aby wszystkie możliwe zmiany były animowane i nie przejmujesz się potencjalnie minimalnie niższą wydajnością. Używaj konkretnych nazw właściwości, gdy chcesz precyzyjnie kontrolować, co jest animowane, lub gdy chcesz zoptymalizować wydajność, unikając niepotrzebnych obliczeń dla właściwości, które nie mają się animować.

Czy kolejność nazw właściwości w transition-property ma znaczenie?

Nie, kolejność podawania nazw właściwości w transition-property nie ma znaczenia. transition-property: width, height; działa tak samo jak transition-property: height, width;. Kolejność ma jednak znaczenie, gdy podajemy różne czasy trwania lub funkcje czasowe dla różnych właściwości we właściwości skróconej transition.