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.
Box model czyli model pudełkowej.
To jedno z takich zagadnień które ja na
początku mojej drogi Web Development czy po prostu chcę się
na pewno ułatwiło mi tworzenie stron internetowych.
Generalnie często jest taka sytuacja że
musimy stworzyć auto na podstawie tego jak designer przygotował nam pliki np.
Photoshopa. Czy teraz bardziej w firmie często jest
tak że musimy tworzyć jakieś karty czy komponenty które mają konkretne wymiary i
mają do tego jakieś margines wewnętrzny margines zewnętrzne i
te wartości modyfikuje za pomocą właściwości parking i marki.
Oczywiście też czasami się zdarza że
musimy zrobić jakieś obramowanie no ale to wszystko musi być zamknięte w danej
szerokości komponentu którą designer tam tutaj podrzucił.
Możemy sobie symulować taką sytuację
piszemy tutaj kolorem są to każdego z elementów.
Może zmniejszymy troszkę ten fon CX
albo nawet całkiem mocno na 0:3 a zobaczymy jak to będzie wyglądało.
To troszkę już za mocno.
Generalnie Remy czy jednostki tego typu będziemy omawiać w kolejnych lekcjach.
Jest bardzo dużo jednostek CSS owych.
Z których możemy jako frontem deweloperzy korzystać.
No powiedzmy że to będzie ok.
takiego piwa sobie trzy razy stworzymy.
Tych dwóch się pozbędziemy.
No i załóżmy że designer nam powiedział że
ten Box ma mieć 200 pikseli ale tutaj z boku z każdego z każdej tych stron
powinien być dodatkowy margines wewnętrzny o szerokości 50 pikseli.
No to sobie to ustawiamy 50 pikseli.
Może zignorowane.
Margines górny i dolny na razie tutaj margines zewnętrzny.
Niech na razie taki będzie.
No i jest OK. Miało być OK.
Natomiast ustaliliśmy na 200 margines na 50 i teraz jak sobie
zbadamy to w narzędziach deweloperskich to zobaczymy że komputer tułów
jest co prawda dwieście ale tutaj możemy jeszcze podejrzeć jaki jest ring Box
właśnie tutaj jeżeli na jednym element to w tym miejscu w takim tempie
pokazuje się szerokość naszego elementu i faktycznie widać że nasz element zajmuje
300 na 100 60 pikseli a nie 200 na 160 pikseli.
Dzieje się to tak ponieważ domyślnie box
model zawiera w sobie zarówno margines wewnętrzny jak i Border
margines zewnętrzny jest ustawiony poza Box modelem.
W związku z czym jeżeli my chcieliśmy w dawnych czasach
stworzyć element który miał 200 szerokości i parking wewnętrzny ustawiony na 50
pikseli musieliśmy ręcznie zdejmować to czyli wiedzieć że z lewej i z prawej
strony będzie margines o takiej wartości czyli tutaj w tym przypadku jest to 50
plus 50 nie jest to taka trudna matematyka czasami jest to oczywiście cięższe no i
musieliśmy od tego całego kontenera odjąć to dwukrotnie.
I wtedy mieliśmy szerokość 100 czyli tak naprawdę żeby mieć
komponent o szerokości 100 przepraszam o szerokości 200 musieliśmy ustawić jego
szerokość na 100 i po prostu parking tam ten element rozszerzał.
Problematyczne byłoby to wtedy przede wszystkim jeśli designer powiedział
że to ma być margines wewnętrzny 50 pikseli ale generalnie ma być tak szeroki
jak tam może być niech zajmuje jak najwięcej miejsca.
Więc jak ustaliliśmy to np.
na 33 proc.
.
No to nasz juz niestety sie nie zgadzał no
bo ponownie mieliśmy tutaj do tych 33 proc.
dodawane 50 pikseli.
Tak naprawdę musielibyśmy używać kalka
którego wtedy jeszcze jako wsparcie było bardzo słabe
i zdejmować sobie to 50 pikseli dynamicznie.
Tutaj w tym przypadku oczywiście 100
pikseli no bo mamy z dwóch stron ten margines
i generalnie nie powinniśmy tego w ten sposób robić na pewno nie w 2020 roku w
drugiej dekadzie dwudziestego pierwszego wieku.
Nie musimy robić tych obliczeń ręcznie.
Możemy wykorzystać tylko właściwość Boxing.
I ustawić ją na Border Fox.
I w tym momencie CSS będzie zupełnie inaczej tworzył nasze elementy to znaczy
będzie automatycznie do tych dwustu pikseli które wcześniej zdefiniował
obejmował szerokość parkingu czy morderca to znaczy jeżeli dodamy border.
O szerokości powiedzmy 10 pikseli to też
bardzo duży może 3 3 piksele Still Solid czyli linia przerywana.
No i kolor Custom Properties ustawiony na zielone.
No to widzimy że te elementy tak naprawdę
nie zmieniają swojej szerokości pomimo tego że dodajemy tutaj nowe właściwości.
Jeżeli połączymy ten.
Border nic się nie zmienia.
Elementy zostają w tym samym miejscu w jakim były ułożone co też bardzo często
jest problematyczne jeżeli musimy stworzyć jakieś Hoover czyli style które.
Są aktywowane po tym gdy jedziemy myszką na dany element.
No to bez Border Box
możemy sobie stworzyć taką symulację Box over.
Importer.
Na trzy piksele Solid jeszcze raz Green.
Musieliśmy to sobie skopiować piszemy.
Jest.
Tak zróbmy tutaj z powrotem stołówkę.
żeby to wyglądało lepiej.
No to po najechali na ten element.
Tutaj chyba nie.
Otworzyło się wszystko dobrze tylko była literówki.
No to widzimy że ten cały lot nam skacze.
Tak naprawdę to tylko przez to że jeden element posiada inną wartość bo orderu.
To jest problematyczne z poziomu
performance u o czym też będziemy mówić później.
Wydajność cesarza jest bardzo ważnym
tematem zwłaszcza w czasach kiedy wyszukiwarki internetowe interpretują
nasze strony by były jak najszybsze wydajniejsze.
To Box Rising Border Box
rozwiązuje nam ten problem ponieważ nasze elementy będą miały taką wartość jakiej
byśmy się spodziewali ustawiając mu wpływ czy na jakąś tam wartość.
No i tak naprawdę tutaj skacze nam
o nie jestem ciekawy dlaczego Podejrzewam że dlatego bo tekst nam się zawija
jakbyśmy pozbyli się tego tekstu w tym miejscu swoją drogą o tekście
też można byłoby mówić bardzo długo będzie o tym dedykowana akcja.
No to widzimy że te elementy już zachowują się w miarę normalnie tzn.
Podświetlane dany element natomiast nie ma
sytuacji że cały leja skacze tylko dlatego że choć kierujemy na jeden z elementów
więc różnica jest taka w liczeniu Box modelu.
Jeśli domyślnie ustawiamy content box na box leasingu no to wtedy parking oraz
Border są dodawane do szerokości i wysokości naszego elementu.
Margines jest pozostawiony zupełnie poza.
Natomiast na wizualizacji często jest umieszczany bo po prostu jest to wygodne.
Tutaj możecie sobie podejrzeć jaką
konkretnie wartość ma któryś z waszych elementów.
To jest właśnie box model i w przypadku Border Box CSS robi za nas
te wszystkie kalkulacje więc jest to po prostu o wiele wygodniejsze i widzimy że
sam automatycznie ustawia szerokość danego elementu na 100.
Pomimo tego że komputer
dalej będzie ustawiony na 200
Box leasing Border Box jest czymś co prawdopodobnie i tak już każdy z Was używa
natomiast prawdopodobnie jest to zamknięte w jakiś CSS receptach czy normalizacji.
Jeśli jednak chcecie dobrze zrozumieć CSS
no to oczywiście box model jest zagadnieniem które warto
znać i mam nadzieję że dzięki tej lekcji jest ono wam mniej obce.
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 {
display: inline-block;
width: 6rem;
height: 8rem;
background: var(--orange);
padding: 0.2rem;
margin: 0.2rem;
box-sizing: border-box;
}
</style>
</body>
</html>Stan końcowy · 8 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>