تبدیل CSS Grid Layout به Flexbox: راهنمای گام‌به‌گام

converting css grid to flexbox guide
20 آبان 1403

راهنمایی برای توسعه‌دهندگان

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

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

در این راهنما، شما با متدهایی که بتونید به راحتی CSS Grid Layout خودتون رو به Flexbox تبدیل کنید، آشنا می‌شید. این تبدیل ممکنه در ابتدا کمی پیچیده به نظر بیاد، اما اگه اصول هر دو تکنیک رو به خوبی درک کنید، می‌بینید که چقد راحت می‌تونید این کار رو بکنید.

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

<!-- نمونه‌ای از کد Grid -->
<div class="grid-container">
<div class="grid-item">1</div>
<div class="grid-item">2</div>
<div class="grid-item">3</div>
</div>

.grid-container {
display: grid;
grid-template-columns: auto auto auto;
gap: 10px;
}

-- نمونه‌ای از کد تبدیل شده به Flexbox -->
<div class="flex-container">
<div class="flex-item">1</div>
<div class="flex-item">2</div>
<div class="flex-item">3</div>
</div>

.flex-container {
display: flex;
justify-content: space-around;
gap: 10px;
}

شرح خط به خط کد:

<div class="grid-container">
این بخش، container اصلی برای آیتم‌های Grid است.
.grid-container { display: grid; }
نمایش container را به Grid تغییر می‌دهد.
grid-template-columns: auto auto auto;
تعیین تعداد ستون‌ها و عرض آنها در Grid.

<div class="flex-container">
container جدید برای Flexbox ایجاد شده است.
.flex-container { display: flex; }
نمایش container را به Flexbox تغییر می‌دهد.
justify-content: space-around;
آیتم‌ها را با فاصله یکنواخت در درون container توزیع می‌کند.

سوالات متداول

؟

چرا باید Grid را به Flexbox تبدیل کنم؟

؟

چطور می‌توانم Flexbox را بهتر درک کنم؟

؟

چه زمانی بهتر است از Grid به جای Flexbox استفاده کنم؟

؟

آیا Flexbox و Grid با هم استفاده می‌شوند؟