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.
Cześć!
W poprzedniej lekcji omówiliśmy pokrótce problematykę osi we flex boksie.
No i w tym momencie możemy przejść do
relacji między elementami w kontekście ich rozmiarów.
Są dwie dodatkowe właściwości Flex boxa, o których jeszcze nie wspomniałem.
Mianowicie Flex scroll i Flex Swing.
Możemy tutaj je zostawić i komentować.
Na razie.
Flex Shipping.
I tak naprawdę nawet nie komentując ich.
Nasz layout nie będzie się domyślnie zmieniał.
Możemy tutaj wpisać dosłownie cokolwiek i te wartości.
Pozornie nie zmieniają nam nic.
Jeżeli wszystkie nasze elementy się mieszczą.
I to jest właśnie ten kluczowy element.
Bo jeżeli na flex grow
ustawimy na pojedynczym elemencie, nie na kontenerze, to jest tutaj pierwszy błąd.
Wszystkie Flex Group i Flex.
Spinki musimy ustawić na elementach Flex,
a wtedy faktycznie będziemy wpływać na ich zachowanie.
Domyślnie Flex Group ma wartość 0.
Flex Link ma wartość 1
i to też działa podobnie na zasadzie relacji tak jak set index.
Czyli jeśli wszystkie elementy mają
domyślnie tę samą wartość, to tak naprawdę nie będziemy widzieli żadnej różnicy.
Ale jeśli na pojedynczym elemencie np.
ustawimy sobie container.
Container div.
N filtr.
Niech to będzie czwarty element
i ustawiona nim flex grow 1, to zobaczymy, że w tym danym wierszu ten
element się rozszerzył, ale stało się to tylko w tym jednym wierszu.
To warto zauważyć.
Czyli im mamy mniej elementów w tym
wierszu, tym ten element będzie teoretycznie szerszy
i będzie jakby się rozciągał pomimo tego, że zadeklarowaną minimalną szerokość ma
mniejszą i jeśli ustawimy to też na innym elemencie.
Czyli połączymy sobie te dwie
reguły, te dwa selektory, tak aby ten sam kod się wykonywał, to
zobaczymy, że dwójka i czwórka faktycznie są większe niż pozostałe.
Co warto zauważyć, to nie jest to
relacja na zasadzie, że jeśli ustawimy flex grą 2 czy 1.
Na elemencie powiedzmy nawet na wszystkich elementach.
Tutaj możemy ustawić flex na 1 i wtedy flex grał na 2,
na drugim i czwartym to oczywiście wszystkie elementy będą się rozszerzać.
Natomiast nie znaczy to, że ten element będzie dwa razy większy.
Flex i Flex 3 operują na dostępnej przestrzeni, to znaczy jeśli pozbędziemy
się tych deklaracji z tych dwóch miejsc, mamy tutaj jakąś dostępną przestrzeń.
Ta przestrzeń jest dystrybuowana poprzez tutaj line items czy content.
Jeżeli byśmy je ustawili,
ustawiając tutaj background na jakiś share, widzimy faktycznie dostępną
przestrzeń w danym kontenerze, czyli cały szary box.
To jest dostępna przestrzeń w tym flex systemie flex kontenerze.
Już trzymając się nomenklatury, którą narzuciłem wcześniej, czyli.
Jeśli element drugi.
Będzie miał Flex Grow 1, to będzie on mógł
wziąć tylko tyle przestrzeni ile tutaj jest wolne, bo Flex Grow
rozszerza nam elementy wzdłuż main axis wzdłuż Cross Axis.
Do tego używamy Lime Content i Stretch czy Elite Items i stretch.
Czy jak to zapiszę, to drugi element
rozciągnął się tylko o tyle, o ile pozwoliło mu na to dostępna przestrzeń.
Czyli nie jest to na tyle relacja, ile coś ma być dwa razy większe od czegoś.
Tylko ile razy więcej przestrzeni powinno przejmować?
Czyli w tym przypadku, jeśli zrobimy to
dla dwóch elementów i ustawimy flex grow H1.
Wszystkie inne elementy mają flex grał 0, czyli w ogóle nie rosną, to.
Ta przestrzeń zostanie równo roz roz dystrybuowana pomiędzy te dwa elementy.
Co interesujące,
ta dostępna przestrzeń jest też limitowana poprzez marginesy, czyli jeśli każdy z
tych elementów będzie miał margines, ustawimy tutaj margin
jakiś malutki, bo jeżeli damy duży, to faktycznie nic tutaj nie będzie widać.
Ustawimy na zero, a zobaczymy jak to będzie wyglądać.
No może troszkę za mało powiedzmy 1 albo 2.
Na to już jest chyba za dużo.
Na pewno jest to na tyle dużo, żeby elementy wychodziły poza sam grid
container, ponieważ one mają statyczną wysokość, tak samo jak statyczną.
Wysokość ma sam container.
Jak to zrobimy auto, to oczywiście to już będzie zrównane.
Natomiast.
I w tym momencie mamy jeszcze mniej
dostępnej przestrzeni niż mieliśmy wcześniej, ponieważ.
Tutaj ta dostępna przestrzeń.
Ona została zajęta przez te elementy i faktycznie teraz nawet widać, że ten
element jest dłuższy od tego o połowę tego.
Po prostu mamy. To jest cała nasza dostępna przestrzeń.
Ona jest dzielona na wszystkie elementy, które mają się rozszerzyć, ale
deklarując margines, ta przestrzeń jeszcze się zmniejszy.
Czyli tutaj tak naprawdę.
To jest cała dostępna przestrzeń dla tego wiersza.
Więc jeśli ustawili byśmy to dla
elementu numer 5, to ten element rozszerzy się tylko o tyle, o ile może.
Odejmując od tego tutaj ten pomarańczowy margines, który znamy z box modelu,
czyli dostępna przestrzeń dla tego elementu 5 To tylko tyle.
Od pomarańczowego marginesu do końca tego szarego boxu.
Możemy to zapisać i przetestować.
No i faktycznie rozszerzył się tylko o tyle.
Co ciekawe, jeśli w danym wierszu.
Nie będzie drugiego elementu i ustawimy tutaj flex grow na 5.
To nic się nie zmieni, ponieważ w tym
danym wierszu jest tylko jeden o tej właściwości jaką jest flex.
Natomiast jeśli.
Zostawmy tego faktora.
Natomiast jeśli w jednym wierszu będą dwie właściwości, czyli tutaj dwójka
i czwórka będą miały różne wartości flex scroll.
Tutaj ME2 to faktycznie ta dwójka jest w
tym momencie większa od czwórki i jest większa w stosunku dwa do jednego,
czyli jakby cała dostępna przestrzeń, która tam była
faktycznie dostępna do tego konkretnego wiersza została podzielona na trzy.
Ponieważ to jest suma wszystkich naszych
flag strof i dwie trzecie z tego zabrała dwójka, a jedną trzecią czwórka.
Tak działa Flex i na bardzo podobnej zasadzie działa też flex Blink.
O co chodzi?
Flex tricku jakby flex Swing działa wtedy, kiedy nie możemy już
bardziej zwinąć naszego portu, aby wyświetlić mniej elementów.
Swoją drogą Flex pozwala na tworzenie bardzo ciekawych layoutów.
W prosty sposób możemy ustawić teraz wszystkiemu
flex na 1, żeby to tak się nam ładnie rozszerzyło i to sobie komentujemy.
Zapiszemy i teraz mamy ładne, równe elementy.
Możemy też.
Ustawić może troszkę większą szerokość.
Tych elementów. Jakby tutaj to zrobić?
Menu WF możemy ustawić na. W 100%.
Zobaczymy co z tego będzie.
Aż sam jestem ciekaw.
No i oczywiście tutaj ten element wychodzi.
Nam wychodzi nad sam kontener flexa szary, ponieważ mamy
tutaj też margines, więc możemy się go pozbyć.
Chyba że zostawimy margines dolny.
Margin bottom Zero Warrena.
No i wtedy będziemy mieli faktycznie widać różnicę między wierszami.
I teraz różnica jest taka, że flex string
ustawiając na danym elemencie każdy element domyślnie ma flex linka,
to znaczy każdy element poniżej pewnej rozdzielczości będzie się nam zwierzał.
Najłatwiej to sprawdzić pozbywając się tutaj Flex Rep.
I w tym momencie każdy z tych elementów będzie miał taką szerokość i one są
faktycznie węższe niż to, co było zadeklarowane w nich.
Jeśli ustawimy na każdym elemencie flex String.
Na zero, to prawdopodobnie nam się to nie zmieści.
Sprawdźmy jak to będzie wyglądać.
Oczywiście to nam wychodzi teraz poza Word całkowicie, ale jesteśmy w stanie teraz
postawić na tych elementach, które tutaj chcieliśmy.
Flex String z różnymi wartościami.
Ja sobie tutaj to command na maku do pliku.
Kursor na moje zaznaczenie i edytuję kilkukrotnie kilka linijek naraz.
No i jeśli ustawimy na różnych elementach
flex string na różne wartości, to on faktycznie będzie się zmniejszał z różną.
Częstotliwością.
Można to też odwrócić, czyli nie usuwać flag stringa z każdego z
elementów, ale wyłączyć flex licznika na jednym z nich.
I w tym momencie każdy jeden element będzie się zwyciężał w zależności od.
Dostępnego z suportu czy tak naprawdę
dostępnej przestrzeni w naszym przypadku w naszym przypadku importu.
Oprócz tej piątki ta piątka, niezależnie
od tego jaką mamy tutaj szerokość, zawsze będzie miała 120 pikseli szerokości.
Rozszerzamy.
Piątka dalej ma 120 pikseli, natomiast
jedynka teraz ma 66 i 22, a teraz będzie miała 27 K1.
Więc podsumowując to w skrócie Flex
pozwala nam rozszerzać elementy wzdłuż danego wiersza.
W przypadku gdy jest dostępna przestrzeń.
Dostępną przestrzeń zajmują elementy takie jak.
Generalnie model pudełkowy danego
elementu HTML, czyli włączając w to padding, border, margines i tylko tyle ile
jest przestrzeni zajętej i tylko tyle flex może zabrać.
I nie jest to relacja rozmiarów, a relacja
tego, jak dużo przestrzeni zostaje zajęte przez te elementy wobec siebie.
Ten przykład z podziałem
tutaj na 3 elementów gdy mieliśmy Flex Grow 1 i Flex Grow 2.
Że dwójka bierze wtedy dwie trzecie całości, a jedynka jedną trzecią.
Był chyba najbardziej prosty do zrozumienia.
A flex String aktywuje się tylko i
wyłącznie wtedy, kiedy nie ma miejsca na więcej elementów do renderowania.
Czyli mamy wąski port, to możemy na danym elemencie flexa wyłączyć flex
czujnika tak aby on pozostawał zawsze tej samej szerokości.
To jest przydatne np.
dla ikonek czy do innych elementów, które powinny mieć ten sam rozmiar paska.
A flex Swing może zostać zaaplikowany do pola tekstowego, które powinno się
zmniejszać wraz z zmniejszaniem się okna przeglądarki.
Jeśli to zagadnienie
jest dla Ciebie trudne, odsyłam Cię do kursu CSS Flex Box,
a w następnej lekcji omówię problemy oraz zalety Flex Boxa w kontekscie do
innych metod pozycjonowania elementów na stronie.