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.
Cześć.
Zbudujemy teraz razem kolejny organizm do naszego projektu.
Będzie to formularz.
Zanim zabierzemy się do pracy, chciałbym,
żebyśmy dokładnie przestudiowali to, jak został ten formularz zbudowany.
Po pierwsze mamy autolayout, który nazywa się join us form.
Wypełnia on pewną szerokość.
Jego szerokość ustawiona jest na 440
pixeli, a horizontal resizing jest ustawiony na fixed. 1440 jest to
standardowa szerokość, na jaką projektujemy layout'y stron
w wersji desktop. Ten autolayout jest wyrównany w taki sposób, że gap
jest wyliczany automatycznie. W przypadku jednego elementu
w zasadzie ten gap staje się naszym marginesem.
Czyli chcąc uzyskać efekt formularza, wyśrodkowanego do strony.
I teraz, kiedy będę skalował swoją stronę,
widzimy, że po lewej i po prawej stronie pojawia nam się dynamiczny margines.
Możemy nasz formularz zamknąć w kolejny
autolayout, który będzie odpowiadał za pilnowanie marginesu.
Więc w tym pierwszym kontenerze
join us form, który jest autolayout'em automatycznie ustawionym
gap'em, mamy kolejne autolayout, który jest kontenerem na nasz formularz.
Nasz container parametr direction ma
ustawiony na vertical layout, czyli elementy będą układane jeden pod drugim.
Zobaczmy z jakich elementów składa się ten container.
Ma on w sobie 2 kolejne autolayout'y i przycisk.
Ten kontener ma dodatkowo ustawiony górny i dolny padding
wielkości 48 oraz gap wielkości 32 pixeli.
Header składa się z dwóch pól tekstowych zamkniętych w autolayout.
Natomiast między tymi polami gap wynosi 24 pixele.
Z kolei pola formularza zamknięte są w autolayout, którego gap wynosi 8 pixeli.
Czyli mamy 3 autolayout'y, z których każdy ma inny gap.
Jest to właśnie świetny sposób na to, jeżeli chcemy zbudować jakiś komponent
z elementów, które zgrupowane powinny być oddalone od siebie o różne wartości.
Czyli w naszym kontenerze jego poszczególne elementy, takie jak
nagłówek, formularz i przycisk oddalone są od siebie o 32 pixele. W nagłówku
pola tekstowe oddalone są od siebie o 24 pixele, a w formularzu poszczególne pola
formularza oddalone są od siebie o 8 pixeli.
Żeby mieć pewność, że dobrze to rozumiemy,
wykonajmy cały formularz od podstaw wspólnie.
To jakie wartości przyjęły poszczególne
gap'y, padding czy style tekstowe widzicie na ściągawce.
Z narzędzia tekstowego T.
Klikam T, aby z pomocą narzędzia tekstowego przygotować sobie header.
Oraz za pomocą styli ustawiam odpowiedni rozmiar heading'u.
Poniżej wprowadzam place holder na tekst.
Figma zapamiętuje ostatnio wybrany styl tekstowy, więc teraz zmieniam ten tekst na
body copy 2 i zamykam oba elementy w autolayout.
Nazwę go header. Poniżej wklejam kilka razy
pole input text, radio button.
Pola formularza
zamykam w autolayout.
Nazwę go form.
A całość, czyli nagłówek, formularz i przycisk.
Zamykam w kolejny autolayout.
Który nazwę container.
O przycisk nie wskoczył,
no to go wrzucam.
Sprawdźmy, czy na razie sam nasz formularz jest responsywny.
Nie do końca.
Zmieniam rozmiar kontenera, a
pola formularza zostały bez zmian, nie dopasowują się do jego rozmiaru.
Co powinienem zrobić?
Powinniście już wiedzieć. W pierwszej kolejności
autolayout zawierający formularze,
sprawdzam, jak jest ustawiona jego wartość
horizontal resizing, jest hug, czyli
będzie się dopasowywał do rozmiaru pól, które są wewnątrz.
No to zmieniam na fill container. Super!
Widzę już, że sam kontener z formularzem
wypełnił całą szerokość okna, natomiast wciąż pola formularza się nie rozciągnęły.
Dlaczego?
Sprawdźmy.
Jak można się było domyślać, pola te mają
ustawioną szerokość na fixed, więc też zmieniam na fill container.
Sprawdźmy, czy nasz formularz będzie się skalował teraz?
Jest, działa.
W moim przykładzie przycisk wyrównany był
do środka, więc zmieniam w polu align wyrównanie do góry i do środka.
Hej, co się stało?
Dlaczego nagłówek się wyrównał, a przycisk pozostał w starym miejscu?
Sprawdzam, że w momencie kiedy przeciągnąłem mój przycisk
do autolayout'u, wpadł on do kolejnego autolayout'u o nazwie form,
a powinien być w kontenerze, więc wyciągam mój przycisk poza kontener.
Pamiętaj, aby zawsze przeciągając elementy
wewnątrz autolayout'u sprawdzać gdzie dokładnie one się pojawią.
Pomaga nam w tym niebieska linia, która pokazuje nam gdzie wpadnie nasz element.
Czyli widząc teraz taką niebieską linię na
środku wiemy, że wpadnie do głównego autolayout'u wyrównanego do środka.
Jeżeli widzimy, że teraz próbuje nasz
przycisk zająć swoją pozycję między polami formularza, możemy się
domyślać, że wpadnie on do autolayout'u form i będzie wyrównany do lewej strony.
A kiedy znowu się pojawia
linia na środku, to wiemy, że to jest znowu ten nasz nadrzędny autolayout.
Super, ale co z tym header'em?
Z header'em jest to samo co z formularzem.
Czyli jego horizontal resizing ustawione jest na hug.
Zmieniamy opcję na fill container, aby nagłówek wypełnił całą szerokość.
Dla pewności, że po wprowadzeniu
docelowych treści moduł będzie wciąż responsywny, sprawdzam jeszcze pola
tekstowe, a te oczywiście są ustawione na hug.
Zmieniam na fill container.
Teraz jeszcze dopracuje wszystkie padding'i
i gap'y, czyli nasz główny kontener miał dolnt i górny padding ustawiony na 48
po to, żeby poprawnie wyświetlał się kiedy nad nim i pod nim będą kolejne moduły.
Dodajemy padding górny i dolny po to, aby
w docelowym layout'cie nasz formularz miał zachowany pewien dystans między modułem,
który będzie znajdował się powyżej i powyżej niego.
Gap ustawiamy sobie na 32.
Dzięki temu mamy bardzo fajną przestrzeń
między nagłówkiem i formularzem oraz między samym formularzem a tekstem.
Upewniam się również, że przestrzeń między
polami tekstowymi w nagłówku jest odpowiednia.
Zmieniam sobie gap na 24, a w autolayout'cie z formularzem zmieniam gap
na 8.
Czy zauważyłeś, że wszystkie wartości, które zdefiniowałem sobie wearables
w skali tshirt są podzielne przez 2, 4 i 8 są zawsze wartościami parzystymi?
Takie skalowanie elementów i odległości zapewnia mi odpowiednie wyświetlanie
elementów na ekranach o różnej gęstości wyświetlania.
Ponieważ jeżeli zastosowałbym wartości nieparzyste np.
35 pixeli, to element, który na jednych wyświetlaczach ma 35 pixeli.
Na wyświetlaczach o mniejszej gęstości musiałby mieć 17,5.
A nie ma czegoś takiego jak pół pixela,
więc stosowanie parzystych jednostek zapewni nam odpowiednie wyświetlanie
elementów na wyświetlaczach o różnej gęstości.
OK. Nasz moduł jest responsywny, mogę go
skalować tak zawsze będzie na środku, a pola formularza wypełnią pełną przestrzeń.
Na pewno będzie to fajnie działać na
urządzeniach mobilnych, ale na stronie chcieliśmy mieć margines
po lewej i prawej stronie, więc zamykam mój formularz w kolejne autolayout.
Na potrzeby tego ćwiczenia nazwę go sobie margines.
A następnie zmieniam wyrównanie w polu align do top center.
Teraz, kiedy będę skalował swoje okno
przeglądarki, formularz będzie zawsze na środku.
OK.
No ale przecież miał też fajnie działać na
telefonie, kiedy za bardzo przeskaluję okno w dół.
Formularz się nam nie mieści.
Co w takiej sytuacji?
No też już powinniśmy wiedzieć.
Zmieniam fixed width na fill container.
O za szeroko.
No tak, ale nie skaluję tego ręcznie tylko przypisuje do formularza max width.
Czyli nie chce, żeby mój formularz był szerszy niż 700.
Może powiększę trochę. Na dużych ekranach
formularz będzie wypośrodkowany.
Będzie zawsze na środku, będzie miał stałą szerokość.
Natomiast jeżeli przekroczymy pewien rozmiar
na tablecie i będziemy zbliżać się coraz bardziej do rozmiaru telefonu.
Nasz formularz zacznie się zwężać. Brawo!
Stworzyliśmy kolejny organizm do naszego design systemu.
Kolejny moduł w naszym podejściu Atomic Design i kolejny element zbudowany w
oparciu o autolayout i nie jeden autolayout, ale kilka.
A dzięki temu, że każde z tych autolayout'ów posiadał inną wartość gap,
mogliśmy wpłynąć jeszcze lepiej na to, jaka jest estetyka naszego formularza.
Nauczyliśmy się też, w jaki sposób możemy stworzyć moduł, który będzie
na większych ekranach miał margines po lewej i prawej stronie, a jednocześnie
będzie się skalował w przypadku wyświetlania na mniejszych wyświetlaczach.