We are still cooking the magic in the way!
إطار Bootstrap 5
أدوات الشبكة والتخصيص
أدوات الشبكة والتخصيص
يوفر Bootstrap 5 فئات أدوات قوية تعزز وظائف الشبكة وتسمح بالتحكم الدقيق في التخطيطات. دعنا نستكشف أدوات الشبكة المتقدمة وخيارات التخصيص.
1. التحكم المتقدم في الفراغات
أتقن فن التباعد مع أدوات الفراغات الشاملة:
<!-- أحجام الفراغات القياسية -->
<div class="row g-0"> <!-- 0rem / 0px -->
<div class="col">بدون فراغ</div>
</div>
<div class="row g-1"> <!-- 0.25rem / 4px -->
<div class="col">فراغ صغير جدًا</div>
</div>
<div class="row g-2"> <!-- 0.5rem / 8px -->
<div class="col">فراغ صغير</div>
</div>
<div class="row g-3"> <!-- 1rem / 16px -->
<div class="col">فراغ افتراضي</div>
</div>
<div class="row g-4"> <!-- 1.5rem / 24px -->
<div class="col">فراغ متوسط</div>
</div>
<div class="row g-5"> <!-- 3rem / 48px -->
<div class="col">فراغ كبير</div>
</div>
<!-- فراغات اتجاهية -->
<div class="row gx-5"> <!-- أفقي فقط -->
<div class="col-6">تباعد أفقي واسع</div>
<div class="col-6">تباعد أفقي واسع</div>
</div>
<div class="row gy-5"> <!-- عمودي فقط -->
<div class="col-12">تباعد عمودي طويل</div>
<div class="col-12">تباعد عمودي طويل</div>
</div>
<!-- فراغات متجاوبة -->
<div class="row g-2 g-sm-3 g-md-4 g-lg-5">
<div class="col-6">الفراغات تنمو مع حجم الشاشة</div>
<div class="col-6">الفراغات تنمو مع حجم الشاشة</div>
</div>
<!-- فراغات اتجاهية مختلطة -->
<div class="row gx-3 gy-4">
<div class="col-6">فراغات أفقية وعمودية مختلفة</div>
<div class="col-6">فراغات أفقية وعمودية مختلفة</div>
</div>
مرجع سريع للفراغات:
g-*- يعيّن كلاً من الفراغات الأفقية والعموديةgx-*- فراغات أفقية فقط (حشوة يسار ويمين)gy-*- فراغات عمودية فقط (هوامش أعلى وأسفل)- الأحجام: 0، 1 (0.25rem)، 2 (0.5rem)، 3 (1rem)، 4 (1.5rem)، 5 (3rem)
- أضف نقاط توقف:
g-md-4،gx-lg-5
2. أداة أعمدة الصف
أنشئ بسرعة أعمدة متساوية العرض دون فئات col-* صريحة:
<!-- row-cols الأساسية: جميع الأطفال بعرض متساوٍ -->
<div class="row row-cols-1">
<div class="col">عرض كامل (1 في كل صف)</div>
<div class="col">عرض كامل (1 في كل صف)</div>
</div>
<div class="row row-cols-2">
<div class="col">عرض 50% (2 في كل صف)</div>
<div class="col">عرض 50% (2 في كل صف)</div>
<div class="col">عرض 50% (2 في كل صف)</div>
<div class="col">عرض 50% (2 في كل صف)</div>
</div>
<div class="row row-cols-3">
<div class="col">عرض 33.33% (3 في كل صف)</div>
<div class="col">عرض 33.33% (3 في كل صف)</div>
<div class="col">عرض 33.33% (3 في كل صف)</div>
</div>
<!-- row-cols متجاوبة -->
<div class="row row-cols-1 row-cols-sm-2 row-cols-md-3 row-cols-lg-4">
<div class="col">1 على الهاتف، 2 على sm، 3 على md، 4 على lg</div>
<div class="col">1 على الهاتف، 2 على sm، 3 على md، 4 على lg</div>
<div class="col">1 على الهاتف، 2 على sm، 3 على md، 4 على lg</div>
<div class="col">1 على الهاتف، 2 على sm، 3 على md، 4 على lg</div>
<div class="col">1 على الهاتف، 2 على sm، 3 على md، 4 على lg</div>
<div class="col">1 على الهاتف، 2 على sm، 3 على md، 4 على lg</div>
</div>
<!-- دمج row-cols مع عرض أعمدة محددة -->
<div class="row row-cols-3">
<div class="col">33.33%</div>
<div class="col-6">50% (يتجاوز row-cols)</div>
<div class="col">يلتف إلى الصف التالي</div>
</div>
<!-- مثال عملي: شبكة منتجات -->
<div class="row row-cols-2 row-cols-lg-4 g-3">
<div class="col">
<div class="card">
<img src="product1.jpg" class="card-img-top" alt="المنتج 1">
<div class="card-body">
<h5 class="card-title">المنتج 1</h5>
</div>
</div>
</div>
<div class="col">
<div class="card">
<img src="product2.jpg" class="card-img-top" alt="المنتج 2">
<div class="card-body">
<h5 class="card-title">المنتج 2</h5>
</div>
</div>
</div>
<!-- المزيد من المنتجات... -->
</div>
متى تستخدم row-cols: مثالية للشبكات الموحدة مثل قوائم المنتجات أو معارض الصور أو مجموعات البطاقات حيث يجب أن تكون جميع العناصر بنفس العرض. إنها أنظف من إضافة
col-* إلى كل عنصر فرعي.
3. أدوات العرض مع الشبكة
ادمج أدوات العرض مع الشبكة للتحكم القوي في التخطيط:
<!-- إخفاء/إظهار الأعمدة في نقاط توقف مختلفة -->
<div class="row">
<div class="col-12 col-md-6">مرئي دائمًا</div>
<div class="col-12 col-md-6 d-none d-md-block">
مخفي على الهاتف، مرئي على md وما فوق
</div>
</div>
<!-- عرض محتوى مختلف في أحجام مختلفة -->
<div class="row">
<div class="col d-md-none">
<!-- التنقل على الهاتف -->
<button class="btn btn-primary">☰ القائمة</button>
</div>
<div class="col d-none d-md-block">
<!-- التنقل على سطح المكتب -->
<nav>الرئيسية | عن | اتصل</nav>
</div>
</div>
<!-- أدوات Flexbox مع الشبكة -->
<div class="row">
<div class="col d-flex align-items-center justify-content-center">
<div>محتوى متوسط تمامًا</div>
</div>
</div>
<!-- أدوات اتجاه Flex -->
<div class="row">
<div class="col d-flex flex-column">
<div>العنصر 1</div>
<div class="mt-auto">العنصر 2 (مدفوع للأسفل)</div>
</div>
</div>
<!-- بطاقات متساوية الارتفاع باستخدام flex -->
<div class="row row-cols-1 row-cols-md-3 g-4">
<div class="col d-flex">
<div class="card w-100">
<div class="card-body d-flex flex-column">
<h5 class="card-title">البطاقة 1</h5>
<p class="card-text">محتوى قصير</p>
<a href="#" class="btn btn-primary mt-auto">زر</a>
</div>
</div>
</div>
<div class="col d-flex">
<div class="card w-100">
<div class="card-body d-flex flex-column">
<h5 class="card-title">البطاقة 2</h5>
<p class="card-text">محتوى أطول بكثير يجعل هذه البطاقة أطول من الأخرى في الصف</p>
<a href="#" class="btn btn-primary mt-auto">زر</a>
</div>
</div>
</div>
<div class="col d-flex">
<div class="card w-100">
<div class="card-body d-flex flex-column">
<h5 class="card-title">البطاقة 3</h5>
<p class="card-text">محتوى متوسط</p>
<a href="#" class="btn btn-primary mt-auto">زر</a>
</div>
</div>
</div>
</div>
أدوات العرض:
d-none- إخفاء العنصرd-block- عرض كعنصر كتلةd-flex- عرض كحاوية flexd-inline-flex- عرض كـ inline flex- أضف نقاط توقف:
d-md-none،d-lg-block
4. تكامل أدوات Flexbox
تعمل أدوات flexbox في Bootstrap بسلاسة مع نظام الشبكة:
<!-- أدوات المحاذاة -->
<div class="row align-items-start">محاذاة للأعلى</div>
<div class="row align-items-center">محاذاة للمركز</div>
<div class="row align-items-end">محاذاة للأسفل</div>
<!-- المحاذاة الذاتية -->
<div class="row" style="height: 200px;">
<div class="col align-self-start">أعلى</div>
<div class="col align-self-center">وسط</div>
<div class="col align-self-end">أسفل</div>
</div>
<!-- تبرير المحتوى -->
<div class="row justify-content-start">...</div>
<div class="row justify-content-center">...</div>
<div class="row justify-content-end">...</div>
<div class="row justify-content-between">...</div>
<div class="row justify-content-around">...</div>
<div class="row justify-content-evenly">...</div>
<!-- التفاف Flex -->
<div class="row flex-wrap">...</div>
<div class="row flex-nowrap">...</div>
<div class="row flex-wrap-reverse">...</div>
<!-- اتجاه Flex -->
<div class="row flex-row">...</div>
<div class="row flex-row-reverse">...</div>
<div class="row flex-column">...</div>
<div class="row flex-column-reverse">...</div>
<!-- Flex fill وgrow -->
<div class="row">
<div class="col flex-fill">Flex fill</div>
<div class="col flex-grow-1">Flex grow</div>
<div class="col flex-shrink-1">Flex shrink</div>
</div>
<!-- عملي: تخطيط تذييل ثابت -->
<div class="container d-flex flex-column" style="min-height: 100vh;">
<div class="row">
<div class="col">الرأس</div>
</div>
<div class="row flex-grow-1">
<div class="col">المحتوى الرئيسي يتوسع</div>
</div>
<div class="row">
<div class="col">التذييل دائمًا في الأسفل</div>
</div>
</div>
5. أدوات التباعد مع الشبكة
ضبط دقيق للتباعد داخل وحول عناصر الشبكة:
<!-- أدوات الهامش -->
<div class="row">
<div class="col mb-3">هامش سفلي</div>
<div class="col mt-3">هامش علوي</div>
<div class="col mx-3">هامش أفقي</div>
<div class="col my-3">هامش عمودي</div>
</div>
<!-- أدوات الحشوة -->
<div class="row">
<div class="col p-3">حشوة من جميع الجوانب</div>
<div class="col px-4">حشوة أفقية</div>
<div class="col py-4">حشوة عمودية</div>
</div>
<!-- إزالة الهوامش السالبة من الصف -->
<div class="row g-0 mx-0">
<div class="col">بدون هوامش سالبة</div>
</div>
<!-- هوامش تلقائية للوضع -->
<div class="row">
<div class="col-6 ms-auto">مدفوع لليمين</div>
</div>
<div class="row">
<div class="col-6 mx-auto">متوسط</div>
</div>
<!-- تباعد متجاوب -->
<div class="row">
<div class="col mb-3 mb-md-4 mb-lg-5">
هامش سفلي متجاوب
</div>
</div>
<!-- مقياس التباعد: 0-5 -->
<!-- 0 = 0، 1 = 0.25rem، 2 = 0.5rem، 3 = 1rem، 4 = 1.5rem، 5 = 3rem -->
نصائح التباعد:
- استخدم
g-*للتباعد المتسق بين الأعمدة - استخدم أدوات
m*وp*للضبط الدقيق للعناصر الفردية - الهوامش التلقائية (
ms-auto،mx-auto) مثالية للمحاذاة - ادمج مع نقاط التوقف للتباعد المتجاوب
6. نصائح تصحيح الشبكة
تقنيات لتصور وتصحيح تخطيطات الشبكة:
<!-- الطريقة 1: إضافة حدود مؤقتة -->
<style>
.debug .row {
border: 2px solid red;
margin-bottom: 10px;
}
.debug .col,
.debug [class*="col-"] {
border: 1px solid blue;
background-color: rgba(0, 123, 255, 0.1);
padding-top: 10px;
padding-bottom: 10px;
}
</style>
<div class="container debug">
<div class="row">
<div class="col-4">العمود 1</div>
<div class="col-4">العمود 2</div>
<div class="col-4">العمود 3</div>
</div>
</div>
<!-- الطريقة 2: استخدام ألوان الخلفية -->
<div class="row">
<div class="col bg-primary bg-opacity-25">العمود 1</div>
<div class="col bg-success bg-opacity-25">العمود 2</div>
<div class="col bg-warning bg-opacity-25">العمود 3</div>
</div>
<!-- الطريقة 3: إضافة min-height لرؤية المحاذاة -->
<div class="row">
<div class="col border" style="min-height: 100px;">العمود 1</div>
<div class="col border" style="min-height: 100px;">العمود 2</div>
</div>
<!-- الطريقة 4: استخدام أدوات المطور في المتصفح -->
<!--
1. افتح DevTools (F12)
2. حدد العنصر
3. في لوحة Styles، ابحث عن فئات .row أو .col
4. اطلع على الحشوة والهوامش والعرض المحسوبة
5. استخدم لوحة Elements لتشغيل/إيقاف الفئات
-->
مشاكل الشبكة الشائعة:
- الأعمدة تتجاوز: إجمالي أرقام الأعمدة يتجاوز 12، أو
.rowمفقود - تباعد غير متوقع: تحقق من الهوامش/الحشوة الموروثة أو إعدادات الفراغات
- الأعمدة لا تتماشى: فئة
.colمفقودة أو تداخل غير صحيح - المتجاوب لا يعمل: تحقق من صحة فئات نقاط التوقف (sm, md, lg, xl, xxl)
- الفراغات لا تظهر: تحقق من تطبيق
g-0في مكان ما في التسلسل الهرمي
تمرين عملي
أنشئ معرض صور متقدم بهذه المواصفات:
- استخدم
row-cols-*لعرض:- صورتان في كل صف على الهاتف
- 3 صور في كل صف على الأجهزة اللوحية
- 4 صور في كل صف على سطح المكتب
- 6 صور في كل صف على الشاشات الكبيرة جدًا
- طبّق فراغات تتدرج من
g-2على الهاتف إلىg-4على سطح المكتب - يجب أن تكون كل بطاقة صورة:
- تستخدم
d-flexلجعل جميع البطاقات متساوية الارتفاع - لها تأثير hover خفيف (أضفه بنفسك)
- تتضمن صورة وعنوان وزر "عرض"
- تستخدم
mt-autoلدفع الزر للأسفل
- تستخدم
- أضف صورة "مميزة" تمتد على عمودين على الأجهزة اللوحية وما فوق
- أخفِ آخر 3 صور على الهاتف باستخدام أدوات العرض
- وسّط المعرض بالكامل باستخدام الحاوية وأدوات التبرير
إضافي: أضف حدود تصحيح لتصور بنية الشبكة الخاصة بك، ثم قم بإزالتها عند الانتهاء.
أفضل الممارسات لتخصيص الشبكة:
- ابدأ بالفراغات الافتراضية (
g-3) واضبط فقط إذا لزم الأمر - استخدم
row-cols-*للشبكات الموحدة لتقليل تكرار HTML - ادمج أدوات flexbox بحذر - الكثير منها يمكن أن يجعل الكود صعب القراءة
- استخدم تقنيات التصحيح أثناء التطوير، قم بإزالتها قبل الإنتاج
- اختبر جميع نقاط التوقف المتجاوبة بدقة
- وثّق أي أنماط شبكة مخصصة معقدة بالتعليقات
- ضع في اعتبارك CSS Grid للتخطيطات المعقدة جدًا التي لا تناسب نظام Bootstrap من 12 عمودًا