Poznaj Techniki Pracy z UI w Figma
4 godz. 34 min · Figma · UI, UX i Webdesign
Mariusz CzepiecTen kurs jest świetnym rozwiązaniem nie tylko dla początkujących ale również dla osób, które już od jakiegoś czasu pracują w branży. Unikalne połączenie tematów jest doskonałą okazją do nauki nowych praktycznych umiejętności, a także do uporządkowania wiedzy i podniesienia swoich umiejętności na kolejny poziom. Jedyne czego potrzebujesz to podstawowa umiejętność obsługi Figmy.
Najwyższa pora, aby nasze atomy, molekuły
i organizmy ułożyć w pierwszy szablon, w template.
Na tym etapie projektu tworzymy szkielet strony.
Układamy wcześniej przygotowane moduły w odpowiedniej strukturze
ustalonej przez makietę funkcjonalną stworzoną przez zespół UX.
Natomiast na tym etapie wciąż jeszcze nie uzupełniamy strony contentem.
To robimy na ostatnim etapie metodologii
Atomic Design, czyli tworzenia pages, stron.
Template podobnie jak atomy czy
organizmy, jest elementem, który może być wielokrotnie reużywany w projekcie.
Przykładem może być strona artykułu czy karta produktu.
I chociaż jest takim elementem reużywalnym,
to przyjmuje się, że atomy, molekuły i organizmy są elementem systemu,
a template, podobnie jak strona jest już elementem produktu, ponieważ z tego samego
design systemu może powstawać parę różnych produktów,
stąd template'y nie są bezpośrednio
elementem systemu, chociaż są reużywalnymi elementami.
OK. Zacznijmy od pierwszego elementu
w naszym layoucie, będzie to header naszej strony.
Jak już się pewnie domyślasz template też będzie autolayout'em,
dlatego od razu klikam shift A na klawiaturze i zamykam mój header
w autolayout. Dopasuje sobie padding'i
horyzontalne i wertykalne w taki sposób, aby miały one wartość 0.
Oczywiście dla porządku zmienię nazwę całego autolayout'u
na home page.
Upewnię się również, że moja strona będzie miała
biały kolor tła oraz ustawie odpowiedni layout grid dla strony.
W moim przypadku
dla desktopu będzie to grid 12 kolumnowy z marginesem 48 pixeli oraz
przestrzenią między kolumnami, gutter'em 24 pixele i cały autolayout
typ ma ustawiony na stretch.
Dodatkowo, żeby odpowiednio sobie układać elementy w pionie.
Stosuję również poziomy grid
i tu mam ustawione wysokość wiersza i gutter na 8 pixeli.
Ilość jest ustawiona na auto.
Dzięki temu w miarę tego jak będę powiększał swój projekt,
jak on będzie coraz wyższy, kolejne linie siatki będą automatycznie dodawane.
Tu się pojawia pytanie: po co nam grid
skoro za skalowanie i zachowanie, rozmiar elementów odpowiada autolayout?
Siatka wciąż jest nam potrzebna.
To siatka pomoże nam układać elementy na scenie.
Jeżeli będziemy chcieli ułożyć jeden moduł obok drugiego lub 3, 4 moduły obok siebie
lub też odpowiednio w pionie, to siatka będzie pomagała nam podjąć decyzję
projektową jakich rozmiarów powinny być te moduły lub podjąć decyzję jaka powinna
mieć między tymi modułami przestrzeń, jaki powinien być gap.
Nawet nasz moduł header'a ma specjalnie
dodany lewy i prawy czyli horyzontalny padding wartości 48 pixeli, czyli
dokładnie taki sam jaki jest margines w gridzie.
Dodam teraz kolejny moduł poniżej.
Będzie to moduł tekstowy.
Dzięki temu, że cały home page jest
autolayout'em, moduł automatycznie wskoczył nam pod header,
nie muszę go ręcznie ustawiać, ponieważ moduł zaprojektowałem w taki
sposób, że również on posiada horyzontalny padding szerokości 48 pixeli.
Zawartość tego modułu układa się nam pięknie w grid, czyli mamy 48 marginesu.
Pole tekstowe wypełnia połowę modułu.
Drugie pole tekstowe również wypełnia połowę modułu i potem mamy margines.
Natomiast nie do końca mi się podoba to,
że to drugie pole tekstowe zaczyna się tak dokładnie w środku layout'u.
Chciałbym, żeby ono siedziało ładnie w
gridzie zarówno jedno pole tekstowe, jak i drugie.
Więc zaznaczam sobie cały moduł i sprawdzam w autolayout'cie.
Jak jest ustawiony gap?
A gap jest ustawiony na auto.
Więc teraz zmieniam gap na 24 pixele,
czyli dokładnie tyle ile wynosi gutter w moim gridzie.
Teraz oba pola tekstowe są dokładnie dopasowane do siatki.
Wypełniają 6 kolumn.
Zarówno pole tekstowe subheadline jak i pole tekstowe
na treść, wypełniają po 6 kolumn mojego grid'u,
więc warto po dołożeniu każdego kolejnego modułu do naszego layout'u
sprawdzić jak on dopasowuje się do siatki i dokonać ewentualnych korekt.
Ja dodałem już wszystkie moduły do naszego layout'u.
Dzięki temu, że cały układ zbudowany jest
za pomocą autolayout'u, mogę w bardzo szybki sposób zmieniać kolejność modułów.
Wystarczy, że zobaczę moduł tekstowy bezpośrednio pod header'em i jeżeli chcę go
przerzucić niżej wystarczy, że nacisnę strzałkę w dół.
Jeżeli chcę jakiś moduł przerzucić wyżej,
wystarczy, że go zaznaczę i kliknę strzałkę w górę.
Natomiast nadrzędną wartością korzystania z autolayout'u przy tworzeniu układów
strony jest to, że nasza strona będzie responsywna.
Sprawdźmy zatem jak zostały ustawione poszczególne autolayout'y oraz jakie
wartości horizontal resizing mają poszczególne moduły.
Nasz główny autolayout home page
ma ustawiony kierunek autolayout'u na pionowy.
I to się zgadza.
Natomiast horizontal resizing ma ustawiony na hug contents, tzn.
obejmuje wszystko to co jest w środku.
Z kolei mój pierwszy moduł, czyli header ma ustawioną
szerokość na 14 tysięcy 89 pixeli i
horizontal resizing ma ustawiony na fixed, podobnie moduł poniżej.
Zobaczymy jak się będzie zachowywała strona jak będę chciał ją przeskalować.
Strona się powiększa, siatka zgodnie z ustawieniami się rozciąga.
Natomiast z modułami nie dzieje się zupełnie nic.
Natomiast ponieważ już zacząłem skalować
całe główne autolayout home page, automatycznie z hug zmienił on się na fixed.
To już wiemy.
No dobrze, to teraz co powinniśmy zrobić?
Powinniśmy zmienić horizontal resizing we wszystkich modułach w taki sposób, aby był
ustawiony na fill container, czyli aby wypełniał całą naszą stronę.
Sprawdźmy jak teraz będzie zachowywał się autolayout?
Super header i moduł poniżej i wszystkie inne moduły,
skalują się. OK.
Natomiast chciałbym w jakiś sposób jeszcze panować nad tym, jak strona się skaluje.
Przygotowałem sobie na tę okoliczność odpowiednią variable,
która odpowiada za maksymalną szerokość strony.
Jest to 1600 pixeli, czyli nie chciałbym, aby powyżej tej wartości strona się
skalowała, a dodatkowo chciałbym, żeby ta strona miała domyślnie 1440 pixeli.
Sprawdźmy jak zachowują się inne sekcje w naszym projekcie.
OK. Tu mamy moduł, który nie wygląda tak, jak bym sobie tego życzył.
Jest to moduł z opcją zakupu jakiegoś produktu.
Ten moduł cały to autolayout.
Direction ustawione jest na wrap, czyli wszystkie elementy w tym module jeżeli
zabraknie miejsca będą przeskakiwać jeden pod drugi i to działa jak należy.
Natomiast chciałbym żeby te moduły
wypełniały w jakiś ciekawszy sposób całą szerokość strony,
więc sprawdzam jak ustawione mają parametr horizontal resizing i jest to fixed.
I tu warto zwrócić uwagę na to, że
podobnie jak w przypadku header'a czy tego modułu z tekstem, który mamy poniżej.
Tam też również była wartość horizontal resizing ustawiona na fixed.
Tak się dzieje zawsze, kiedy bierzemy
jakiś element z naszego design systemu, ponieważ wszystkie elementy
jeżeli nie są w layout'cie, do którego mają się dopasować, a leżą gdzieś
w naszym design systemie, to one po prostu nie wiedzą jaką mają mieć szerokość, więc
mają tą domyślną szerokość, którą im nadaliśmy w trakcie ich projektowania.
To dopiero po przeniesieniu
do odpowiedniego elementu w layout'cie możemy im powiedzieć w jaki sposób mają się
zachowywać, czy się mają dopasować do szerokości tego layout'u, czy mają pozostać
w swoim tym domyślnym stanie, czyli fixed, czy może mają dopasować content wewnątrz.
I to jest ten moment, kiedy powinniśmy to te czynności wykonać z naszym modułem.
Więc ja bym chciał, żeby te trzy kafelki wypełniały szerokość całego modułu.
Czyli zmieniam horizontal resizing na fill container.
I teraz to wygląda tak, jak bym sobie tego życzył.
Natomiast sprawdźmy jak to działa w przypadku skalowania?
No i nie wygląda to dobrze, ponieważ
na tak wąskich kafelkach nie zaprezentuje żadnych informacji.
To wszystko się tutaj trochę rozsypuje.
Tzn., że powinienem tym kafelku dodać minimalną szerokość.
Czyli wchodzę w ustawienia kafelków dodaje add minimum
width.
Oczywiście na to mam już przygotowaną odpowiednią variable.
Może zmienimy minimum width
375 pixeli. OK.
I sprawdźmy jak teraz zachowuje się ta sekcja.
Jest OK. Czyli w trakcie skalowania, kiedy
miejsca już jest za mało, 2 kafelki pozostają na górze, wypełniają
całą szerokość, a jeden kafelek spada sobie poniżej.
W ten sposób powinniśmy sprawdzić cały
layout, aby upewnić się, że wszystkie moduły są odpowiednio przygotowane.
O tu mamy kolejne,
ponownie.
Mamy autolayout, który ma ustawiony horizontal resizing na fill container.
Natomiast tu chciałbym zwrócić uwagę, aby dokładnie sprawdzać zagłębienie
autolayout'ów, ponieważ w głównym autolayout'cie home page mamy autolayout,
FAQ & Studio i w tym layout'cie dopiero mamy kolejne autolayout'y.
I o ile te 2 autolayout'y wewnątrz, FQA & Studio
one mają ustawione horizontal resizing na fill, to sam autolayout
FQA & Studio ma ustawione horizontal resizing na fixed.
Może słowo dlaczego ja zamknąłem te 2 moduły w kolejny
autolayout?
Otóż cała struktura strony jest przygotowana w ten sposób, że
pomiędzy poszczególnymi modułami ustawiłem sobie dosyć duży gap 128 pixeli.
To jest przestrzeń między każdym kolejnym modułem.
Dzięki temu strona jest czytelna, łatwo oddzielić poszczególne sekcje od siebie.
Natomiast w przypadku tego modułu chciałem osiągnąć taki efekt dwóch stykających się
ze sobą zdjęć, więc musiałem trochę uciec przed tym głównym gap'em całej strony.
Więc zamknąłem te 2 moduły
w oddzielny autolayout, w którym pionowy gap jest równy 0.
OK. To zmieniamy teraz fixed na fill container.
OK. I nasza,
nasze moduły zachowują się już odpowiednio.
Natomiast nadal jest coś takiego, że nasza strona nie wypełnia całej przestrzeni.
Więc sprawdzam co się stało?
Otóż nasz cały layout ma ustawiony vertical resizing na fixed.
Więc tu zmieniamy na hug po to, aby strona
zawsze się wydłużała i dopasowywała do contentu.
Ponieważ w miarę skalowania jeżeli jakieś moduły
przeskakują jeden pod drugi, to strona też się musi wydłużać
aby te moduły miały miejsce, żeby się wyświetlić.
OK. Przetestujmy jak strona się zachowuje.
Mamy stronę, która jest przygotowana pod desktop.
Tu mamy sporo miejsca, jest szeroka.
Specjalnie oddalę może ten ekran swój, żebyście widzieli całe layout jak on działa.
Czyli mamy wersję desktop.
Teraz sobie skaluje w dół, mamy mniej miejsca.
W tym miejscu 2 moduły przeskakują, są jeden obok drugiego, trzeci przeskakuje w dół.
Podobnie tutaj mamy taki moduł, w którym kafelki przeskakują jeden pod drugi.
Tu również, tu już przeskoczyły w taki
sposób, że wszystkie 3 są jeden pod drugim.
I w zasadzie zbliżamy się już do rozmiaru mobilnego.
Czyli mamy w pełni responsywną stronę. Super.
Możemy przejść do kolejnego kroku i wypełnić naszą stronę contentem.
Za chwilę będziemy mieli gotowy projekt.