شبکه CSS
با نحوه فعال کردن، استفاده و سفارشی کردن سیستم چیدمان جایگزین ساخته شده بر روی CSS Grid با مثال ها و تکه های کد آشنا شوید.
سیستم شبکه پیشفرض Bootstrap نشاندهنده اوج بیش از یک دهه تکنیکهای چیدمان CSS است که توسط میلیونها نفر آزمایش و آزمایش شده است. اما، همچنین بدون بسیاری از ویژگیها و تکنیکهای مدرن CSS که در مرورگرهایی مانند CSS Grid جدید میبینیم، ایجاد شد.
چگونه کار می کند
با Bootstrap 5، ما گزینه ای را اضافه کرده ایم که یک سیستم شبکه جداگانه را فعال می کند که بر روی CSS Grid ساخته شده است، اما با یک پیچش بوت استرپ. شما هنوز هم کلاسهایی دریافت میکنید که میتوانید برای ایجاد طرحبندیهای واکنشگرا، اما با رویکردی متفاوت، از روی هوس استفاده کنید.
-
CSS Grid انتخاب شده است. با تنظیم، سیستم شبکه پیشفرض را غیرفعال کنید و با تنظیم
$enable-grid-classes: false
CSS Grid را فعال کنید$enable-cssgrid: true
. سپس، Sass خود را دوباره کامپایل کنید. -
نمونه های را
.row
با.grid
. کلاس.grid
مجموعه ای را تنظیمdisplay: grid
و ایجاد می کندgrid-template
که شما با HTML خود بر روی آن می سازید. -
.col-*
کلاس ها را با کلاس ها جایگزین کنید.g-col-*
. این به این دلیل است که ستون های CSS Grid ما ازgrid-column
ویژگی به جایwidth
. -
ستون ها و اندازه های ناودان از طریق متغیرهای CSS تنظیم می شوند. اینها را روی والد
.grid
تنظیم کنید و هر طور که می خواهید سفارشی کنید، درون خطی یا در یک شیوه نامه، با--bs-columns
و--bs-gap
.
در آینده، Bootstrap احتمالاً به یک راه حل ترکیبی تغییر خواهد کرد زیرا این gap
ویژگی تقریباً از پشتیبانی کامل مرورگر برای flexbox برخوردار است.
تفاوت های کلیدی
در مقایسه با سیستم شبکه پیش فرض:
-
ابزارهای فلکس به همان شکل بر ستونهای CSS Grid تأثیر نمیگذارند.
-
شکاف ها جایگزین ناودان ها می شوند. این
gap
ویژگی جایگزین افقیpadding
سیستم شبکه پیشفرض ما میشود و بیشتر شبیه به عملکرد میشودmargin
. -
به این ترتیب، بر خلاف
.row
s،.grid
s هیچ حاشیه منفی ندارند و نمی توان از ابزارهای حاشیه برای تغییر ناودان های شبکه استفاده کرد. شکاف های شبکه به طور پیش فرض به صورت افقی و عمودی اعمال می شوند. برای جزئیات بیشتر به بخش سفارشی سازی مراجعه کنید. -
سبک های درون خطی و سفارشی باید به عنوان جایگزینی برای کلاس های اصلاح کننده در نظر گرفته شوند (مثلاً در
style="--bs-columns: 3;"
مقابلclass="row-cols-3"
). -
تودرتو به طور مشابه کار می کند، اما ممکن است از شما بخواهد که تعداد ستون های خود را در هر نمونه از یک تودرتو تنظیم مجدد کنید
.grid
. برای جزئیات بیشتر به بخش تودرتو مراجعه کنید.
مثال ها
سه ستون
.g-col-4
با استفاده از کلاسها میتوان سه ستون با عرض مساوی در تمام نمایپورتها و دستگاهها ایجاد کرد . اضافه کردن کلاس های پاسخگو برای تغییر طرح بندی بر اساس اندازه نمایش.
<div class="grid text-center">
<div class="g-col-4">.g-col-4</div>
<div class="g-col-4">.g-col-4</div>
<div class="g-col-4">.g-col-4</div>
</div>
پاسخگو
از کلاسهای واکنشگرا برای تنظیم طرحبندی خود در نماها استفاده کنید. در اینجا ما با دو ستون در باریکترین ویوپورتها شروع میکنیم و سپس به سه ستون در نمای متوسط و بالاتر میرسیم.
<div class="grid text-center">
<div class="g-col-6 g-col-md-4">.g-col-6 .g-col-md-4</div>
<div class="g-col-6 g-col-md-4">.g-col-6 .g-col-md-4</div>
<div class="g-col-6 g-col-md-4">.g-col-6 .g-col-md-4</div>
</div>
آن را با این طرحبندی دو ستونی در تمام نمایپورتها مقایسه کنید.
<div class="grid text-center">
<div class="g-col-6">.g-col-6</div>
<div class="g-col-6">.g-col-6</div>
</div>
کاغذ بسته بندی
هنگامی که فضای افقی دیگری وجود ندارد، موارد شبکه به طور خودکار به خط بعدی میپیوندند. توجه داشته باشید که در gap
مورد شکاف های افقی و عمودی بین موارد شبکه اعمال می شود.
<div class="grid text-center">
<div class="g-col-6">.g-col-6</div>
<div class="g-col-6">.g-col-6</div>
<div class="g-col-6">.g-col-6</div>
<div class="g-col-6">.g-col-6</div>
</div>
شروع می شود
هدف کلاسهای شروع جایگزینی کلاسهای افست شبکه پیشفرض ما است، اما آنها کاملاً یکسان نیستند. CSS Grid یک الگوی شبکهای را از طریق سبکهایی ایجاد میکند که به مرورگرها میگوید «از این ستون شروع کنند» و «در این ستون ختم شوند». آن خواص هستند grid-column-start
و grid-column-end
. کلاس های شروع برای اولی مختصر هستند. آنها را با کلاسهای ستون جفت کنید تا ستونهای خود را به اندازهای که نیاز دارید، تراز کنید. کلاس های شروع با 1
مقدار 0
نامعتبر برای این ویژگی ها شروع می شوند.
<div class="grid text-center">
<div class="g-col-3 g-start-2">.g-col-3 .g-start-2</div>
<div class="g-col-4 g-start-6">.g-col-4 .g-start-6</div>
</div>
ستون های خودکار
هنگامی که هیچ کلاسی در آیتم های شبکه وجود ندارد (فرزندان مستقیم یک .grid
)، هر آیتم شبکه به طور خودکار به یک ستون اندازه می شود.
<div class="grid text-center">
<div>1</div>
<div>1</div>
<div>1</div>
<div>1</div>
<div>1</div>
<div>1</div>
<div>1</div>
<div>1</div>
<div>1</div>
<div>1</div>
<div>1</div>
<div>1</div>
</div>
این رفتار را می توان با کلاس های ستون گرید مخلوط کرد.
<div class="grid text-center">
<div class="g-col-6">.g-col-6</div>
<div>1</div>
<div>1</div>
<div>1</div>
<div>1</div>
<div>1</div>
<div>1</div>
</div>
لانه سازی
مشابه سیستم شبکه پیشفرض ما، شبکه CSS ما امکان تودرتو کردن آسان .grid
s را میدهد. با این حال، برخلاف حالت پیشفرض، این شبکه تغییرات در ردیفها، ستونها و شکافها را به ارث میبرد. به مثال زیر توجه کنید:
- ما تعداد پیش فرض ستون ها را با یک متغیر CSS محلی لغو می کنیم:
--bs-columns: 3
. - در اولین ستون خودکار، تعداد ستون ها به ارث می رسد و هر ستون یک سوم عرض موجود است.
- در دومین ستون خودکار، تعداد ستونهای تودرتو
.grid
را به ۱۲ (پیشفرض ما) بازنشانی کردهایم. - ستون خودکار سوم محتوای تودرتو ندارد.
در عمل، در مقایسه با سیستم شبکه پیشفرض ما، این امکان را برای طرحبندیهای پیچیدهتر و سفارشیتر فراهم میکند.
<div class="grid text-center" style="--bs-columns: 3;">
<div>
First auto-column
<div class="grid">
<div>Auto-column</div>
<div>Auto-column</div>
</div>
</div>
<div>
Second auto-column
<div class="grid" style="--bs-columns: 12;">
<div class="g-col-6">6 of 12</div>
<div class="g-col-4">4 of 12</div>
<div class="g-col-2">2 of 12</div>
</div>
</div>
<div>Third auto-column</div>
</div>
سفارشی کردن
تعداد ستون ها، تعداد ردیف ها و عرض شکاف ها را با متغیرهای CSS محلی سفارشی کنید.
متغیر | مقدار بازگشتی | شرح |
---|---|---|
--bs-rows |
1 |
تعداد ردیفهای قالب شبکه شما |
--bs-columns |
12 |
تعداد ستون ها در قالب شبکه شما |
--bs-gap |
1.5rem |
اندازه فاصله بین ستون ها (عمودی و افقی) |
این متغیرهای CSS هیچ مقدار پیش فرضی ندارند. در عوض، آنها مقادیر بازگشتی را اعمال می کنند که تا زمانی که یک نمونه محلی ارائه شود استفاده می شود. به عنوان مثال، ما از var(--bs-rows, 1)
ردیفهای شبکه CSS خود استفاده میکنیم که نادیده گرفته میشوند --bs-rows
زیرا هنوز در جایی تنظیم نشده است. پس از آن، .grid
نمونه از آن مقدار به جای مقدار بازگشتی استفاده می کند 1
.
بدون کلاس شبکه
عناصر فرزندان فوری .grid
آیتمهای شبکهای هستند، بنابراین بدون افزودن صریح .g-col
کلاس اندازهگیری میشوند.
<div class="grid text-center" style="--bs-columns: 3;">
<div>Auto-column</div>
<div>Auto-column</div>
<div>Auto-column</div>
</div>
ستون ها و شکاف ها
تعداد ستون ها و شکاف را تنظیم کنید.
<div class="grid text-center" style="--bs-columns: 4; --bs-gap: 5rem;">
<div class="g-col-2">.g-col-2</div>
<div class="g-col-2">.g-col-2</div>
</div>
<div class="grid text-center" style="--bs-columns: 10; --bs-gap: 1rem;">
<div class="g-col-6">.g-col-6</div>
<div class="g-col-4">.g-col-4</div>
</div>
افزودن ردیف ها
افزودن ردیف های بیشتر و تغییر محل قرارگیری ستون ها:
<div class="grid text-center" style="--bs-rows: 3; --bs-columns: 3;">
<div>Auto-column</div>
<div class="g-start-2" style="grid-row: 2">Auto-column</div>
<div class="g-start-3" style="grid-row: 3">Auto-column</div>
</div>
شکاف ها
شکاف های عمودی را فقط با تغییر دادن تغییر دهید row-gap
. توجه داشته باشید که ما gap
روی .grid
s استفاده می کنیم، اما row-gap
و column-gap
می تواند در صورت نیاز اصلاح شود.
<div class="grid text-center" style="row-gap: 0;">
<div class="g-col-6">.g-col-6</div>
<div class="g-col-6">.g-col-6</div>
<div class="g-col-6">.g-col-6</div>
<div class="g-col-6">.g-col-6</div>
</div>
به همین دلیل، می توانید s های عمودی و افقی مختلفی داشته باشید gap
که می توانند یک مقدار واحد (همه ضلع ها) یا یک جفت مقدار (عمودی و افقی) داشته باشند. این را می توان با یک سبک درون خطی برای gap
یا با --bs-gap
متغیر CSS ما اعمال کرد.
<div class="grid text-center" style="--bs-gap: .25rem 1rem;">
<div class="g-col-6">.g-col-6</div>
<div class="g-col-6">.g-col-6</div>
<div class="g-col-6">.g-col-6</div>
<div class="g-col-6">.g-col-6</div>
</div>
ساس
یکی از محدودیتهای CSS Grid این است که کلاسهای پیشفرض ما هنوز توسط دو متغیر Sass $grid-columns
و $grid-gutter-width
. این به طور موثر تعداد کلاس های تولید شده در CSS کامپایل شده ما را از پیش تعیین می کند. شما در اینجا دو گزینه دارید:
- آن متغیرهای پیشفرض Sass را تغییر دهید و CSS خود را دوباره کامپایل کنید.
- از سبک های درون خطی یا سفارشی برای تقویت کلاس های ارائه شده استفاده کنید.
برای مثال، میتوانید تعداد ستونها را افزایش دهید و اندازه شکاف را تغییر دهید، و سپس «ستونهای» خود را با ترکیبی از سبکهای درون خطی و کلاسهای ستون از پیش تعریفشده CSS Grid اندازهگیری کنید (مثلاً .g-col-4
).
<div class="grid text-center" style="--bs-columns: 18; --bs-gap: .5rem;">
<div style="grid-column: span 14;">14 columns</div>
<div class="g-col-4">.g-col-4</div>
</div>