ساخت چیدمان چندستونه در CSS
چیدمان چندستونه (Multi-column) در CSS راه ساده و قدرتمندی برای تقسیم محتوا به ستونهای متوالی شبیه روزنامه یا مجله است. این روش برای متنهای طولانی، صفحات خبری، و نسخههای چاپی بسیار مناسب است و بدون پیچیدگیهای مرتبط با Grid یا Flex، خوانایی و بازflow طبیعی را حفظ میکند.
مزایا و کاربردها
- خوانایی بهتر متنهای طولانی و اسناد خبری.
- ایجاد نسخههای چاپی و لیاوت شبیه روزنامه بدون نیاز به markups پیچیده.
- پیادهسازی سریع در صفحات بلاگ، مقالات و مستندات.
- ادغام ساده با media queries برای پاسخگویی به اندازه صفحه.
خواص اصلی و معانی آنها
| خاصیت | توضیح |
|---|---|
| columns | ترکیب column-width و column-count برای تعیین تعداد یا عرض ستونها. |
| column-count | تعداد ستونها را مشخص میکند. |
| column-width | حداقل عرض پیشنهادی برای هر ستون. |
| column-gap | فاصلهٔ بین ستونها. |
| column-rule | خط بین ستونها (عرض، سبک، رنگ). |
| column-fill | نحوهٔ پر شدن ستونها (balance یا auto). |
| break-inside | جلوگیری از شکستن عناصر داخل ستون (مثلاً تصاویر یا کارتها). |
| column-span | امکان گسترش یک عنصر در تمام ستونها (پشتیبانی مرورگرها را بررسی کنید). |
مثال پایه — ایجاد سه ستون
/* CSS */.article {
columns: 3 200px; /* 3 ستون با حداقل عرض 200px */ column-gap: 24px;
column-rule: 1px solid #e0e0e0;
column-fill: balance;
hyphens: auto;
}
/* ساختار HTML ساده */<div class="article">
<p>متن طولانی...</p>
</div>این کد سه ستون ایجاد میکند که هر ستون حداقل 200px عرض دارد. خاصیت columns معادل تعریف همزمان column-count و column-width است. column-gap فاصلهٔ ستونها را تعیین میکند و column-rule یک خط ظریف بین ستونها رسم میکند. column-fill: balance تلاش میکند محتوا بین ستونها متعادل شود.
جلوگیری از شکستن عناصر داخلی (تصاویر، کارتها، عناوین)
/* CSS */.article img,
.article .card {
break-inside: avoid;
-webkit-column-break-inside: avoid; /* برای مرورگرهای قدیمیتر */ margin-bottom: 16px;
}
.article h2 {
column-span: all; /* باعث میشود عنوان در تمام ستونها نمایش یابد */ -webkit-column-span: all;
}این قوانین از شکستن تصاویر یا عناصر کارتمانند بین ستونها جلوگیری میکنند. همچنین با column-span: all میتوانید عناوین یا بلوکهایی را که باید در عرض کامل ستونها باشند، بهصورت سراسری نمایش دهید. توجه کنید که برای سازگاری بهتر از پیشوندهای -webkit- نیز استفاده شده است و همیشه پشتیبانی مرورگرها را چک کنید.
پاسخیسازی و ترکیب با Grid هنگامی که نیاز است
/* CSS: استفاده از Grid در موبایل و multi-column در دسکتاپ */.content {
columns: 3 220px;
column-gap: 20px;
}
@media (max-width: 800px) {
.content {
columns: 1; /* یا غیرفعال کردن multi-column و استفاده از grid/flex */ display: grid;
grid-template-columns: 1fr;
gap: 16px;
}
}در موبایل معمولاً ستونهای متعدد مناسب نیستند، بنابراین در media query بالا از یک ستون یا جایگزینی با Grid برای کنترل بهتر اندازهها و فاصلهها استفاده شده است. این ترکیب انعطافپذیری و دسترسیپذیری را افزایش میدهد.
بهینهسازی برای چاپ و خوانایی
- برای خروجی چاپ، column-fill: auto ممکن است رفتار بهتری داشته باشد تا ستونها بهصورت طبیعی پر شوند.
- فعال کردن hyphens: auto و استفاده از فونت مناسب، از ایجاد فاصلهٔ زیاد در سطرها جلوگیری میکند.
- از break-inside: avoid برای جلوگیری از شکست عناصر حساس در بین ستونها استفاده کنید.
معایب و محدودیتها
- ترتیب منطقی خواندن همیشه از بالا به پایین و سپس ستون بعدی است؛ اگر محتوای شما نیازمند ترتیب پیچیدهتری است، Grid مناسبتر است.
- برخی ویژگیها مانند column-span یا رفتارهای مربوط به شکست ممکن است بین مرورگرها متفاوت باشند؛ تست مرورگر الزامی است.
- عنصرهای فلوته (floats) داخل ستونها میتوانند مشکلساز شوند؛ بهتر است از آنها اجتناب یا واضح مدیریت کنید.
نکات حرفهای و توصیهها
- همیشه از ترکیب break-inside: avoid و پیشوند
-webkit-column-break-insideبرای سازگاری بهتر استفاده کنید. - از column-gap بهجای margin برای فاصلهها استفاده کنید تا مرورگرها بهتر بتوانند ترازبندی را مدیریت کنند.
- برای المانهایی که باید سرتاسری شوند (مانند عنوان فصل) از column-span: all استفاده کنید و برای مرورگرهای قدیمیتر fallback تعریف کنید (مثلاً نمایش عنوان قبل از container یا استفاده از display:block با width:100%).
- برای محتواهای دارای ترتیب منطقی حساس (مانند فهرستهای قدمبهقدم) از Grid یا Flexbox استفاده کنید تا کنترل ترتیب عناصر بهتر باشد.
جمعبندی
CSS Multi-column ابزاری ساده، کمهزینه و قدرتمند برای ایجاد چیدمانهای چندستونه است که بهخوبی برای متنهای طولانی، مقالات و خروجی چاپی مناسب است. با درک خواص column-count، column-width، column-gap و مدیریت شکست عناصر، میتوانید لیاوتهای حرفهای، خوانا و پاسخگو بسازید. در موارد نیاز به کنترل دقیق ترتیب و شبکهبندی پیچیده، ترکیب یا جایگزینی با Grid توصیه میشود.
آیا این مطلب برای شما مفید بود ؟




