Przejdź do treści

· 7 min

Jak przekazać projekt z Figmy do developera, żeby strona wyszła 1:1

Okładka wpisu „Jak przekazać projekt z Figmy do developera, żeby strona wyszła 1:1” na blogu 2bi.pl

Firmy, które zamawiają projekt graficzny strony u projektanta UX/UI, a wdrożenie zlecają osobno developerowi lub agencji, najczęściej doświadczają tego samego rozczarowania: gotowa strona różni się od projektu. Inne odstępy, inne zachowanie na urządzeniach mobilnych, brakujące stany przycisków, czcionka o innej grubości. Winny bywa wskazywany deweloper, choć problem najczęściej zaczyna się wcześniej — na etapie przekazania pliku. Dobrze przygotowany projekt z Figmy do WordPressa to nie kwestia talentu grafika, tylko konkretnego zestawu decyzji, które trzeba podjąć, zanim projekt trafi do wdrożenia.

Ten artykuł porządkuje, co powinien zawierać plik w Figmie i jaka dokumentacja powinna mu towarzyszyć, żeby wdrożenie w WordPressie odwzorowywało projekt wiernie — bez tygodni poprawek.

Dlaczego projekt z Figmy do WordPressa różni się od finalnego wdrożenia

Figma jest narzędziem statycznym — pokazuje jeden konkretny stan ekranu przy jednej konkretnej szerokości. WordPress i przeglądarka renderują treść dynamicznie: tekst bywa dłuższy lub krótszy niż w projekcie, zdjęcia mają różne proporcje, ekran ma nieskończenie wiele możliwych szerokości między telefonem a dużym monitorem. Jeśli plik w Figmie nie mówi wprost, co ma się stać w tych sytuacjach, deweloper musi zgadywać — a zgadywanie prawie zawsze prowadzi do rozbieżności.

Do tego dochodzi drugi problem: część projektów powstaje jako zbiór luźno rozmieszczonych elementów, bez uporządkowanej struktury warstw i bez opisu zachowania przy przewijaniu czy najechaniu kursorem. Dla klienta wygląda to poprawnie, bo w Figmie widać gotowy obrazek. Dla dewelopera to zestaw pytań bez odpowiedzi: czy dany odstęp ma zamierzoną, ustaloną wartość, czy przycisk ma stan po najechaniu, czy sekcja ma się skalować, czy zostać przycięta. Rozjazd rzadko wynika z niedbałości po stronie kodu — znacznie częściej z tego, że plik nie zawierał informacji potrzebnych do podjęcia tych decyzji.

Auto layout i responsywność — fundament, bez którego nic się nie zgadza

Największym źródłem rozbieżności między projektem a wdrożeniem jest brak auto layoutu w Figmie. Elementy rozmieszczone „na sztywno” wyglądają poprawnie tylko przy jednej, dokładnie takiej szerokości ekranu, jaką ustawił projektant. W przeglądarce ta sama sekcja musi działać przy dziesiątkach różnych szerokości — od telefonu po duży monitor — a auto layout to jedyny sposób, żeby z góry określić, jak elementy mają się zachować w każdej z nich. Przy przekazywaniu projektu warto zadbać o kilka elementów:

  • Auto layout na każdej sekcji — z jasno zdefiniowanymi odstępami (spacing) i marginesami wewnętrznymi (padding), a nie z ręcznym rozstawieniem elementów na płótnie.
  • Minimalnie trzy warianty szerokości — desktop, tablet i telefon, żeby deweloper widział zamierzone zachowanie sekcji, a nie musiał je wymyślać samodzielnie.
  • Zasady skalowania tekstu i obrazów — czy nagłówek ma zmniejszać się proporcjonalnie do szerokości ekranu, czy skokowo przełączać między kilkoma ustalonymi rozmiarami.
  • Zachowanie przy długiej lub krótkiej treści — co się dzieje, gdy nagłówek jest dwa razy dłuższy niż w projekcie, albo gdy lista ma jeden element zamiast czterech.

