میلاد باقری
میلاد باقری
خواندن ۱۲ دقیقه·۹ ماه پیش

هرچیزی که توسعه دهندگان وب باید راجب فیگما بدانند

برای اینکه همکاری خوبی داشته باشیم، لازمه که توانایی‌ها و محدودیت‌های ابزارهای همدیگه رو بفهمیم. واسه همین می‌خوام دنیای طراحی و همه رازهای کوچیک Figma که شاید باهاشون آشنا نباشی رو نشونت بدم.برای اینکه همکاری خوبی داشته باشیم، لازمه که توانایی‌ها و محدودیت‌های ابزارهای همدیگه رو بفهمیم. واسه همین می‌خوام دنیای طراحی و همه رازهای کوچیک Figma که شاید باهاشون آشنا نباشی رو نشونت بدم.

1 - کار با کامپوننت‌ها و واریانت‌ها در فیگما

  • کامپوننت ها در فیگما

در فیگما، می‌تونیم قطعات رابط کاربری قابل استفاده‌ی مجدد (کامپوننت) بسازیم و ازشون چندین بار استفاده کنیم. علاوه بر این، امکان لانه‌سازی کامپوننت‌ها هم وجود داره. این قابلیت‌ها به ما اجازه می‌دهن الگوی طراحی اتمی رو به خوبی پیاده‌سازی کنیم.

  • همچنین ما واریانت ها را داریم

در فیگما، علاوه بر قابلیت‌های قبلی، می‌تونیم مجموعه‌ای از کامپوننت‌ها به‌نام مجموعه کامپوننت (component set) بسازیم که حاوی واریانت‌های مختلفی هستن. این واریانت‌ها رو می‌تونیم از طریق پنل Properties به راحتی تو کل طرحمون عوض کنیم. به این ترتیب، همه حالت‌های مختلف یک کامپوننت رو برای مستندسازی تو یه جا داریم.

واریانت‌های فیگما می‌تونن تک‌بعدی یا چندبعدی باشن و شامل چندین ویژگی همزمان بشن. یعنی فقط به تغییر یه رنگ محدود نمی‌مونیم، بلکه می‌تونیم ترکیبی از ویژگی‌ها رو تغییر بدیم.

نکته: یه راه سریع برای تغییر کلی یه کامپوننت!

اگه تو فیگما نیاز به چیزی دارید که کل ظاهر یه کامپوننت رو دگرگون کنه، مثلاً حالت روشن/تاریک، می‌تونید از ویژگی درست/نادرست (true/false) یا بله/خیر (yes/no) استفاده کنید. با این کار یه کلید یهویی برای کل کامپوننت ایجاد کردید!

این ترفند رو تو کیت رابط کاربری فوق‌العاده‌ی iOS 16 برای فیگما که توسط Joey Banks طراحی شده دیدم. به نظرم بهترین تنظیمات فایلی بود که تا الان دیدم!

  • قابلیت جدید جذاب: Properties برای کامپوننت‌های فیگما

فیگما توی مارس ۲۰۲۲ یه آپشن فوق‌العاده به اسم Properties (ویژگی‌ها) اضافه کرد. فکر می‌کنم خیلی از توسعه‌دهنده‌ها هنوز نمی‌دونن میشه از این قابلیت توی طراحی استفاده کرد. فعلاً ویژگی‌های جذابی مثل متن، تعویض و روشن/خاموش داریم. و خب، میشه همه این‌هارو با هم ترکیب کرد تا کارای بیشتری انجام داد.

  • کتابخانه های محلی و خارجی

همونطور که تو کد، می‌تونیم بخش‌های قابل استفاده‌ی مجدد رو به صورت محلی ذخیره کنیم یا کتابخونه‌های خارجی درست کنیم، فیگما هم این امکان رو برای کامپوننت‌ها و استایل‌ها فراهم کرده.

با این کار، می‌تونیم اجزا رو توی چندین فایل فیگما استفاده کنیم، در حالی که یه مرجع اصلی قابل اعتماد و ساختار مرتب رو حفظ می‌کنیم.

  • هماهنگ‌سازی کامپوننت‌های UI و کد: یک بازی تیمی!

با ظهور کامپوننت‌ها، واریانت‌ها و ویژگی‌ها در دنیای طراحی، امکان هماهنگ‌سازی دقیق‌تر کامپوننت‌های رابط کاربری (UI) با کامپوننت‌های کد فراهم شده. اما برای رسیدن به این هماهنگی، نیاز به تبادل اطلاعات داریم. پس بیایید دور هم جمع بشیم، یه قهوه بخوریم و از ساختار، نام‌گذاری، عملکرد و هر جزئیاتی که لازمه، برامون بگید.

خوشبختانه منابع زیادی مثل ویدیو و آموزش برای الهام‌گرفتن از روش‌های هماهنگ‌سازی مختلف تیم‌های دیگه‌ هم وجود داره. من یه راهنمایی اولیه می‌کنم، بقیه‌ی مسیر رو خودتون کشف کنید.

  • یه میانبر باحال برای ارتباط دادن کامپوننت‌های UI و کد در فیگما

می‌خواین بدون دردسر و نوشتن کلی توضیحات، کامپوننت‌های فیگما رو به یه پایگاه کد متصل کنین؟ می‌تونید از قابلیت مستندات کامپوننت (یه کم مخفی) توی فیگما استفاده کنید. با اضافه کردن یه لینک و توضیحات، یه دکمه توی تب بازرسی (Inspect) درست می‌شه که مستقیماً به بخش مربوط به اون کامپوننت تو کد (مثلاً صفحه گیت‌هاب) وصل می‌شه. علاوه بر این، جستجوی کامپوننت‌های فیگما هم اون توضیحات رو نشون می‌ده که تو سیستم‌های بزرگ‌تر خیلی به درد می‌خوره.

  • کامپوننت‌های فیگما رو مستقیم تو مستنداتت جاساز کن

می‌خواین کامپوننت‌های فیگما رو به راحتی تو جاهایی مثل Notion، گیت هاب و بقیه برنامه‌ها نشون بدین؟ خیلی ساده می‌تونید لینک فایلتون (یا فریم مورد نظر) رو کپی (Cmd + L) کنید و به طور زنده تو مستنداتتون جاسازیش کنید.

این یه راه فوق‌العاده‌ست واسه اینکه طراحی‌هاتون رو به صورت پویا (و البته همزمان با تغییر فایل فیگما) مستقیماً تو مستندات موجودتون (که احتمالاً بیشتر متنی و کدی هستن) نمایش بدین.

  • خلق محیط تست و جابجایی کتابخانه‌های کامپوننت در فیگما

وقتی کامپوننت‌ها و استایل‌ها تو دو کتابخونه‌ی مختلف اسم یکسانی داشته باشن، می‌تونید اون‌ها رو با هم عوض کنید. این یه فرصت عالی برای ساختن محیط‌های تستی در فیگما قبل از انتقال یه استایل یا کامپوننت جدید به فایل اصلی هست. البته این قابلیت بیشتر به درد سیستم‌های پیشرفته‌‌ای می‌خوره که کد و کامپوننت‌ها از قبل با هم هماهنگ شده باشن.

  • هماهنگی کامپوننت‌ها با Storybook: یه داستان جذاب!

برای هماهنگی بین کامپوننت‌های رابط کاربری (UI) و کامپوننت‌های کد، چندتا پلاگین وجود داره. از بینشون، به نظر میاد Storybook Connect پرامیدوارکننده‌ترین باشه. راستی، اگه از این پلاگین خفن استفاده می‌کنین، چطور کدتون رو باهاش هماهنگ می‌کنین؟ تیم فیگما خیلی علاقه‌منده بدونه و اون رو اضافه کنه!

هماهنگ‌سازی کامپوننت‌ها با کد می‌تونه فوق‌العاده باشه، اما یه نکته رو نباید فراموش کرد: این کار نیاز به تلاش و مهم‌تر از اون، به‌روزرسانی مداوم داره. پس بهتره فقط تو شرایط مناسب ازش استفاده بشه، مثلاً تو یه سیستم جامع طراحی.

اگه دارین یه وب‌سایت تک‌صفحه‌ای طراحی می‌کنین، می‌تونید بازم از کامپوننت‌ها استفاده کنید. این باعث می‌شه طراحی تمیز و مقیاس‌پذیر باشه و ساختار مشخصی برای کدنویسی داشته باشین. اما لزوماً نیازی نیست این کامپوننت‌ها با کد کاملاً هماهنگ باشن.

مثلاً فکر نمی‌کنه کسی برای پختن یه کیک تولد برای دوستش، خط تولید کارخونه‌ی کیک‌سازی رو راه بندازه! اما باز هم از همون مواد اولیه‌ی پایه استفاده می‌کنه.

به عبارت دیگه، می‌تونید از مزایای کامپوننت‌ها مثل سازماندهی بهتر و ساختار تمیز بهره ببرید، بدون اینکه نیاز باشه همیشه یه پروسه‌ی هماهنگ‌سازی کامل با کد رو طی کنید. کلید ماجرا اینه که بفهمید کی و کجا استفاده از این قابلیت منطقی و مفیده.

2 - کار با استایل ها در فیگما, هرچند نه چندان پیشرفته

  • مفید ولی محدود!

تو فیگما می‌تونیم استایل‌هایی برای رنگ، متن، گرید، سایه، بلور و موارد مشابه بسازیم و اون‌ها رو تو کل طراحی اعمال کنیم. اما متاسفانه امکانات دیگه زیادی نداره.

هیچ راه حل جادویی وجود نداره

فیگما امکان مستندسازی خودکار استایل‌ها رو نداره، اما این باعث نمی‌شه تیم‌های طراحی بی‌خیال مستندسازی بشن. معمولاً تیم‌ها برای حفظ انسجام و هماهنگی، به چند روش اقدام می‌کنن:

  • مستندسازی داخلی: توضیحات مربوط به هر استایل و نحوه استفاده‌ش رو مستقیماً داخل همون فایل فیگما کنار خود استایل می‌نویسن.
  • فایل مستقل: یه فایل جداگانه برای ثبت و توضیح دادن همه استایل‌ها و قواعد طراحی پروژه اختصاص می‌دن.
  • لینک به استایل‌های خارجی: مشابه کاری که با کامپوننت‌ها می‌کنیم، می‌تونن به استایل‌هایی که تو یه فایل دیگه تعریف شدن، لینک بدن.
  • فرصت‌های اتصال بین طراحی و کد: پلاگین توکن‌های فیگما

مشکل: استایل‌های فیگما تا حدودی محدود هستند و نمی‌تونن با هم تعامل داشته باشن. مثلاً نمی‌تونید یه اندازه‌ی فونت پایه تنظیم کنید که مقیاس‌پذیر باشه و نرخ مقیاس‌گذاری رو به صورت خودکار تغییر بده. فقط می‌تونید یه اندازه‌ی ثابت تنظیم کنید. همچنین، فعلاً استایل‌های سیستم فاصله‌گذاری نداریم.

راه‌حل: پلاگین Figma Tokens به شما امکان می‌ده توکن‌های مختلفی رو در فیگما ایجاد کنید و با اون‌ها کار کنید. حتی می‌تونید این توکن‌ها رو به توکن‌های کد متصل کنید و هماهنگ‌سازی انجام بدین.

3 - ما می‌تونیم طراحی ریسپانسیو رو راه‌اندازی و تست کنیم

طراحی ریسپانسیو یعنی مطمئن شدن از نمایش درست و کارآمد وبسایت یا اپلیکیشن روی هر نوع صفحه نمایش و دستگاهی. فیگما ابزارهای قدرتمندی داره که می‌تونن ما رو تو این مسیر همراهی کنن. بیایم گام به گام باهاشون آشنا بشیم:

ابزارهای فیگما برای طراحی ریسپانسیو:

  • چیدمان خودکار (Auto Layout): این قابلیت به شما اجازه می‌ده عناصر رو طوری مرتب کنید که به صورت خودکار با تغییر سایز صفحه نمایش، تغییر سایز و موقعیت بدن. مثلاً می‌تونید چند تا دکمه رو کنار هم قرار بدین که با کوچیک شدن صفحه، به صورت ردیفی زیر هم چیده بشن.
  • محدودیت‌ها (Constraints): با استفاده از محدودیت‌ها می‌تونید موقعیت نسبی عناصر رو نسبت به هم یا نسبت به لبه‌های صفحه مشخص کنید. این کار باعث می‌شه طراحی شما منظم و متناسب بمونه، حتی با تغییر سایز صفحه.
  • سیستم شبکه‌ای (Grid): شبکه به شما کمک می‌کنه عناصر رو تراز و مرتب روی صفحه بچینید. با استفاده از grid، می‌تونید فاصله‌های یکسان بین عناصر و ستون‌ها و ردیف‌های منظم ایجاد کنید.

"یه نکته خیلی مهم که توسعه‌دهنده‌ها باید بدونن اینه که تو فیگما ما نقاط شکست (breakpoints) خودکار نداریم (یه کم جلوتر در مورد چگونگی مقابله با این موضوع صحبت می‌کنم)."

  • چیدمان خودکار: قدرتمند و کمی پیچیده!

چیدمان خودکار فیگما یه ابزار فوق‌العاده برای طراحی‌های ریسپانسیو هستش، ولی برای عادت کردن بهش به تمرین و کمی صبوری نیاز داره. نگران نشید، به مرور خیلی به درد بخور می‌شه! چیدمان خودکار تا حدودی شبیه به Flexbox کار می‌کنه که با یه نگاه به پنل Inspect می‌تونید متوجهش بشید.

با چیدمان خودکار می‌تونید:

  • فاصله بین آیتم‌ها: فاصله مثبت برای ایجاد فضا یا منفی برای کنار هم قرار دادن عناصر.
  • پدینگ (حاشیه) جداگانه برای هر طرف: کنترل فضای خالی دور هر آیتم به صورت مجزا.
  • ترازبندی: چگونگی چیدمان آیتم‌ها نسبت به هم (چپ، راست، وسط و غیره).
  • حالت فرزندان: حالت "فشرده" (مثل منوی ناوبری) یا "با فاصله" برای کنترل میزان فضای خالی بین آیتم‌ها.
  • رفتار تغییر اندازه: چگونگی تغییر سایز عنصر با تغییر فریم (پر کردن کل فریم، تطبیق با محتوا یا اندازه ثابت).
  • لانه‌سازی چیدمان خودکار: ساخت کامپوننت‌های حرفه‌ای یا حتی صفحات کامل با ترکیب چند چیدمان خودکار.
  • عناصر با موقعیت نسبی: اضافه کردن عناصر با موقعیت نسبی داخل فریم چیدمان خودکار (قابلیت جدید).
  • تطبیق خودکار با محتوای جدید: با اضافه شدن محتوای جدید، چیدمان به صورت خودکار تنظیم می‌شه و باقی تنظیمات حفظ می‌شن.
  • محدودیت‌ها (Constraints): ساده و کاربردی!

محدودیت‌ها یه روش دیگه برای چیدن و سازماندهی عناصر تو فیگما هستن که نسبت به چیدمان خودکار، کار باهاشون ساده‌تره. با استفاده از محدودیت‌ها می‌تونید موقعیت یه عنصر رو نسبت به فریم اصلی (والد) اون مشخص کنید. در این صورت، موقعیت عنصر با تغییر سایز فریم تغییر می‌کنه، اما با تغییر محتوای خود عنصر تغییری نمی‌کنه.

یه نکته مهم: توی یه فریم نمی‌تونید همزمان از چیدمان خودکار (Auto Layout) و محدودیت‌ها (Constraints) استفاده کنید. باید یکی رو انتخاب کنید. (یه استثنای کوچیک برای عناصر با موقعیت نسبی داخل چیدمان خودکار وجود داره). بین این دو روش بهتر یا بدتری وجود نداره، همه چیز به نوع طراحی و نیازتون بستگی داره.

  • سیستم شبکه‌ای (Grid): ساختار و نظم در طراحی

با استفاده از سیستم شبکه‌ای یا Grid می‌تونید نظم و ساختار رو به طراحی‌های خودتون تو فیگما اضافه کنید. Grid به شما کمک می‌کنه تا عناصر رو به صورت مرتب و منظم در کنار هم بچینید و فاصله‌های بین اون‌ها رو به طور دقیق کنترل کنید.

  • ترکیب شبکه و محدودیت‌ها: یه راه حل جذاب برای ریسپانسیو

یکی از ویژگی‌های باحال استفاده از شبکه (Grid) در یه فریم اینه که وقتی از محدودیت‌ها (Constraints) استفاده می‌کنین، اون‌ها ستون‌های شبکه رو به عنوان فریم والد در نظر می‌گیرن. با ترکیب شبکه و محدودیت‌ها، می‌تونیم به راحتی و به شکل فوق‌العاده‌ای طراحی‌های ریسپانسیو (سازگار با سایزهای مختلف صفحه) پیاده‌سازی کنیم.

نکته: فیگما یه ویژگی فوق‌العاده داره به اسم نستینگ (تو در تو چیدن). می‌تونید فریم‌ها رو داخل هم قرار بدین و با این کار سازماندهی و مدیریت طراحی‌هاتون رو آسون‌تر کنید.

محدودیت:

استفاده از شبکه‌های تودرتو برای تست‌های سریع یا راه‌اندازی‌های ساده عالیه. اما به محض اینکه محتوای بیشتری اضافه کنید، متوجه می‌شین که حاشیه‌ها و فاصله‌گذاری‌ها (padding) با تغییر اندازه صفحه نمایش، سازگار نمی‌شن. این یه محدودیت فیگما هستش. تو کد CSS این مورد به درستی کار می‌کنه.

  • ترکیب شبکه، محدودیت‌ها و چیدمان خودکار: یه راه‌حل خلاقانه!

یادمون باشه که نمی‌تونیم داخل یه فریم به صورت همزمان از چیدمان خودکار (Auto Layout) و محدودیت‌ها (Constraints) استفاده کنیم. اما یه ترفند جذاب وجود داره:

  1. می‌تونیم یه فریم والد با شبکه (Grid) داشته باشیم.
  2. داخل این فریم والد، چند تا عنصر با چیدمان خودکار (Auto Layout) قرار بدیم.
  3. حالا می‌تونیم به دور این عناصر داخل فریم والد، محدودیت‌ها اعمال کنیم.

با این کار، چی به دست می‌آریم؟

  • محتوای انعطاف‌پذیر: وقتی سایز فریم والد تغییر می‌کنه، چیدمان خودکار عناصر داخلی خودش رو با حفظ تنظیماتش دوباره مرتب می‌کنه.
  • کنترل دقیق با محدودیت‌ها: با استفاده از محدودیت‌ها، عناصر رو نسبت به شبکه یا لبه‌های فریم والد فیکس می‌کنیم و موقعیت نسبی‌شون رو به طور دلخواه تنظیم می‌کنیم.
  • مزایای هر دو روش: از نظم شبکه و انعطاف‌پذیری چیدمان خودکار به صورت همزمان استفاده می‌کنیم.

محدودیت:

هنوز یه محدودیت باقی می‌مونه؛ اونم اینه که با این روش، فاصله‌گذاری افقی (spacing) بین عناصر به صورت خودکار تغییر نمی‌کنه. شاید با خودتون بگید «خب پس اگه همه‌چی رو تبدیل به چیدمان خودکار کنم چی؟» و جواب اینه که بله، می‌تونید این کار رو انجام بدین!

  • طراحی با چیدمان خودکار کامل صفحات: آزادی و انعطاف!

تا اینجا دیدیم که چطور میشه با ترکیب شبکه، محدودیت‌ها و چیدمان خودکار به طراحی‌های ریسپانسیو خوبی رسید. اما اگه دنبال آزادی و انعطاف‌پذیری بیشتری هستید، می‌تونید کل صفحه رو با چیدمان خودکار پیاده‌سازی کنید. دو روش برای این کار وجود داره:

1. تقلید از شبکه کلاسیک:

  • یه شبکه سنتی با تعداد ستون و فاصله‌گذاری دلخواهتون تصور کنید.
  • حالا با چیدمان خودکار، عناصر رو داخل صفحه بچینید و فاصله بین اون‌ها رو برابر با فاصله‌گذاری شبکه‌ی تصوریتون تنظیم کنید.
  • با این کار به نتیجه‌ای مشابه شبکه سنتی رسیدید، بدون نیاز به خود شبکه!

2. بدون محدودیت شبکه:

  • اصلاً از شبکه استفاده نکنید! طراحی اولیه رو انجام بدید و بعد موقع کد زدن با Flexbox یا CSS Grid اون رو پیاده‌سازی کنید.
  • در مرحله آخر، می‌تونید با چیدمان خودکار فیگما، تنظیمات نهایی مثل فاصله‌گذاری و ریسپانسیو رو انجام بدین.
  • حتی می‌تونید ترکیب چیدمان ثابت و سیال (fluid) رو برای کنترل بیشتر داشته باشید.

محدودیت:

  • چیدمان خودکار عناصر رو به طور مساوی توزیع می‌کنه. نمی‌تونید یه عنصر رو ۶۰% و دیگری رو ۴۰% صفحه کنید، چون هر دو به ۵۰% تغییر می‌کنن.
  • برای کنترل دقیق سایز عناصر، می‌تونید یکی رو ثابت و بقیه رو سیال تنظیم کنید.

تا اینجا دیدیم که چطور میشه با ترکیب شبکه، محدودیت‌ها و چیدمان خودکار به طراحی‌های ریسپانسیو خوبی رسید. اما اگه دنبال آزادی و انعطاف‌پذیری بیشتری هستید، می‌تونید کل صفحه رو با چیدمان خودکار پیاده‌سازی کنید. دو روش برای این کار وجود داره:

1. تقلید از شبکه کلاسیک:

  • یه شبکه سنتی با تعداد ستون و فاصله‌گذاری دلخواهتون تصور کنید.
  • حالا با چیدمان خودکار، عناصر رو داخل صفحه بچینید و فاصله بین اون‌ها رو برابر با فاصله‌گذاری شبکه‌ی تصوریتون تنظیم کنید.
  • با این کار به نتیجه‌ای مشابه شبکه سنتی رسیدید، بدون نیاز به خود شبکه!

2. بدون محدودیت شبکه:

  • اصلاً از شبکه استفاده نکنید! طراحی اولیه رو انجام بدید و بعد موقع کد زدن با Flexbox یا CSS Grid اون رو پیاده‌سازی کنید.
  • در مرحله آخر، می‌تونید با چیدمان خودکار فیگما، تنظیمات نهایی مثل فاصله‌گذاری و ریسپانسیو رو انجام بدین.
  • حتی می‌تونید ترکیب چیدمان ثابت و سیال (fluid) رو برای کنترل بیشتر داشته باشید.

محدودیت:

  • چیدمان خودکار عناصر رو به طور مساوی توزیع می‌کنه. نمی‌تونید یه عنصر رو ۶۰% و دیگری رو ۴۰% صفحه کنید، چون هر دو به ۵۰% تغییر می‌کنن.
  • برای کنترل دقیق سایز عناصر، می‌تونید یکی رو ثابت و بقیه رو سیال تنظیم کنید.

----

خب خب

به پایان امد این دفتر عزیزان

این قسمت اول :)

فیگماچیدمان خودکاررابط کاربریوبفرانت اند
شاید از این پست‌ها خوشتان بیاید