od Podstaw
9 godz. 11 min · HTML i CSS · Full-stack i Programowanie
Wojciech PołowniakSr. Fullstack EngineerWeb dev nigdy nie stoi w miejscu - włączając w to CSS. Czołowe przeglądarki różną się implementacją różnych funkcjonalności, a coraz to nowe właściwości wchodzące do specyfikacji są w stanie postawić stylowanie do góry nogami. W tym kursie poznasz przegląd różnych technik i technologii które zmienią Twoje patrzenie na CSSa - zdecydowanie na lepsze! Koniec z tworzeniem hacków w JavaScript aby osiągnąć efekty takie jak wykresy kołowe czy płynne przewijanie. Poznasz też różne właściwości CSS które są w stanie przyśpieszyć Twoją witrynę!
Na pewnym etapie rozwoju jako Front-End developer, bądź wraz z rozwojem naszego produktu - standardowe podejście do CSSa może nie wystarczyć. W tym kursie poznasz 5 ciekawych architektur CSSa, poznasz ich podstawowe koncepty oraz moje opinie na ich temat. Dzięki temu, tworząc swój następny projekt, będziesz w stanie stworzyć architekturę CSSa bazując na sprawdzonych fundamentach.
CSS Grid i CSS Flexbox to właściwości które powinien znać każdy Front-end developer. Jeśli nie chcesz spędzać wielu godzin na poznawanie tych technologii z osobna, w tym kursie znajdziesz podstawowe informacje na temat tych dwóch technologii - w pigułce. Poznasz różnice między nimi oraz dowiesz się, co zmieniło się w nich w ostatnim czasie.
Jeśli borykasz się z problemami wydajnościowymi na swojej stronie internetowej, ten kurs wskaże Ci techniki które pomogą Ci zmniejszyć czas ładowania, jak i ogólną wydajność Twojej witryny - czy to początkowe ładowanie, czy klatkująca animacja.
Czy nie wiesz jak zacząć z preprocesorami? Po co są nam one potrzebne? A może nie wiesz jak wpasowują się w obecne trendy tworzenia stron? Ten kurs odpowie na Twoje pytania! Dodatkowo, dowiesz się jak skonfigurować jeden z najbardziej popularnych preprocesorów CSS, oraz poznasz jego kluczowe funkcje czy składnie.Jako dodatek, dowiesz się jak dzielić Twoje zmienne SCSS wraz z Twoim kodem JavaScript!
Animacje CSSowe są już z nami od lat, ale jak konkretnie się za nie zabrać? Co trzeba zrobić, aby rozpocząć przygodę z animacjami? Jeśli nie wiesz, to w zaledwie kilku lekcjach poznasz narzędzia i składnie do tworzenia przejść i animacji ograniczonych tylko przez Twoją wyobraźnię* (i możliwości CSSa)
Aby móc efektywnie korzystać z tego kursu, powinieneś posiadać średnio zaawansowaną wiedzę z kategorii Front End. Przyda się również umiejętność poszerzania pojedynczych zagadnień na własną rękę, ponieważ wiele z poruszanych w tym kursie tematów można by zgłębiać godzinami. Nie zaszkodzi również podstawowa wiedza o JavaScript. Postaram się wprowadzić Cię w różne obszary CSSa potrzebne w codziennej pracy jako Front-End developer. Doświadczeni developerzy znajdą w tym kursie powtórkę najistotniejszych informacji na temat współczesnego CSSa, jak i ciekawe zagadnienia o których często się zapomina.
W tej lekcji będziemy mówili o warstwach.
I nie chodzi tutaj o warstwy które nadchodzą w specyfikacji CSS a o tym
będziemy jeszcze mówili później w tym kursie.
Natomiast chodzi o warstwy w kontekście indeksów.
Generalnie strony internetowe można traktować jako 2 wymiarowej takie płaskie.
Dokumenty na których wyświetlane
poszczególne rzeczy i dopóki jeden element nie chodzi na drugi to jest
to całkiem intuicyjne zwłaszcza jeżeli mamy elementy
po prostu w HTML u na zasadzie że 1 DF jest dzieckiem drugiego i on się wyświetla
jakby wewnątrz niego no to to wszystko jest OK.
Gorzej jeżeli tworzymy jakieś menu albo leje czy dodatkowe
komponenty które mają się pokazywać ponad cały nasz element
interfejsu użytkownika no i wtedy bardzo przydatne jest takie polecenie jak Index
indeks pozwala nam ustawiać elementy w górę lub w dół
tak jakbyśmy pracowali faktycznie na warstwach czyli w tym przykładzie.
Stworzyłem tutaj kilka elementów o klasie
Box no i odpowiednich numerach tak aby można byłoby je jakoś łatwo rozróżnić
i ustawić im różne indeksy one są w
pozycjonowanie absolutnie możecie tutaj wejść do CSS i zobaczyć jak to tutaj jest
zrobione no i generalnie widzicie że Jedynka Trójka i Czwórka.
Zachodzą na siebie
czyli w tym przypadku jedynka jest
najniżej trójka jest nad nią i jej czwórka jest jeszcze nad tą trójką.
Jeżeli byśmy zachowali wszystkie indeksy
możemy tak zrobić dla testu to style wyglądałyby w ten sposób
praktycznie jest to samo więc możemy przywrócić te wartości.
Dlaczego One tutaj są.
I dlaczego tak naprawdę nic się nie
zmieniło ponieważ jeżeli Domyślną wartością indeksu jest zero to
jest wartość wyjściowa tak samo jak w Flex order czy w innych właściwościach tego
typu możemy przesuwać elementy warstwami do tyłu lub do przodu tzn.
Prawidłową wartością dla indeksu jest na przykład minus 1
i jeśli damy na czwarty element set indeks minus 1 to on
nam powinien wskoczyć pod tą trójkę tak no bo mamy tutaj.
Indeks 1.
Natomiast tutaj się tak nie stało.
Spróbujmy może innym przykładem.
Czyli tą samą trójkę ustawiamy na minus 1 i jedynka zostanie na zwierzę.
No i w tym przypadku to faktycznie
zadziałało dlaczego w przypadku czwórki to nie zadziałało zaraz o tym powiem
natomiast jesteśmy w stanie ustawiać elementy.
Wedle ich warstw przy pomocy właściwości
ZET Index i jest to całkiem intuicyjne im mniejszą wartość ma indeks tym niżej w
hierarchii jeżeli byśmy dodali sobie dodatkowe elementy to moglibyśmy pod tą
trójkę jeszcze jakiś element wstawić i trójka by to ukrywała
albo możemy faktycznie zwiększyć tej trójce wartość i wtedy ona się pojawi.
Nad Jedynką pomimo tego że jedynka była zadeklarowana wcześniej.
Nawet w samym RKPb to generalnie chodzi o pozycję w markecie.
Jeżeli indeksy są równe pozycja w markach nie definiuje co jest na wierzchu.
Jeżeli pozycja absolutnie i moglibyśmy tutaj tak naprawdę dowolną
wysoką wartość chyba limitem dla indeksu jest
maksymalna wartość jaką JavaScript może w ogóle przechowywać w pamięci.
Jest taka magiczna zmienna Max Integer
Value i podejrzewam że to jest maksymalna wartość indeksu.
Natomiast tak czy siak jeżeli z indeksów jest więcej niż 20 to
prawdopodobnie już jest coś nie tak z naszym kodem źródłowym ponieważ jesteśmy w
stanie spokojnie tworzyć najbardziej skomplikowane strony przy pomocy naprawdę
niewielu warstw więc złą praktyką jest zdecydowanie dawanie tutaj jakiejś
dziewiąte żeby element wskoczył zwłaszcza że w niektórych przypadkach to nawet nie
zadziała ponieważ jeśli chcielibyśmy tutaj tą jedynkę przepraszam czwórkę przenieść
pod jedynkę no to nieważne jak damy niską wartość to nie zadziała.
Dlaczego do gry wchodzi
taking kontekst czyli jakby kontekst nakładania się na siebie elementów.
Jeśli spojrzymy w kod źródłowy tutaj to
zobaczymy że każdy jeden z boksów jest jakby bezpośrednim dzieckiem.
Ale w przypadku czwórki czwórka jest zagrożona wewnątrz trójki
tzn znaczy że jej indeks jest względny dla tego elementu to znaczy nie jesteśmy w
stanie przenieść czwórki pod jedynkę bez przesuwania trójki pod jedynkę bo
ustawiając trójkę pod jedynkę oczywiście możemy to zrobić ale wtedy czwórka.
Znajdzie się również pod jedynką.
Nie mamy możliwości teraz podbić specyficznej sieci
przepraszam indeksu
na elemencie czwartym tak żeby On przeskoczył ponieważ marka
definiuje właśnie kontekst i nie jesteśmy w stanie tego zrobić.
Najprostszym odejściem byłoby tak naprawdę
przeniesienie tego elementu gdzieś poza kontekst i ustawienie go tak
pozycjonowanie absolutne też ma względne rodzica który ma
pozycjonowanie absolutne o tym też będziemy mówić później.
Więc tutaj musielibyśmy zmienić
style czwórki żeby faktycznie była z powrotem nad tą jedynką.
Natomiast nie zawsze jest to możliwe dlatego jeżeli tworzy się np.
komponent jakiejś PO PAP modele są bardzo częstym przykładem
dla indeksów no bo oczywiście muszą modele być ponad całym naszym elementem
interfejsów użytkownika i wewnątrz tych modeli też często są
jakieś over leje na sobie w związku z czym taki kontekst mógłby wystąpić tutaj jeżeli
to byłby nasz model a tutaj byłby jakiś user Box powiedzmy
i ten juz Box miałby na sobie jakiś tam element pozycjonowania absolutnie np.
bądź nie bądź za pomocą Greena
i chcielibyśmy wyskoczyć tym z boksem po nas.
Ten model no to oczywiście nie będziemy
tego mogli zrobić jeżeli model będzie miał ustawiony indeks.
Generalnie może to brzmieć dosyć skomplikowanie natomiast jeżeli zaczniemy
pracować z indeksami no to na pewno sobie z tym radę ponieważ jest to w miarę
intuicyjne taking kontekst jest jedynym przypadkiem kiedy indeksy nie działają w
sposób taki intuicyjny żeby to sobie lepiej zobrazować.
Ja dawno temu korzystałem z Firefoxa w wersji przed 40 tą szóstą na pewno
bo w 46 tej wersji niestety to zostało usunięte.
Natomiast w tym momencie Microsoft Edge
czyli nowej przeglądarce od Microsoftu która zastępuje
jakby poprzednie poprzedniego aha i Internet Explorera który jest oparty na
chronią mamy taki podgląd trójwymiarowy naszej strony możemy sobie tutaj odświeżyć
i widzimy wybierając tutaj znak elipsy czyli rzeczki.
Jest taki dział i możemy kliknąć 3D View
czyli 3D View pozwala nam podejrzeć jak tak naprawdę będą wyglądały nasze indeksy.
I to jest wizualizacja naszej strony czyli tutaj ten pasek
prezentuje nam ten tekst reset Index no i pojedyncze nasze boksy też mają swój
indeks opisany ten tutaj ma domyślne zero więc to nie jest wyświetlane chyba że
ten element ma tutaj opisane że indeks to jest nasze.
Nasza dwójka jest tutaj domyślnie te
elementy które nie mają jawnie deklarowanego indeksu nie są wyświetlane
natomiast jesteśmy w stanie w
trójwymiarowy sposób podejrzeć który element jest pod którym jest to naprawdę
bardzo fajne narzędzie to narzędzie Firefox było o wiele mniej wydajne.
I tutaj duży plus dla Microsoft
Edge i dla tej części narzędzi deweloperskich tej przeglądarki
Chrome nie ma takiej właściwości więc jeżeli chcielibyście sobie dywagować
indeksy w ten sposób no to tylko w tym momencie mecz jest dostępny.
No i widzimy że elementy które mają wyższy
indeks są jakby powyżej pozostałych to znaczy tu jest nasz cały
element całe nasze baby moglibyśmy sobie stworzyć tak naprawdę jakiś element
pod spodem żeby widzieć że to jest początek naszej strony.
No i tutaj każdy z tych elementów możemy sobie w ogóle zaznaczyć i zobaczyć który
element na stronie ma jakąś wartość indeksu.
Co prawda kontekst nie jest tutaj
reprezentowany natomiast ciężkie byłoby to po prostu do.
Przedstawienia wizualnie
do tego po prostu jest pokazywane tak jak one się generują na stronie że trójka
żółta jest pod spodem jedynki tak samo jak czwórka.
Natomiast czwórka jest wyżej tej naszej dwójki.
Bardzo fajne narzędzie polecam się z nim pobawić zwłaszcza jeżeli nie jesteś
jeszcze zaznajomić się z indeksami a także jeżeli
zdarza ci się na stronie że twój element gdzieś tam wyjeżdża zwłaszcza jak tworzysz
style Response pod daną rozdzielczość ekranu.
Może się zdarzyć że czasami element
wyjeżdża poza port i ciężko to zobaczyć w tym narzędziu będziesz to widział oraz
będziesz wiedział jaki dany element ma zasięg.
Dlatego polecam konkretnie w tym przypadku Microsoft.
Szczerze mówiąc to jest chyba jedyne
narzędzie którego używam w Microsoft Edge u ale też na tyle że indeks jest prosty do
pracy że najlepsze narzędzie będzie tak naprawdę przy dywagować o innych problemów
z autem bądź po prostu poznawania indeksów i całej ich logiki.
https://blogs.windows.com/msedgedev/2020/01/23/debug-z-index-3d-view-edge-devtools/
Stan początkowy · 1 min
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Advanced CSS</title>
<link rel="stylesheet" href="base.css">
<link href="https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400&display=swap" rel="stylesheet">
</head>
<body>
<h1>Box model</h1>
<div class="box">
</div>
<div class="box">
</div>
<div class="box">
</div>
<style>
.box {
font-size: 0.8rem;
display: inline-block;
width: 200px;
height: 8rem;
background: var(--orange);
padding: 0 50px;
/* border: 3px solid var(--green); */
box-sizing: border-box;
margin: 0.2rem;
}
.box:hover {
border: 3px solid var(--green);
}
</style>
</body>
</html>Stan końcowy · 6 min
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Advanced CSS</title>
<link rel="stylesheet" href="base.css">
<link href="https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400&display=swap" rel="stylesheet">
</head>
<body>
<h1>Box model</h1>
<div class="box">
</div>
<div class="box">
</div>
<div class="box">
</div>
<style>
.box {
font-size: 0.8rem;
display: inline-block;
width: 200px;
height: 8rem;
background: var(--orange);
padding: 0 50px;
/* border: 3px solid var(--green); */
box-sizing: border-box;
margin: 0.2rem;
}
.box:hover {
border: 3px solid var(--green);
}
</style>
</body>
</html>