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ść.
Przed nami kolejne ćwiczenie, w trakcie którego będziemy zamykać autolayout'y w
kolejne autolayout'y i w kolejne autolayout'y w kolejne autolayout'y.
W ten sposób powstanie rozbudowana
struktura, która pozwoli nam lepiej kontrolować treści
w naszym module. Powstanie dobrze skonstruowany, responsywny moduł.
Tym modułem będzie okienko pop-up do obsługi cookies'ów.
Chcę Ci również zwrócić uwagę, że to nie będzie już atom czy molekuła.
Tworzymy pierwszy organizm do naszego projektu.
Wykonajmy go wspólnie od podstaw.
Ściągawka pozwoli Wam sprawdzić jakich
parametrów padding'u, gap'u czy styli tekstowych użyłem do jego przygotowania.
Klikam na klawiaturze T i narzędziom
tekstowym przygotowuję sobie miejsce na header.
Duplikuję pole tekstowe i powiększam je robiąc miejsce na treść.
Treści możemy skopiować ze ściągawki, więc
wklejam header, kopiuję i wklejam treść okienka.
Jak widzicie treść jest na tyle długa, że
wychodzi poza zdefiniowany przeze mnie obszar pola tekstowego.
Pole tekstowe może być również
responsywne, natomiast za jego responsywność nie odpowiada autolayout.
Skalowanie pola tekstowego możemy ustawić w panelu text klikając w prawy dolny róg
tego pola, type settings, i jedną z opcji jest parametr resizing.
Domyślnie zaznaczona jest opcja fixed size, czyli pole tekstowe ma taki
rozmiar jaki zdefiniowaliśmy skalując okno.
Mamy do wyboru jeszcze opcję auto width, czyli pole tekstowe dostosuje się do
długości tekstu i będzie tak szerokie, aby zmieścił się cały tekst.
Mamy również dostępną opcję auto height.
Szerokość pola tekstowego pozostanie bez zmian, natomiast jego wysokość będzie się
zawsze dostosowywała do długości tekstu. I to właśnie z tej opcji skorzystam.
Jak widzicie ramka nam się rozciągnęła i będzie się automatycznie rozciągać w
zależności od tego, jaką długość będzie miał tekst.
Poniżej wstawię 3 przyciski oraz zmienię
ich treść.
Jak widzicie przyciski są responsywne, a ich długość dostosowuje się
do długości tekstu. OK.
Mam 3 przyciski, mam pole tekstowe, mam header. Rozciągnę nieco pole tekstowe.
Całość zaznaczę i zamknę w autolayout.
Stało się teoretycznie coś dziwnego, ponieważ przycisk, który był w jednej
linii z pozostałymi przyciskami nagle wskoczył obok pola tekstowego.
Zazwyczaj podczas pracy z autolayout'em
mogą się zdarzyć takie sytuacje, gdzie po zamknięciu elementów autolayout
widok, który powstanie nie będzie dla nas satysfakcjonujący i może nam się wydawać,
że coś tu się zadziało źle, coś tu jest nie tak.
W oparciu o wiedzę, którą zdobyliśmy dotychczas, czyli jak
parametr horizontal vertical resizing albo
minimum/maximum width i height wpływają na zachowanie się elementów.
Możemy prześledzić dokładnie cały element,
aby zrozumieć co tu się stało i jakich zmian powinniśmy dokonać, aby
nasza kompozycja wyglądała tak, jak to sobie zaplanowaliśmy.
Czasami zmiana parametrów autolayout'u nie wystarcza i niektóre elementy musimy
zamknąć w kolejne autolayout, a może nawet w kolejne autolayout.
Prześledźmy krok po kroku jak zachowują się elementy w naszym autolayout'cie.
Cały autolayout wyrównany jest do lewego dolnego rogu.
Elementy układane są za pomocą parametru direction wrap, czyli
jeżeli jest przestrzeń, elementy będą wyświetlane jeden obok drugiego.
Jeżeli w poziomie nie będzie miejsca na
wyświetlanie kolejnego elementu, ten element zostanie wyświetlony poniżej.
Zaznaczę jeszcze raz autolayout będzie elementy wyświetlał od lewego
dolnego rogu, czyli równa jest do lewego dolnego rogu, pierwszym wierszu,
tym najniżej, mieszczą się 2 przyciski customize i allow all.
Ta przestrzeń jak widzicie jest zbyt mała, aby zmieścić jeszcze przycisk deny.
W związku z tym ten przycisk wskakuje do drugiego wiersza drugiego, licząc od dołu
i poza tym przyciskiem jest jeszcze sporo wolnej przestrzeni.
Na tyle dużo, że w tej przestrzeni zmieści się pole tekstowe.
Header zostanie wyświetlony w kolejnym, trzecim od dołu wierszu.
Oczywiście możemy lekko rozciągnąć nasz autolayout.
Teraz mamy na tyle dużo przestrzeni na
dole w pierwszym wierszu, aby wyświetlić wszystkie 3 przyciski obok siebie.
Natomiast zobaczcie, co się stało z nagłówkiem i z tekstem.
Przestrzeni jest na tyle dużo, że nagłówek
i tekst, które mają określoną szerokość, mogą się zmieścić obok siebie.
Czyli autolayout zachował się tak jak należy, układa elementy
zgodnie z określonym kierunkiem i wyrównuje je do wskazanego przez nas rogu.
Spróbujmy teraz element po elemencie naprawić to, jak
elementy są wyświetlane i jak układają się wewnątrz naszego autolayout'u.
Zacznijmy od dopracowania kolorystyki i typografii
w module. Tło modułu ustawię na kolor grey, tekst
zmienię na kolor biały.
Dodatkowo zmienię styl nagłówka na heading 4.
A treść na body 2.
Dodatkowo ustawie horyzontalny
i wertykalny
padding oraz zaokrąglę rogi.
OK. Wygląda to już bardzo podobnie.
Tym razem nagłówek jest na swoim miejscu,
tekst jest poniżej, natomiast przyciski znajdują się, no właśnie, w dwóch wierszach.
Oczywiście mogę teraz rozciągnąć trochę okno, ale dzieje się to, co poprzednio.
Przycisk wpada w miejsce obok pola tekstowego.
Żeby zmniejszyć przestrzeń dla przycisku
mogę rozciągnąć trochę bardziej pole tekstowe, mogę rozciągnąć kontener.
I teoretycznie wygląda to tak jak na panelu obok.
Dodatkowo zmienię jeszcze wygląd
pierwszych dwóch przycisków z primary na secondary.
Są to przyciski mniej ważne.
Chcę bardziej podkreślić przycisk allow all, dlatego jest on pomarańczowy, aby to on
skupiał uwagę, aby to w niego kliknął użytkownik.
Panele wyglądają bardzo podobnie, z jedną różnicą.
Ten po lewej stronie jest responsywny.
W miarę skalowania przyciski są wyrównane do środka.
Tekst rozciąga się od lewej do prawej krawędzi.
Moduł po prawej stronie w miarę skalowania zachowuje się tak jak poprzednio.
Jeżeli tylko mamy więcej miejsca, wpada kolejny przycisk.
Pole tekstowe wypełnia tylko część tego
okna, ponieważ to my ręcznie je ściągnęliśmy.
Jak to poprawić?
Zacznijmy od tego, aby nasze pola tekstowe dostosowały się do szerokości kontenera.
Czyli zmieniamy horizontal resizing na fill container.
I znowu zadziało się coś niespodziewanego, niespodziewanego jeżeli
nie rozumiemy jak działa autolayout, ale my już wiemy, że fill container działa w
ten sposób, że wypełni całą dostępną przestrzeń, a cała dostępna przestrzeń jest
to ta przestrzeń, która w naszym kontenerze pozostanie obok drugiego pola tekstowego,
które ma wartość horizontal resizing ustawiony na fixed.
Co się stanie, jeżeli to pole zmienimy na fill container?
Znowu pole dostosuje się do
wolnej przestrzeni, a ta wolna przestrzeń to będzie przestrzeń całego kontenera
pomniejszona o 2 przyciski customize i deny, które mają stałą szerokość.
I ta przestrzeń zostanie podzielona po równo na oba te teksty.
A więc teraz do obu pól tekstowych.
Dodam minimum width i będzie to 300. OK.
Nasze pole tekstowe jest już responsywne, dostosowuje się do szerokości okna.
Ale wciąż to okno nie działa tak, jak bym chciał.
Elementy w jakiś szaleńczy sposób zmieniają swoje pozycje.
W takim razie może lepszym rozwiązaniem
będzie zrezygnowanie z funkcji wrap i skoro elementy mają się układać jeden pod
drugim, skorzystajmy z opcji vertical layout.
Klikam vertical Layout.
W tym momencie elementy są już ułożone jeden pod drugim.
Pola tekstowe wypełniają pełną szerokość kontenera i zachowują się całkiem fajnie.
Natomiast co zrobić z przyciskami?
Chciałbym, żeby były ułożone jeden obok drugiego, a nie jeden pod drugim.
W tym przypadku najlepszym rozwiązaniem
jest zamknięcie tych przycisków w kolejne autolayout.
Ponieważ przyciski były ułożone jeden pod drugim.
Domyślny autolayout ma wertykalny orientację.
Mogę ją zmienić na horyzontalną.
W tym momencie przyciski są już jeden obok drugiego.
Natomiast w trakcie skalowania.
Przyciski są po lewej stronie.
Chciałbym, żeby te przyciski były wyrównane do środka,
więc zmieniam wyrównanie całego autolayout'u głównego komponentu do środka.
Mamy responsywne okno, w którym przyciski
są wyrównane zawsze do środka, a okienko jest responsywne.
Natomiast mam jeszcze pewien problem z przyciskami, a mianowicie taki, że
przycisk deny ze względu na długość tekstu jest najmniejszy, customize
jest trochę większy, a allow all no wiadomo jest największy, bo ma i
dłuższy tekst i ma strzałkę i jeszcze jest pomarańczowy.
W takim razie czy mogę zrobić coś, żeby
przyciski były podobne i tylko kolor w jakiś sposób stymulował kliknięcie?
W tym momencie przyciski parameter
horizontal resizing mają ustawione na hug content.
Ja zmienię tą wartość na fill container.
Teraz wszystkie 3 przyciski mają tę
samą szeroką. A w trakcie skalowania okna,
wyśrodkować ją się.
Natomiast zobaczcie co się stało, kiedy okno jest zbyt wąskie, ponieważ direction
ustawiony na horizontal layout wymusza nam układanie elementów jeden koło drugiego.
Przyciski nie przeskakują do kolejnego wiersza.
W takim razie może lepszą opcją będzie zamknięcie ich w layout wrap.
Sprawdźmy jak to działa teraz.
Przyciski wciąż nie przeskakują do kolejnego wiersza.
Co się stało?
Sprawdzam dalej.
Okazuje się, że cały kontener, chociaż został zmieniony na wrap, ma horizontal
resizing ustawiony na fixed, więc zmieniam to również na fill container.
W tym momencie w miarę skalowania okna
przyciski powiększają się, w trakcie pomniejszania pomniejszają się.
To również nie działa tak, jak bym sobie tego życzył.
Więc myślmy co możemy zrobić dalej.
Przecież możemy przyciskom przypisać
jakąś minimalną szerokość, poniżej której nie mogą się pomniejszyć.
Ustawię tę szerokość na 150, żeby przyciski nie były również zbyt długie.
Dodam wartość max width i ustawię ją np.
na 200.
Teraz w trakcie skalowania przyciski w pewnym momencie przestaną się
skalować, a w trakcie pomniejszania okna będą spadać jeden pod drugi.
Chciałbym jeszcze aby były wyrównane do góry i do środka.
Teraz nasz moduł zachowuje się naprawdę fajnie, jest responsywny,
przyciski są zawsze widoczne
i ustawiają się w takiej kolejności jak sobie to zaplanowałem.
Są wyrównane do środka bądź przeskakują do kolejnego wiersza.