KATEGORIA:

Przejście (transition) – css

transition css

Dzięki transition możemy uzyskać pewien rodzaj animacji. Termin transition oznacza przejście. Dostajemy więc możliwość upłynnienia zmiany jakiejś cechy elementu i określenia czasu trwania tej zmiany. Przykładowo: po najechaniu na czerwony kwadrat o szerokości 100 px, chcemy aby stał się niebieski i był szeroki na 500 px. Bez użycia transition, nastąpi przeskok, który jest nieestetyczny. Dodając czas np. 2s sprawiamy, że PRZEJŚCIE będzie płynne.

Stwórzmy wspomniany już przeze mnie kwadrat.

<!DOCTYPE html>
<html>
<head>
<style> 
	div {
   		width: 150px;
   	 	height: 150px;
   	 	background: red;
	}

	div:hover {
    	height: 300px;
	}
</style>
</head>

<body>
<div></div>
</body>
</html>

Efekt znajduje się tutaj

Zauważcie, że po najechaniu na kwadrat kursorem myszki, następuje przeskok. Dodamy teraz cechę transition, dzięki której nastąpi płynna zmiana wysokości. Wstawiamy transition: height 2s i to wszystko. Określamy w ten sposób, że wysokość ze 150 px ma się zmienić na 500 px (co określiliśmy w div:hover) i ma to trwać dwie sekundy.

Jeśli nie wpiszemy czasu trwania, przejście się nie wykona. Wynika to z tego, że domyślną wartością jest 0 sekund.

<!DOCTYPE html>
<html>
<head>
<style> 
div {
    width: 150px;
    height: 150px;
    background: red;
    -webkit-transition: width 2s; /* dla przegladarek Safari */
    transition: height 2s;
}

div:hover {
    height: 300px;
}
</style>
</head>
<body>
<div></div>
</body>
</html>

Efekt znajduje się tutaj

W takiej sytuacji, po zjechaniu myszką z elementu, następuje płynny powrót do szerokości wyjściowej.

KILKA WARTOŚCI TRANSITION

Powyższy przykład określa zmianę jednej cechy w określonym czasie. Na szczęście css nas nie ogranicza i pozwala definiować zmianę wielu cech jednocześnie.

Zajmiemy się teraz zmianą wysokości, szerokości, koloru i cienia czerwonego kwadratu. Wartości docelowe określamy w div:hover a wartości transition wpisujemy po przecinku jak w poniższym przykładzie.

div {
    width: 150px;
    height: 150px;
    background: red;
    transition: height 2s, width 2s, background 4s, box-shadow 3s;
}

div:hover {
    height: 300px;
    width: 300px;
    background: violet;
    box-shadow: 2px 2px 2px 5px green;
}

Efekt znajduje się tutaj

OKREŚLANIE PRĘDKOŚCI TRANSITION

Jeżeli zdecydujemy, że kwadrat ma przez 2 sekundy się powiększać, to na początku powiększa się powoli, potem przyspiesza by na końcu znów zwolnić. To jest wartość domyślna cechy transition-timing-function, której nie musimy definiować. Możemy się zdecydować także na jedną z kilku opcji, mianowicie:

  • transition-timing-function: linear; – przejście z jednakową prędkością od początku do końca,
  • transition-timing-function: ease-in; – wolny start i przyspieszenie,
  • transition-timing-function: ease-out; – szybki start i zwolnienie,
  • transition-timing-function: ease-in-out; – powolny start i powolny koniec.

JAK OPÓŹNIĆ TRANSITION?

W celu odłożenia przejścia w czasie należy użyć transition-delay. Wartości podajemy w sekundach np. transition-delay: 2s;.

Efekt znajduje się tutaj

TRANSITION – OPTYMALIZACJA KODU

Można zapisać cechy transition w ten sposób:

 transition-property: width;
    transition-duration: 3s;
    transition-timing-function: ease-in;
    transition-delay: 10s;

lub w sposób skrócony:

transition: width 3s ease-in 10s;

Transition można użyć razem z transform, powstają w ten sposób ciekawe przejścia. Otwiera się więcej możliwości. Więcej na ten temat będzie można przeczytać w kolejnym artykule.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *