Kurs HTML i CSS · Moduł 3: Podstawy CSS
Transformacje CSS
Funkcja translate() w CSS jest częścią rodziny transformacji i umożliwia przesunięcie elementu wzdłuż osi X (poziomej) i/lub Y (pionowej) bez wpływu na inne elementy. Jest to jedna z najbardziej przydatnych funkcji do dokładnego pozycjonowania elementów.
1. Jak używać translate w CSS?
Funkcję translate() wpisujesz we właściwości transform; nowsze przeglądarki mają też osobną właściwość translate, np. translate: 50px 100px;. Na przykład:
div {
transform: translate(50px, 100px);
}W tym przypadku <div> zostanie przesunięty o 50 pikseli w prawo (wzdłuż osi X) i o 100 pikseli w dół (wzdłuż osi Y - w CSS dodatnie wartości na tej osi przesuwają element w dół).
2. Przesunięcie wzdłuż jednej osi
Możesz także przesunąć element tylko wzdłuż jednej osi, używając translateX lub translateY. Przykłady:
/* Przesunięcie tylko wzdłuż osi X */
div {
transform: translateX(50px);
}
/* Przesunięcie tylko wzdłuż osi Y */
div {
transform: translateY(100px);
}3. Procenty jako jednostki
Funkcja translate może również przyjmować procenty jako jednostki, co pozwala na przesunięcie elementu względem jego własnej szerokości lub wysokości. Na przykład:
div {
transform: translate(10%, 20%);
}Tutaj element zostanie przesunięty o 10% swojej szerokości i 20% swojej wysokości.
4. Łączenie z innymi transformacjami
translate można łączyć z innymi transformacjami, takimi jak rotate, scale i skew, aby osiągnąć złożone efekty. Na przykład:
div {
transform: translate(50px, 100px) rotate(30deg) scale(1.2);
}Kolejność funkcji ma znaczenie: zamiana miejscami translate i rotate da inny efekt.
5. Inne transformacje
Translate to tylko jedna z wielu transformacji, które można stosować do elementów HTML. Inne transformacje to:
scale(sx, sy): Skaluje element, gdzie sx to skala wzdłuż osi X, a sy wzdłuż osi Y. Jeśli podana jest tylko jedna wartość, obie osie są skalowane jednakowo.
scaleX(sx): Skaluje element wyłącznie wzdłuż osi X.
scaleY(sy): Skaluje element wyłącznie wzdłuż osi Y.
rotate(angle): Obraca element o określony kąt, podany w stopniach (deg), radianach (rad), gradach (grad) lub obrotach (turn).
skew(x-angle, y-angle): Pochyla element o określone kąty wzdłuż osi X i Y. Jeśli podany jest tylko jeden kąt, drugi kąt jest domyślnie ustawiony na 0.
skewX(angle): Pochyla element tylko wzdłuż osi X.
skewY(angle): Pochyla element tylko wzdłuż osi Y.
matrix(a, b, c, d, e, f): Pozwala na zastosowanie transformacji za pomocą macierzy transformacji 2D. Jest to bardziej zaawansowana technika, która umożliwia kombinację wielu transformacji w jednym wyrażeniu.
matrix3d(...): Analogicznie do matrix, ale dla transformacji 3D. Umożliwia zastosowanie macierzy transformacji 3D, co jest jeszcze bardziej zaawansowaną techniką.
rotateX(angle): Obraca element wokół osi X w przestrzeni 3D.
rotateY(angle): Obraca element wokół osi Y w przestrzeni 3D.
rotateZ(angle): Obraca element wokół osi Z w przestrzeni 3D.
scale3d(sx, sy, sz): Skaluje element w przestrzeni 3D.
translate3d(x, y, z): Przesuwa element w przestrzeni 3D.
perspective(n): Stosuje perspektywę do elementu 3D. Jest często używana w połączeniu z transformacjami 3D, aby osiągnąć efekt głębi.
Ćwiczenie: Transformacje CSS
W tym ćwiczeniu nauczysz się, jak używać różnych transformacji CSS, aby przesuwać, obracać, skalować i pochylać elementy na stronie. Twoim zadaniem będzie utworzenie strony internetowej z różnymi elementami, które będą stylizowane za pomocą transformacji CSS.
Krok 1: Stwórz podstawową strukturę dokumentu HTML
Najpierw stwórz nowy plik HTML i dodaj podstawową strukturę dokumentu HTML. Dodaj elementy <div> z klasami dla różnych transformacji w ciele dokumentu (<body>).
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="styles.css"> <!-- Podłącz plik CSS -->
<title>Transformacje CSS</title>
</head>
<body>
<h1>Transformacje CSS</h1>
<div class="box translate">Translate</div>
<div class="box translate-x">TranslateX</div>
<div class="box translate-y">TranslateY</div>
<div class="box rotate">Rotate</div>
<div class="box scale">Scale</div>
<div class="box skew">Skew</div>
</body>
</html>Krok 2: Stwórz plik CSS
Otwórz lub utwórz nowy plik CSS i zapisz go jako styles.css.
Krok 3: Stylizacja podstawowa
Dodaj podstawowe style dla elementów <div>, aby były widoczne na stronie.
body {
display: flex;
flex-wrap: wrap;
gap: 20px;
}
.box {
width: 100px;
height: 100px;
background-color: lightblue;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
font-size: 14px;
font-weight: bold;
margin: 20px;
}Krok 4: Transformacja translate
Dodaj styl dla klasy .translate, aby przesunąć element wzdłuż obu osi.
/* Transformacja translate */
.translate {
transform: translate(50px, 100px);
}Krok 5: Transformacja translateX
Dodaj styl dla klasy .translate-x, aby przesunąć element tylko wzdłuż osi X.
/* Transformacja translateX */
.translate-x {
transform: translateX(50px);
}Krok 6: Transformacja translateY
Dodaj styl dla klasy .translate-y, aby przesunąć element tylko wzdłuż osi Y.
/* Transformacja translateY */
.translate-y {
transform: translateY(50px);
}Krok 7: Transformacja rotate
Dodaj styl dla klasy .rotate, aby obrócić element.
/* Transformacja rotate */
.rotate {
transform: rotate(45deg);
}Krok 8: Transformacja scale
Dodaj styl dla klasy .scale, aby skalować element.
/* Transformacja scale */
.scale {
transform: scale(1.5);
}Krok 9: Transformacja skew
Dodaj styl dla klasy .skew, aby pochylić element.
/* Transformacja skew */
.skew {
transform: skew(20deg, 10deg);
}Wynik
Po wykonaniu wszystkich kroków twój plik HTML i CSS powinny wyglądać następująco:
Plik HTML (index.html)
Cała strona z kroku 1, bez zmian:
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="styles.css"> <!-- Podłącz plik CSS -->
<title>Transformacje CSS</title>
</head>
<body>
<h1>Transformacje CSS</h1>
<div class="box translate">Translate</div>
<div class="box translate-x">TranslateX</div>
<div class="box translate-y">TranslateY</div>
<div class="box rotate">Rotate</div>
<div class="box scale">Scale</div>
<div class="box skew">Skew</div>
</body>
</html>Plik CSS (styles.css)
Wszystkie reguły z kroków 3-9 w jednym pliku:
body {
display: flex;
flex-wrap: wrap;
gap: 20px;
}
.box {
width: 100px;
height: 100px;
background-color: lightblue;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
font-size: 14px;
font-weight: bold;
margin: 20px;
}
/* Transformacja translate */
.translate {
transform: translate(50px, 100px);
}
/* Transformacja translateX */
.translate-x {
transform: translateX(50px);
}
/* Transformacja translateY */
.translate-y {
transform: translateY(50px);
}
/* Transformacja rotate */
.rotate {
transform: rotate(45deg);
}
/* Transformacja scale */
.scale {
transform: scale(1.5);
}
/* Transformacja skew */
.skew {
transform: skew(20deg, 10deg);
}Eksperymentuj dalej
- Dodaj więcej elementów z różnymi transformacjami, aby lepiej zrozumieć, jak działają różne transformacje.
- Spróbuj dodać więcej stylów do swojej strony, np. zmieniając kolory, rozmiary i inne właściwości CSS.
- Przetestuj swoje umiejętności, tworząc bardziej złożone efekty z użyciem różnych kombinacji transformacji.
Po wykonaniu tego ćwiczenia powinieneś lepiej rozumieć, jak używać różnych transformacji w CSS, aby przesuwać, obracać, skalować i pochylać elementy na stronie.
Hasła z dokumentacji w tej lekcji
Widzisz błąd w tej lekcji?
Sprawdź się
Odpowiedz na pytania z tej lekcji. Wybierz odpowiedź, a od razu zobaczysz, czy jest poprawna.
1. Która właściwość CSS pozwala przesuwać, obracać i skalować elementy?
2. Co robi transform: rotate(45deg)?
To 2 z 3 pytań do tej lekcji. Pozostałe rozwiążesz w grze.
Zadania praktyczne w grze
- Układanie w poziomie
Ułóż deklarację przesuwającą element o 50px w prawo i 100px w dół: