CSS pozwala na dodawanie płynnych animacji i efektów przejścia do elementów na stronie bez konieczności używania JavaScriptu. W tej lekcji zajmiemy się zarówno przejściami (transitions), które umożliwiają płynne zmiany jednej właściwości, jak i bardziej zaawansowanymi animacjami (animations).
Przejścia w CSS (Transitions)
Przejścia umożliwiają płynne zmienianie wartości CSS, np. koloru, rozmiaru lub pozycji elementu. Domyślnie zmiany te odbywają się natychmiast, ale przy użyciu przejść możesz kontrolować, jak długo zmiana trwa i jak ma być wykonana.
Podstawowy przykład przejścia:
.button {
background-color: blue;
color: white;
padding: 10px;
transition: background-color 0.5s ease;
}
.button:hover {
background-color: red;
}W tym przykładzie:
- Gdy użytkownik najedzie myszką na przycisk (
:hover), kolor tła zmienia się z niebieskiego na czerwony, ale dziękitransitionzmiana ta trwa 0.5 sekundy i odbywa się w płynny sposób.
Składnia transition:
transition-property– Właściwość, którą chcesz animować (np.background-color,width,transform).transition-duration– Czas trwania przejścia (np.0.5s).transition-timing-function– Funkcja określająca, jak zmiana powinna być wykonywana (np.ease,linear,ease-in,ease-out,ease-in-out).transition-delay– Opóźnienie przed rozpoczęciem przejścia (np.0.2s).
Przykład: Wiele właściwości w jednym przejściu:
.box {
width: 100px;
height: 100px;
background-color: green;
transition: width 1s ease, background-color 0.5s ease-in-out;
}
.box:hover {
width: 200px;
background-color: orange;
}W tym przykładzie zarówno szerokość, jak i kolor tła zmieniają się płynnie, ale mają różne czasy trwania i funkcje przejścia.
CSS Animacje (Animations)
Animacje są bardziej zaawansowane niż przejścia, ponieważ pozwalają na definiowanie bardziej złożonych sekwencji zmian właściwości CSS, które mogą odbywać się wielokrotnie lub jednorazowo. W CSS animacje definiuje się za pomocą reguły @keyframes.
Podstawowy przykład animacji:
@keyframes slide {
from {
transform: translateX(0);
}
to {
transform: translateX(300px);
}
}
.box {
width: 100px;
height: 100px;
background-color: blue;
animation: slide 2s forwards;
}W tym przykładzie:
@keyframesdefiniuje animację o nazwieslide, która przesuwa element z pozycji0do300pxw poziomie.- Właściwość
animationna elemencie.boxuruchamia animację trwającą 2 sekundy i wykonującą się do przodu (forwards), co oznacza, że element pozostaje w nowej pozycji po zakończeniu animacji.
Składnia animation:
animation-name– Nazwa animacji, zdefiniowana w@keyframes.animation-duration– Czas trwania animacji (np.2s).animation-timing-function– Funkcja określająca, jak animacja ma być wykonana (ease,linear,ease-in,ease-out).animation-delay– Opóźnienie przed rozpoczęciem animacji.animation-iteration-count– Liczba powtórzeń animacji (np.infinite,2).animation-direction– Kierunek animacji (normal,reverse,alternate,alternate-reverse).animation-fill-mode– Określa, czy animacja ma zachować stan końcowy po zakończeniu (forwards,backwards).
Przykład: Złożona animacja z @keyframes:
@keyframes colorChange {
0% {
background-color: blue;
transform: rotate(0deg);
}
50% {
background-color: green;
transform: rotate(180deg);
}
100% {
background-color: red;
transform: rotate(360deg);
}
}
.box {
width: 100px;
height: 100px;
animation: colorChange 4s infinite;
}W tym przykładzie animacja colorChange:
- Zmienia kolor tła z niebieskiego na zielony, a potem na czerwony.
- Element obraca się o 360 stopni.
- Animacja trwa 4 sekundy i jest powtarzana w nieskończoność (
infinite).
Kontrolowanie animacji i przejść
transition-timing-function i animation-timing-function:
Funkcje czasowe pozwalają kontrolować, jak szybko lub wolno animacja lub przejście powinny zmieniać wartości w czasie. Oto kilka przykładów:
ease– Domyślna funkcja, która zaczyna się powoli, przyspiesza i na końcu zwalnia.linear– Animacja/przejście odbywa się w stałym tempie.ease-in– Animacja/przejście zaczyna się powoli, a potem przyspiesza.ease-out– Animacja/przejście zaczyna się szybko, a potem zwalnia.ease-in-out– Kombinacja obu, zaczyna się i kończy powoli.
Przykład: Różne funkcje czasowe:
.box1 {
transition: width 2s ease;
}
.box2 {
transition: width 2s linear;
}
.box3 {
transition: width 2s ease-in-out;
}Łączenie animacji i przejść
Możesz także łączyć animacje i przejścia, aby uzyskać bardziej złożone efekty.
Przykład: Łączenie animacji z przejściami:
@keyframes move {
0% { transform: translateX(0); }
100% { transform: translateX(200px); }
}
.box {
width: 100px;
height: 100px;
background-color: blue;
transition: background-color 1s ease;
animation: move 3s infinite alternate;
}
.box:hover {
background-color: red;
}W tym przykładzie:
- Element
.boxzmienia kolor tła na czerwony przy najechaniu myszką (przejście). - Element porusza się poziomo w lewo i prawo w nieskończonej animacji (
infinite alternate).
Praktyczne zastosowania animacji i przejść
CSS Animacje i przejścia są często używane do tworzenia efektów interfejsu użytkownika, takich jak:
- Efekty hover – Animacje przy najechaniu myszką.
- Animowane przyciski – Przycisk, który zmienia rozmiar lub kolor po kliknięciu.
- Animowane ładowanie – Koła ładowania (loading spinners).
- Wprowadzenie tekstu – Stopniowe pojawianie się tekstu na stronie.
Ćwiczenie: Tworzenie animowanego przycisku
Stwórz animowany przycisk, który zmienia kolor i rozmiar po najechaniu myszką oraz stopniowo obraca się o 360 stopni w nieskończonej pętli.
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS Animacje</title>
<style>
.button {
padding: 15px 30px;
background-color: blue;
color: white;
border: none;
cursor: pointer;
transition: background-color 0.3s ease, transform 0.3s ease;
animation: rotateButton 5s infinite linear;
}
.button:hover {
background-color: red;
transform: scale(1.2);
}
@keyframes rotateButton {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
</style>
</head>
<body>
<button class="button">Kliknij mnie</button>
</body>
</html>Gratulacje! Ukończyłeś lekcję 11.
Przejdź teraz do lekcji 12 >> Responsywność i Media Queries
Spis Treści - darmowy kurs HTML i CSS
Podstawy:
Wprowadzenie: Jak przygotować środowisko pracy
Lekcja 1: Podstawowe tagi HTML i struktura dokumentu
Lekcja 2: Formatowanie tekstu, linki i obrazki
Lekcja 3: Listy, tabele i formularze w HTML
Lekcja 4: Wprowadzenie do CSS
Lekcja 5: Rozszerzenie podstawowych właściwości CSS
Zaawansowane:
Lekcja 6: Semantyczne HTML5
Lekcja 7: Zaawansowane formularze w HTML5
Lekcja 8: Multimedia w HTML5
Lekcja 9: Flexbox – Elastyczny układ stron
Lekcja 10: CSS Grid Layout – Potężny system układów
Lekcja 11: CSS Animacje i przejścia (transitions)
Lekcja 12: Responsywność i Media Queries
Lekcja 13: CSS Variables (Custom Properties)
Dodatki:
- Spis tagów HTML
- Spis Właściwości CSS
Jeśli chciałbyś być poinformowany o następnych kursach to zapisz się do naszego newslettera:
