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ść.
Potrafimy tworzyć już naprawdę bardzo fajne, responsywne moduły.
Umiemy ustawić padding, umiemy ustawić gap.
Dzisiaj będziemy miksować te wszystkie
umiejętności i stworzymy naprawdę rozbudowany moduł.
Będzie to header naszej strony.
Natomiast nową rzeczą jakiej będę chciał
się dzisiaj nauczyć, to jest wykorzystanie funkcji auto gap.
Dotychczas gap ustawialiśmy ręcznie bądź wybieraliśmy go z parametrów wearables.
Dzisiaj wykorzystamy gap wyliczany automatycznie,
więc miksując różne autolayout'y horyzontalne, wertykalne czy wrap'y
stworzymy taki oto moduł, który będzie się dostosowywał do szerokości okna.
Prześledźmy jakie mamy elementy na scenie.
Nasz header wypełniony będzie tłem.
Na razie mamy place holder w formie kwadratów.
Natomiast jak widzicie w trakcie
skalowania okna to tło będzie dostosowywało się do rozmiaru kontenera.
W górnej części mamy umieszczone logo,
które zawsze wyrównuje się do środka, co w jakiś sposób podpowiada nam, że ten
autolayout powinien być horyzontalnie wyrównany do środka.
Poniżej mamy miejsce na headline i tekst
po lewej stronie i przyciski call to action po prawej stronie.
Natomiast jak to się dzieje, że logo
wyrównane jest do środka, teksty do lewej, a z kolei przyciski do prawej?
Ten efekt uzyskaliśmy bez wykorzystania
funkcji absolut position, więc efekt ten uzyskaliśmy właśnie poprzez
odpowiednie zamykanie poszczególnych elementów w kolejne autolayout'y.
Ta struktura, którą ja stworzyłem,
odpowiadała konceptowi, który chciałem stworzyć.
Natomiast w przypadku Waszych projektów
musicie indywidualnie przeanalizować zaprojektowany układ i
zastanowić się jaka struktura autolayout'ów i jaki
ich kierunek będzie optymalny, aby stworzyć responsywny moduł.
Postaram się przeprowadzić Ciebie krok po kroku przez wszystkie decyzje projektowe,
jakie podjąłem w trakcie tworzenia tego nagłówka.
Przygotowałem sobie wcześniej elementy
takie jak znak graficzny, logotyp, head line, body copy i przycisk.
Wszystkie elementy mają już przypisane
odpowiednie style typograficzne czy kolory.
Zacznę od tego, aby ze znaku graficznego i logotypu stworzyć jeden element logo.
I zamykam te elementy w autolayout, nazwę ten autolayout logo.
Oraz zmienię przestrzeń między znakiem a tekstem ustawiając gap na 8.
OK. Mamy pierwszy element. Tak jak na
naszym przykładzie ustawię sobie po lewej stronie head line i body.
A po drugiej
2 przyciski.
Teraz analizuję jak powinien się zachowywać mój header.
Nie nadaje wypełnienia, nie
tworzy żadnego kształtu pod spodem, ponieważ wypełnienie
nadam do tego nadrzędnego layout'u tego layout'u najwyższego poziomu.
A więc teraz zastanawiam się w jaki sposób w moim autolayout'cie mogę ułożyć te
elementy, więc logo będzie się wyrównało do środka.
OK. Czyli to będzie jeden element.
Natomiast jaka relacja zachodzi między head line'em, body copy a przyciskami?
Wiem, że chciałbym, aby head line znajdował się zawsze nad body.
Wiem, że pole tekstowe może mieć różną długość, więc docelowo będę musiał ustawić
odpowiedni parametr horizontal resizing dla tego elementu.
Podobnie body copy.
W tym momencie jest to bardzo krótki tekst, ale docelowo może być on dłuższy.
Wiem też, że przyciski powinny znajdować się obok siebie
i o ile w przypadku desktopu fajnie one wyglądają po prawej stronie, o tyle w
przypadku ekranu mobilnego powinny one wskoczyć pod body copy.
Czyli te przyciski są w pewnej relacji z body copy.
Więc zacznę od tego aby zapewnić sobie to,
że przyciski będą zawsze koło siebie i zamykamy je w autolayout.
Ustaw je odpowiednio z wearables gap.
I nazwę sobie ten autolayout call to action.
Chciałbym, żeby te przyciski były zawsze obok siebie, aby nigdy nie było takiej
sytuacji, że jeden przycisk wpadnie pod drugi.
Dlatego pozostawiam direction ustawione na horizontal layout.
Te przyciski będą zawsze obok siebie, ponieważ chciałbym aby w wersji desktop,
czyli kiedy mam więcej miejsca przyciski były obok body copy.
Jednocześnie chciałbym aby przy pewnych
mniejszych rozdzielczościach przyciski spadły poniżej.
To już wiem, że powinienem
zamykając oba te elementy w autolayout skorzystać z opcji wrap.
Nazwę sobie ten autolayout dla porządku body copy + call to action.
Zobaczmy jak on się zachowuje w trakcie skalowania.
Oooooo! Co się stało?
To, co powinno.
Ponieważ wartości gap, zarówno
horyzontalne jak i wertykalne są strasznie duże.
Wrócę do pierwotnego układu i po pierwsze zmienię gap na auto.
Teraz w trakcie skalowania
elementy będą zawsze obok body copy i będą się dostosowywały do długości tego pola.
Natomiast kiedy zbliżę się maksymalnie blisko i
podczas dalszego skalowania, nie wejdę na ten tekst,
ale spadną poniżej.
Teraz mogę ustawić sobie odpowiednią wartość wertykalnego gap'u, ustawię go np.
na 24,
może trochę mniej na 16.
OK.
Czyli mam teraz layout, który w przypadku mniejszych ekranów, body copy
będzie na górze, a przyciski poniżej, a w większych ekranach przyciski będą obok.
To teraz zbuduje relacje między moim call to action, body copy a head line'em.
Zamknę je również w autolayout.
Nazwę go sobie dla porządku content.
To jest zawartość naszego
header'a.
I zamknę sobie to wszystko w kolejny autolayout, czyli nasz content i logo.
A teraz, żeby poprawić czytelność całego modułu dodałem wypełnienie
grafiką.
Wciąż nie wygląda to zbyt dobrze, więc dla porządku
dodam
padding.
Zarówno wertykalny jak i
horyzontalny.
Musimy pamiętać, żeby tworząc takie
szablony zapewnić odpowiedni kontrast i czytelność elementów na scenie.
Dlatego do wypełnienia dodam jeszcze drobną maskę,
wypełnienie kryjące na 25%.
Z kolei kolor tekstów i logo zmienię na kolor biały.
Może jeszcze trochę przyciemnimy tła. OK.
Pewnie się zastanawiasz dlaczego przez
wszystkie nasze spotkania nie uzupełniam elementów docelową treścią i nie wypełniam
bloków jakimś fajnym zdjęciem, fajnym wideo, tylko są to szare bloki,
place holder'y na teksty czy place holder'y na zdjęcia.
Jest to jeden z elementów podejścia Atomic Design.
Czyli najpierw tworzymy atomy, potem tworzymy organizmy,
następnie tworzymy szablony i to dopiero te szablony wypełniamy docelową treścią.
Oczywiście w takim tradycyjnym procesie projektowym my znamy treść docelową.
My wiemy mniej więcej jakie będą zdjęcia, przynajmniej jakie mamy dostępne zdjęcia.
Zazwyczaj mamy teksty od copywriter'ów.
Natomiast nie zmienia to faktu, że czasami musimy stworzyć moduły bez tego content'u.
Więc projektujemy elementy, które możemy wypełnić dowolną treścią.
Do tego musimy mieć na uwadze, że ten head
line może być dłuższy, że body copy będzie dłuższe.
Natomiast w dobrze przygotowanej
dokumentacji w dobrze przygotowanym projekcie powinniśmy otrzymać informację,
że na headline czy na body copy została przewidziana taka a nie inna ilość znaków,
że nie może być tak, że head line to będzie 500 czy 6600 znaków, ale będzie ich np.
120 albo 20
i na tej podstawie możemy tworzyć szablony.
Jednym z elementów procesu Atomic Design
jest stworzenie layout'u, szablonu z wykorzystaniem takich właśnie modułów,
place holder'ów, a dopiero w ostatniej fazie wypełniamy je treścią.
Ale wróćmy do budowania responsywności naszego modułu.
Mamy autolayout header, w nim mamy kolejne autolayout logo.
W nim kolejny autolayout zawierający head line i body copy z CTA i CTA
zamknięte jest body copy w autolayout wrap i
kolejne autolayout na same przyciski call to action.
Dużo tych autolayout'ów.
Sprawdźmy na ile ten moduł responsywny jest na tą chwilę?
Wypełnienie zachowuje się tak, jak planowałem.
Logo
jest wycentorwane, tak jak tego chciałem.
Natomiast head line i pozostałe elementy
nie zachowują się jeszcze w odpowiedni sposób.
Jak widzisz te elementy mają ustawiony horizontal resizing na hug.
Ja chciałbym, żeby zawsze wypełniały pełną szerokość kontenera.
Więc zmieniam na fill container.
Upewniam się również, że head line ma
wystarczająco dużo miejsca i też zmieniam hug na fill container.
Czyli teraz możemy wstawić tekst na całej szerokości modułu.
Nasz moduł z body copy z przyciskami jest ustawiony na fixed.
Jego również zmieniam na fill container.
Sprawdźmy co się dzieje teraz.
Super.
Przyciski są przyklejone do prawej
krawędzi, head line i body copy do lewej, a logo jest zawsze wypośrodkowane.
Ale co się stanie, kiedy zaczniemy skalować w pionie?
Logo jest przyklejone do górnej krawędzi, natomiast head line
I pozostałe elementy nie ruszają się.
Dlaczego?
Dzieje się tak dlatego, że
cały ten mój pionowy autolayout ma na stałe ustawiony gap.
To również zmieniam na auto.
Dzięki temu
cała przestrzeń w pionie zostanie rozdystrybuowana w taki sposób, aby
przestrzeń między elementami była automatycznie wyliczona, czyli logo
zostanie wyrównane do górnej krawędzi, a moduł z tekstem i przyciskami do dolnej.
W ten sposób otrzymaliśmy moduł, który
jest responsywny zarówno w poziomie, a to dzięki temu, że
moduł z body copy i przyciskami call to action zamknęliśmy w autolayout'cie, który
gap ma ustawiony na auto, a za pionową responsywność
odpowiada główny autolayout, który też pionowy gap ma ustawiony na auto.
Sprawdźmy, co się stanie, kiedy będę skalował
w dół.
Elementy wskakują jeden pod drugi.
Jak widzicie, stopień pisma dla urządzenia mobilnego jest za duży.
O ile fajnie wygląda to na większych
ekranach, to na mniejszym urządzeniu mobilnym wygląda to bardzo słabo.
Niestety na ten moment Figma nie pozwala, aby dynamicznie zmieniać stopień pisma.
W takich przypadkach
będziemy zmuszeni, aby dla mniejszych ekranów wybrać jakiś inny rozmiar pisma.
Mam nadzieję, że wkrótce Figma to zmieni, ale póki co
musimy mieć zaprojektowany ewentualnie dodatkowy styl typograficzny.