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 tej lekcji opowiem ci o klauzuli Supports i generalnie jak ona wpasowuje się
w te wszystkie rzeczy, które omówiliśmy już teraz w kontekście progressive enhancement, czyli takiego
krok po kroku ulepszania experience'u, który dostarczamy naszym użytkownikom.
Klauzula supports jest bardzo podobna do
klauzuli media, czyli jak tutaj pisaliśmy media queries na zasadzie media screen and max width
200 pikseli, no to na bardzo podobnej zasadzie możemy pisać
klauzule supports; to są tak zwane feature queries. Media queries
to są te elementy, które pozwalają nam dostosowywać treść do danego urządzenia, a
feature queries sprawdzają poszczególne funkcjonalności przeglądarki, czy ona
faktycznie je wspiera. Składnia jest naprawdę podobna,
czyli zamiast media piszemy supports
i jesteśmy w stanie wpisać na przykład display grid.
I w tym momencie, jeśli powiedzmy przeniesiemy tę regułę
z globalnego scope'u do supports, display grid to wtedy ta reguła,
cały blok kodu, zostanie zaaplikowana wtedy, kiedy
ta zależność jest wspierana przez przeglądarkę.
Mamy do tego też dostęp z poziomu konsoli
narzędzi deweloperskich, no i możemy to przetestować tak naprawdę,
jeżeli zapiszemy teraz, no to nasz kod działa jak powinien, ponieważ
mój Google Chrome wspiera grid'a, więc nie ma problemu - ta zasada się aplikuje.
Możemy to sprawdzić poprzez wspomniane wcześniej CSS features
jako rozszerzenie do DevTools'ów.
Jeżeli tutaj odznaczymy grid layout jako wyłączony "Disabled values 'grid'
and 'inline-grid' of the 'display' property", no to zobaczymy jak nasza strona będzie się
renderowała bez tej reguły. Czyli w tym momencie tak naprawdę
ta reguła nie jest aplikowana w ogóle, czyli tak naprawdę tego
kodu w tym momencie nie ma, ponieważ nasza przeglądarka tego nie wspiera.
Tutaj warto pamiętać, że CSS ma z natury własne mechanizmy,
jak już wspominałem o tym w fallback styles'ach,
i nie zawsze jest sens tak naprawdę korzystać z supports.
Czasami wystarczy po prostu w odpowiednim miejscu wkleić blok kodu odpowiedzialny za grid'a,
w innym za flex'a i tak naprawdę automatycznie fallback do flexa pójdzie,
jeżeli CSS grid nie jest wspierany bez klauzuli supports. Natomiast klauzula
supports jest potrzebna wtedy, jeżeli zależy nam na więcej niż jednym selektorze do
stylowania, bądź chcemy sprawdzić kilka funkcjonalności naraz.
W związku z czym oczywiście możemy chainować pojedyncze
właściwości, tutaj odznaczymy sobie to, żeby z powrotem grid nam działał.
Jeżeli chcemy jeszcze bardziej zawęzić wsparcie dla tej reguły
CSS'owej dla tego sektora, no to możemy sobie napisać tutaj and
display, albo nie display tylko po prostu var
green.
Czy po prostu
green, green i w ten sposób sprawdzamy czy custom properties są wspierane
deklarując bądź odczytując jedną z tych wartości, więc po zapisaniu to dalej
powinno nam to działać, wyświetlać się jako grid, ponieważ obie te właściwości są wspierane.
Jeżeli wyłączymy
grid layout, no to oczywiście to przestanie działać. Nie możemy też wyłączyć,
tak mi się wydaje, że to rozszerzenie nam pozwala na to,
niestety nie ma tutaj żadnej szukajki - jest custom properties.
Jeżeli to wyłączymy to faktycznie tutaj to nie zadziałało.
Podejrzewam, że rozszerzenie po prostu nie obsługuje tylu case'ów, ale
jeżeli byście to uruchomili w przeglądarce Internet Explorer czy Safari starsze,
no to generalnie da się to tak samo chainować jak chainujemy media queries.
Co można jeszcze zrobić w supports? No to oprócz wstawiania klucza wartość,
możemy też zanegować całą regułę, czyli jeżeli chcemy aplikować style
w przypadku jeżeli ten feature nie jest wspierany przez CSS'a,
no to możemy zrobić tutaj na przykład jakiś fallback do grid'a, czyli container,
display flex, nie grid.
Flex-wrap, wrap.
I tak naprawdę to powinno wystarczyć.
I w tym momencie jestem ciekaw, czy to rozszerzenie nam tu zadziała.
Ciekawe, że
zepsuły się tu kolorki nam.
Aha, bo wyłączyliśmy oczywiście custom properties.
Display grid wyłączamy i mamy w fallback do flex'a, który nie wygląda identycznie,
ponieważ grid layout tutaj nam deklaruje 6 kolumn o jednakowej szerokości.
Natomiast tutaj we flex'ie z jakiegoś powodu to się nam zawija na pięć.
Prawdopodobnie dlatego, że mamy tutaj tego
scroll'a i tutaj ten gap 0.2rem'a jeszcze tutaj nam troszkę przeszkadza.
W każdym razie też cechą progressive enhancement,
o którym wspomniałem wcześniej, jest to, że tak naprawdę nasza strona nie musi
wyglądać identycznie na wszystkich urządzeniach.
Chodzi o to, żeby
doświadczenie naszego użytkownika, czyli to jak on się czuje odwiedzając
naszą stronę czy aplikacje, spełniały wymagania produktowe a nie żeby było tzw.
pixel perfect czyli faktycznie piksel do piksela.
Kopiowanie Design od tego co dostaliśmy w pliku od dealera.
Natomiast support is not jest o tyle
rozważany jako zła praktyka że nie działa jeżeli nie ma wsparcia dla samego sportu z
którym możemy oczywiście sprawdzić Canal+ Sport.
No i tutaj widzimy że Löwen nie jest wspierana czyli Internet Explorer w wersji
jedenastej nie ma wsparcie tego miał nie będzie ponieważ ta przeglądarka
już zostanie niedługo porzucona przez Microsoft czy np.
Safari do wersji ósmej.
Też tego wsparcia nie ma w związku z czym jeżeli nie ma wsparcia dla support to ta
reguła zupełnie się nie zaopiekuje czyli jeśli nie ma wsparcia dla gnida.
To nie mamy żadnego full backu ponieważ support nie działa.
Czyli cała ta reguła jest tak naprawdę wtedy ignorowane.
Jeżeli nie wspieramy sport i tutaj tak naprawdę inne style mogłyby
nie działać w taki sposób jakbyśmy się tego spodziewali.
Support is not to jedna ze składni CSS z której możemy korzystać.
Jest też oczywiście support lektor
lektor wówczas lektor
i tak naprawdę w tym możemy podać dowolny
sektor CSS ponieważ niektóre sektory nie są dalej wspierane np.
sektor HS jest dalej na bardzo wczesnym stopniu specyfikacji nie ma żadnej
implementacji w przeglądarkach a jest to bardzo przydatny sektor który
być może w przyszłości ułatwi nam pracę frontem.
Ale możemy to tak naprawdę przetestować na
dowolnym sektorze Jeżeli piszemy tutaj Body not.
Klasa czy na przykład kontener.
Co oczywiście się nigdy nie wykona bo na
klasie kontener nie mamy tego elementu czyli klasa element body.
Nie ma na sobie klasy kontener więc tak naprawdę w sumie jeżeli ten sektor byśmy
zablokowali tutaj to powinno nam zawsze wskoczyć.
Czyli Body not kontener czyli teraz to
jest prawda możemy zrobić to na baty Beck Grand.
Powiedzmy szary.
Jeżeli taki serek to jest wspierane no to faktycznie ta reguła jest aplikować
i możemy tutaj wstawić dowolny lakier to
nie musi być not to może być po prostu Body kropka kontener i tak długo jak te
elementy będą wspierane te style się zapisują co jest naprawdę dobre ponieważ
jeżeli będziemy z tych funkcjonalności przeglądarki korzystać dynamicznie np.
za pomocą skryptu jesteśmy w stanie doładować style na żądanie w zależności od
tego jak urządzenie jest rozwinięte czy wspiera Flex czy wspiera
czy teraz jest Custom Properties klauzula support rozwiązuje te problemy.
Natomiast warto pamiętać o tym że nie
zawsze jest ona konieczna ponieważ może to doprowadzić do publikacji kodu np.
jeżeli nie mamy żadnego innego sterowania
w tym przypadku tylko ten kontener Display GRID.
Jeżeli zrobimy sobie support jeszcze raz Display GRID.
To tak naprawdę te dwa zapisy są sobie
równoważne a mamy więcej znaków przesyłanych do przeglądarki które
przeglądarka musi zinterpretować a te dane muszą zostać wysłane w związku z
czym jest to jakiś tam minimalny ale wciąż wpływ na performance naszych stron WWW.
Więc pamiętajmy o support że jest to
bardzo dobre narzędzie do wykrywania różnic między przeglądarką.
Ale nie zawsze trzeba go używać bo po
prostu natura CSS pozwala niektóre rzeczy ominąć.
Jeśli byśmy chcieli przetestować czy support nam działa
w tej przeglądarce bądź innej to faktycznie możemy użyć rozwiązań takich
jak Brothers czy cross Brother think o których wspomniałem w poprzedniej lekcji.