Bez tych ustaleń deweloper wdrażający projekt z Figmy do WordPressa musi podejmować dziesiątki drobnych decyzji projektowych samodzielnie — a każda z nich to potencjalny punkt rozjazdu z oczekiwaniami klienta.

System komponentów zamiast pojedynczych ekranów

Projekt złożony z osobno zaprojektowanych podstron, w których ten sam przycisk czy karta usługi wygląda nieznacznie inaczej na każdym ekranie, jest trudny do wdrożenia spójnie. Dobra praktyka to budowanie projektu w oparciu o komponenty Figmy (components i variants) zamiast powielania tych samych elementów jako osobnych kształtów:

  1. Każdy powtarzalny element (przycisk, karta, pole formularza, nagłówek sekcji) powstaje jako komponent z jasno zdefiniowanymi wariantami.
  2. Warianty obejmują wszystkie stany, w jakich element może się znaleźć — nie tylko stan domyślny.
  3. Zmiana komponentu głównego automatycznie aktualizuje wszystkie jego użycia w projekcie, co eliminuje rozjazdy między podstronami jeszcze przed wdrożeniem.

Taka struktura ma dodatkową korzyść po stronie WordPressa: komponenty z Figmy naturalnie odwzorowują się na powtarzalne bloki ACF, które potem redakcja treści wypełnia samodzielnie, bez ingerencji w kod — o czym piszemy w artykule o edycji treści w WordPressie przez ACF.

Stany interakcji: hover, focus, aktywny, wyłączony

Projekt statyczny pokazuje zwykle tylko jeden, domyślny stan każdego elementu. Tymczasem każdy element interaktywny ma w rzeczywistości kilka stanów, które użytkownik zobaczy w trakcie korzystania ze strony:

  • Hover — wygląd przy najechaniu kursorem (dotyczy urządzeń z myszką, nie telefonów).
  • Focus — wygląd, gdy element jest zaznaczony klawiaturą (istotne dla dostępności strony).
  • Active/pressed — wygląd w trakcie kliknięcia.
  • Disabled — wygląd elementu chwilowo nieaktywnego, np. przycisku formularza przed uzupełnieniem wymaganych pól.
  • Error — wygląd pola formularza po nieprawidłowym wypełnieniu.

Jeśli te stany nie są zaprojektowane, deweloper wdraża je według własnej intuicji — co niemal zawsze różni się od tego, co miał w głowie projektant. Dopisanie ich do pliku w Figmie kosztuje niewiele czasu, a eliminuje jedną z najczęstszych przyczyn poprawek po wdrożeniu.

Specyfikacja dla developera: dokument, który oszczędza tygodnie poprawek

Nawet najlepiej zbudowany plik w Figmie nie zastąpi krótkiej specyfikacji tekstowej, która opisuje zamiary projektanta wprost, zamiast zostawiać je do odgadnięcia. Wystarczy, że odpowiada na pytania, których sama grafika nie rozstrzyga:

  • Jakie są dokładne wartości typografii (rodzina fonta, grubość, interlinia) dla każdego poziomu nagłówka i tekstu?
  • Jaka jest paleta kolorów w formacie gotowym do wdrożenia, wraz z wariantami dla stanów interakcji?
  • Co ma się wydarzyć przy przewijaniu strony — czy elementy mają się animować, przypinać do góry ekranu, pojawiać z opóźnieniem?
  • Które treści mają być edytowalne przez redakcję w panelu WordPress, a które są stałym elementem układu strony?
  • Jakie są reguły dla obrazów — proporcje, maksymalne rozmiary plików, zachowanie przy różnych formatach zdjęć od klienta?

Agencje zajmujące się wdrożeniami WordPress na co dzień zwykle mają własny szablon takiej specyfikacji, o który warto zapytać przed rozpoczęciem współpracy — jego brak jest jednym z najczęstszych powodów dodatkowej rundy poprawek po wdrożeniu.

Uporządkowanie pliku w Figmie: nazwy warstw i struktura stron

