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ść. Umiemy już tworzyć autolayout'y oraz
zamykać je w kolejne autolayout'y i wyrównywać wewnątrz tych autolayout'ów.
Teraz poznamy funkcję resizing, która odpowiada za skalowanie
autolayout'ów bądź elementów znajdujących się wewnątrz
tych autolayout'ów.
Parametr resizing dostępny jest po zaznaczeniu autolayout'u po prawej stronie
okna Figm'y w panelu frame i ustawiamy ten parametr oddzielnie dla skalowania w
poziomie, czyli horizontal resizing i w pionie vertical resizing.
Domyślną wartością jest wartość hug contents.
To znaczy, że rozmiar mojego autolayout'u
team video dopasowuje się do wielkości kafelków, które znajdują się w środku.
Zobaczmy, co się stanie, kiedy zacznę skalować ostatni kafelek.
Zobaczcie, że rozmiar autolayoutu text team video zmienia się.
Możemy to zaobserwować obserwując
fioletową przerywaną linię, która przedstawia nam zarys naszego autolayout'u.
Drugim parametrem jaki możemy ustawić dla horizontal resizing jest fixed width.
Oznacza to, że szerokość tego autolayout'u
team video będzie niezmienna bez względu na to, co zrobimy z zawartością w środku.
Sprawdźmy, co teraz się stanie, kiedy będę skalował ostatni kafelek.
Jak widzicie przerywana fioletowa ramka nie zmienia swojego położenia.
To znaczy, że rozmiar kontenera
team video zbudowanego w oparciu o autolayout jest stała.
Zmienię ponownie tę wartość na hug contents. W środku naszego kontenera
team video znajdują się cztery kafelki.
Wszystkie one mają ustawioną szerokość i wysokość na fixed.
Natomiast chcę Ci zwrócić uwagę, że w przypadku tych kafelków poza opcją fixed
width i check hug contents pojawia się jeszcze trzecia opcja,
fill container pojawia się ona w
momencie, kiedy nasz autolayout jest zamknięty w kolejny autolayout.
A dokładnie taka sytuacja ma tutaj miejsce.
Czyli mam 4 kafelki, które mają nazwę team.
Widzimy to po lewej stronie na panelu
warstw i są one zamknięte w kolejny autolayout team video.
Sprawdźmy zatem, co się stanie, kiedy zmienię rozmiar jednego z kafelków.
Pierwszy kafelek z wartości fixed content zmienię na hug contents.
Zobacz, co się w tym momencie stało.
Rozmiar naszego pierwszego kafelka, który
wcześniej był na stałe zdefiniowany na wartość fixed.
Zmieniliśmy na hug.
Tym samym ten kafelek
dopasował swoją szerokość do elementów, które znajdują się w środku.
Wewnątrz tego kafelka znajduje się tylko jedno pole tekstowe z tekstem name i to
do rozmiaru tego pola dopasował się cały kafelek.
Pragnę zauważyć, że do naszego całego autolayout'u mamy ustawiony ujemny gap.
Może na potrzeby tego ćwiczenia ustawi
wartość 0 tak abyś lepiej widział jak dokładnie zachowuje się funkcja resizing.
Wyłączę również obrys dla naszych kafelków, usunę go.
Rozmiar pierwszego kafelka
dopasował się do rozmiaru pola tekstowego, ponieważ ma wartość hug.
Z kolei cały kontener team video również się pomniejszył.
Również dopasował ponownie swój rozmiar do
tego, jakiej przestrzeni potrzebują kafelki w środku.
Rozciągnę teraz swój kontener team video.
Zobacz, że rozmiar kontenera się zwiększył, natomiast
elementy wciąż zostały wyrównane do lewej strony.
Dzieje się to dlatego, że w oknie dialogowym po prawej stronie
ustawiłem wyrównanie do lewej strony do dolnej krawędzi.
Powiększę jeszcze trochę swój kontener.
OK. Więc to jest przestrzeń naszego kontenera team video.
Pierwszy kafelek ma wartość horizontal resizing hug, czyli
dostosowuje się do elementów, które ma wewnątrz siebie do pola name.
Sprawdźmy co się stanie, kiedy zmienię teraz tą wartość na fill container.
Nasz kafelek name rozciągnął się
wypełniając całą wolną przestrzeń. Tą wolną przestrzenią
jest różnica między szerokością całego
kontenera team video a sumą szerokości trzech pozostałych box'ów.
Jeżeli teraz w pozostałych trzech box'ach zmienię również horizontal resizing na fill
container, wszystkie cztery kafelki będą miały tą samą szerokość.
Sprawdźmy zatem, co się stanie, kiedy będę skalował, już nie szerokość kafelków, tylko
całego kontenera, który w tym momencie ma ustawioną szerokość na fixed.
Kafelki,
rozciągają się
i dostosowują
swoją szerokość w taki sposób, aby w pełni wypełnić szerokość kontenera.
Co się stanie, kiedy zmienię parametr
horizontal resizing z fixed na hug contents?
Zauważ, że teraz wszystkie kafelki, które
znajdowały się w środku i miały ustawiony parametr horizontal resizing na fill
container automatycznie zmieniły go na fixed.
Czyli ponieważ teraz nasz kontener team
video ma dopasowywać się do contentu w środku, to ten content, który wcześniej
dopasowywał się do kontenera teraz musi zostać za zafixowany.
Czyli parametr horizontal resizing
ustawiony na fixed sprawia, że dany autolayout ma stałą szerokość i ta szerokość
nie zmienia się w miarę skalowania autolayout'u.
Ustawienie parametru horizontal resizing na
hug sprawia, że dany autolayout dopasuje się do zawartości w środku.
Natomiast ustawienie parametru horizontal
resizing na fill container sprawi, że dany kontener rozciągnie się w taki
sposób, by wypełnić całą dostępną szerokość.
Ta funkcja działa identycznie w przypadku
skalowania w pionie, czyli vertical resizing.
W momencie kiedy wybiorę opcję hug contents,
moje wszystkie kafelki dostosowały się do rozmiaru tekstu.
I tu tylko zwracać uwagę, że został zachowany wewnętrzny gap, który
zdefiniowaliśmy sobie wcześniej na 24 pixele.
Natomiast kiedy ustawię parametr na fill
container, automatycznie kafelki wypełnią całą dostępną przestrzeń.
Chciałem Ci pokazać teraz kilka błędów
popełnianych podczas korzystania z horizontal i vertical resizing.
Sprawdźmy najpierw jak ustawione są
te parametry dla naszych box'ów wewnątrz kontenera team video.
Pierwszy box ma ustawiony horizontal
resizing na fixed, drugi na hug, trzeci na fill container i czwarty również na fixed.
Sprawdźmy, co się stanie, kiedy będziemy skalować nasz cały kontener.
Layout zachowuje się odpowiednio.
Pierwszy i ostatni box mają zafixowaną szerokość.
Drugi dopasowuje się do długości tekstu, a trzeci wypełnia całą pozostałą przestrzeń.
Pierwszym najczęstszym popełnianym błędem jest to.
Jeżeli mamy jakiś autolayout ustawione na
hug, chcemy sprawdzić, jak on będzie wyglądał, gdybyśmy go lekko przeskalowali.
I tu musimy pamiętać, że nawet
poruszenie o jeden pixel sprawia, że wartość hug zmieniła się na fixed.
Podobnie dzieje się w przypadku
kontenerów, które mają ustawiony horizontal resizing na fill container.
Jeżeli chociaż o pixel przeskaluję
ręcznie, taki element automatycznie zmieniają horizontal resizing na fixed.
Skutkuje to tym, że takie elementy nie są już w pełni responsywne.
Jeżeli teraz będę skalował cały kontener team video.
Zobaczycie, że elementy nie dopasowują się już do
wielkości tego kontenera, ponieważ
wszystkie mają ustawione szerokość na fixed.
Żadna szerokość nie jest ustawiana dynamicznie.
Kolejny skutek tego błędu jest taki, że jeżeli element
ma ustawioną szerokość na fixed a wprowadzimy w tym elemencie dłuższą jakiś
np. dłuższy tekst, to ten element nie
dostosuje się do długości tego tekstu i taki tekst zostanie przycięty.
Jeżeli ja teraz poprawię to ustawienie, a może zanim je poprawię, to zmienię
kolejność wyświetlania warstw, żebyście lepiej ten błąd zobaczyli.
To widzicie teraz, że szary box ma swoją ograniczoną szerokość ustawioną na 151.
Jest ona fixed, natomiast pole tekstowe wylewa się poza ten obszar tego box'a.
Box nie powiększył się, nie dostosował się do szerokości tekstu.
Żeby to naprawić wystarczy, że zmienię
fixed na hug i w tym momencie szerokość box'u dostosowała się do szerokości tekstu.
Oczywiście przez to został totalnie
rozepchany content w naszym kontenerze, ponieważ pozostałe box'y są
wciąż ustawione na fixed, więc ten drugi zmienię na
fill container tak jak to było na początku. OK.
Box'y dopasowują się, aby uniknąć tego typu błędów.
Należy zawsze kontrolować czy na pewno
wartość horizontal resizing naszego elementu jest odpowiednio ustawiona.
Może być też taka sytuacja, że wartość ma być ustawiona na fixed.
Takie było nasze oczekiwanie, ale pomimo,
po wklejeniu tekstu, ten tekst ponownie wylewa nam się poza kontener.
Ale my chcemy, aby ten kontener miał
właśnie taką określoną przez nas szerokość.
Wtedy możemy pozostawić ten element,
ten kontener w takiej formie, ale powinniśmy się zająć polem tekstowym,
które w tym momencie jest ustawione na hug, a my możemy tą wartość zmienić np.
na fill container.
W tym momencie to tekst wewnątrz czy inne elementy
wewnątrz tego elementu będą się dostosowywały do szerokości jaką mamy.
I ostatnia rzecz.
Może nie jest to błąd, ale jest to sytuacja, która bardzo często przytrafia
się szczególnie początkującym projektantom.
To sytuacja, w której mimo tego, że poprawnie został ustawiony parametr
horizontal resizing na hug, na fill container i teoretycznie moduły
dostosowują się do szerokości czy wysokości ekranu.
Natomiast z jakiegoś powodu po lewej, po prawej stronie bądź na górze i na dole
pozostaje jakaś nie zagospodarowana przestrzeń.
Może to wynikać z tego, że nad naszymi elementami znajduje się jakiś autolayout,
a nad nim może jeszcze kolejne autolayout i któreś z tych autolayout'ów ma ustawiony
horyzontalny bądź wertykalny padding i to on sprawia, że nasze moduły nie wypełniają
pełnej przestrzeni w taki sposób, jak byśmy chcieli.