Element często niedoceniany, a mający realny wpływ na tempo wdrożenia, to samo uporządkowanie pliku w Figmie. Warstwy nazwane automatycznie przez program („Frame”, „Group” z kolejnym numerem porządkowym) niczego nie mówią deweloperowi o tym, czym dany element jest. Nazwy opisowe („Nagłówek sekcji ofert”, „Karta realizacji — wariant z wideo”) pozwalają szybko odnaleźć się w strukturze projektu bez dodatkowych pytań.

Warto też zadbać o spójną strukturę stron w pliku — osobna strona na każdy typ podstrony (strona główna, oferta, blog, kontakt), z jasno oznaczonymi wersjami, jeśli projekt przechodził kilka iteracji. Plik, w którym obok siebie leżą archiwalne i finalne wersje sekcji bez jasnego oznaczenia, jest częstą przyczyną wdrożenia nieaktualnej wersji projektu.

Bezpieczne przekazanie pliku i dostępów

Ostatni, często pomijany etap to samo przekazanie pliku. Warto ustalić z developerem, czy pracuje na koncie zaproszonym do projektu (co pozwala korzystać z trybu inspekcji i odczytywać dokładne wartości CSS), czy na eksporcie statycznym — ten drugi wariant utrudnia odwzorowanie detali.

Po stronie samego WordPressa warto też pamiętać, że wdrożenie nowego projektu to dobry moment na uporządkowanie dostępów administracyjnych i zabezpieczeń panelu — zwłaszcza gdy strona zastępuje starszą wersję z nieaktualnymi wtyczkami. Więcej na ten temat w artykule o bezpieczeństwie WordPressa.

Najczęstsze pytania

Czy każdy projekt z Figmy da się wdrożyć w WordPressie 1:1?

Tak, o ile projekt jest kompletny — zawiera auto layout, warianty responsywne, zdefiniowane stany interakcji i uporządkowaną strukturę komponentów. Odwzorowanie 1:1 dotyczy warstwy wizualnej i zachowania strony, a nie dosłownie każdego piksela, bo przeglądarki renderują tekst nieco inaczej niż program graficzny.

Kto powinien przygotować specyfikację dla developera — projektant czy agencja wdrożeniowa?

Najczęściej robi to projektant przy wsparciu agencji wdrożeniowej, która wie, jakich informacji brakuje jej najczęściej. Dobra praktyka to ustalenie zakresu specyfikacji jeszcze przed rozpoczęciem projektowania.

Co, jeśli projekt w Figmie już istnieje, ale nie ma auto layoutu ani wariantów?

Taki plik da się wdrożyć, ale deweloper będzie musiał podjąć więcej decyzji samodzielnie, co zwiększa ryzyko rozbieżności. Zwykle opłaca się zainwestować kilka godzin w uzupełnienie auto layoutu i stanów interakcji przed przekazaniem pliku do wdrożenia.

Czy wdrożenie w WordPressie ogranicza to, co można zaprojektować w Figmie?

Nie ogranicza — WordPress z dedykowanym motywem pozwala wdrożyć praktycznie dowolny układ zgodny z zasadami responsywności. Ograniczenia pojawiają się głównie tam, gdzie wdrożenie opiera się na gotowym szablonie lub page builderze, które narzucają własne struktury — różnice te opisujemy w artykule o dedykowanym motywie WordPress a gotowym szablonie.

Ile trwa wdrożenie projektu z Figmy do WordPressa?

Zależy od liczby podstron, złożoności komponentów i tego, jak kompletny jest przekazany plik. Dobrze przygotowany projekt z auto layoutem, wariantami i specyfikacją skraca czas wdrożenia, bo deweloper nie musi zatrzymywać pracy, żeby dopytywać o brakujące decyzje.

Jeśli masz gotowy projekt w Figmie i zależy Ci na wdrożeniu, które odwzoruje go wiernie — bez rundy poprawek i tłumaczenia się z rozjazdów w odstępach czy stanach przycisków — sprawdź, jak wygląda proces w ofercie Figma to WordPress.