حاوية Grid CSS
Grid CSS هو نظام تخطيط ثنائي البُعد قوي يتيح لك التحكم في الصفوف والأعمدة في وقت واحد.
خصائص حاوية Grid
مرجع سريع
| الخاصية | القيم | الغرض |
|---|---|---|
display: grid |
— | إنشاء حاوية شبكة |
grid-template-columns |
100px 1fr 2fr، repeat(3, 1fr) |
تعريفات الأعمدة |
grid-template-rows |
100px auto، repeat(3, 100px) |
تعريفات الصفوف |
gap |
10px، 10px 20px |
فجوة بين العناصر |
grid-template-areas |
"header header" "main aside" |
مناطق شبكة مسماة |
وحدة fr
وحدة fr توزع المساحة المتبقية بشكل متناسب:
مثال
HTML
<style>
.container {
display: grid;
grid-template-columns: 1fr 2fr 1fr; /* نسبة 1:2:1 */
gap: 10px;
background: #f5f5f5;
padding: 10px;
}
.item {
background: #3498db;
color: white;
padding: 20px;
text-align: center;
}
</style>
<div class="container">
<div class="item">1fr</div>
<div class="item">2fr (ضعف العرض)</div>
<div class="item">1fr</div>
</div>
repeat()
دالة repeat() تُقلل التكرار:
مثال
HTML
<style>
.container {
display: grid;
grid-template-columns: repeat(3, 1fr); /* نفس: 1fr 1fr 1fr */
gap: 10px;
background: #f5f5f5;
padding: 10px;
}
.item {
background: #e74c3c;
color: white;
padding: 20px;
text-align: center;
}
</style>
<div class="container">
<div class="item">عمود 1</div>
<div class="item">عمود 2</div>
<div class="item">عمود 3</div>
</div>
minmax() + auto-fill/auto-fit
تُنشئ شبكات متجاوبة تُعدّل عدد الأعمدة تلقائياً:
مثال
HTML
<style>
.grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
gap: 15px;
background: #f5f5f5;
padding: 15px;
}
.item {
background: #2ecc71;
color: white;
padding: 20px;
text-align: center;
border-radius: 4px;
}
</style>
<div class="grid">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
</div>
auto-fill مقابل auto-fit:
auto-fill: يُنشئ أكبر عدد ممكن من الأعمدة التي تناسب، حتى لو كانت فارغةauto-fit: مثل auto-fill، لكن يطوي الأعمدة الفارغة
grid-template-areas
حدد التخطيط بمناطق مسمى:
مثال
HTML
<style>
.layout {
display: grid;
grid-template-areas:
"header header header"
"sidebar main aside"
"footer footer footer";
grid-template-columns: 200px 1fr 200px;
grid-template-rows: 60px 1fr 40px;
gap: 10px;
min-height: 100vh;
}
.header { grid-area: header; background: #2c3e50; color: white; }
.sidebar { grid-area: sidebar; background: #34495e; color: white; }
.main { grid-area: main; background: #ecf0f1; }
.aside { grid-area: aside; background: #34495e; color: white; }
.footer { grid-area: footer; background: #2c3e50; color: white; }
.layout > * { padding: 20px; display: flex; align-items: center; justify-content: center; }
</style>
<div class="layout">
<header class="header">ترويسة</header>
<aside class="sidebar">شريط جانبي</aside>
<main class="main">المحتوى الرئيسي</main>
<aside class="aside">جانبي</aside>
<footer class="footer">تذييل</footer>
</div>
❓ أسئلة شائعة
س كيف أختار بين Grid و Flexbox؟
ج أحادي البُعد (صف أو عمود واحد) يستخدم Flexbox، ثنائي البُعد (تحكم متزامن في صف وعمود) يستخدم Grid. معظم الصفحات تستخدم كليهما: Grid لهيكل الصفحة العام، Flexbox للترتيبات المحلية. استخدامهما معاً في صفحة واحدة طبيعي تماماً.
س ما الفرق بين وحدات fr والنسب المئوية؟
ج `fr` توزع المساحة المتبقية، النسب المئوية توزع العرض الكلي. مع الفجوة، `fr` تطرح الفجوة تلقائياً قبل حساب النسب، النسب المئوية لا تفعل ذلك. `1fr 1fr 1fr` مع فجوة لا تزال أثلاثاً مثالية، بينما `33.33% 33.33% 33.33%` تفيض.
س كيف أستخدم grid-template-areas؟
ج حدد التخطيط بمناطق مسمى: `grid-template-areas: "header header" "sidebar main" "footer footer";` ثم اسناد الأبناء بـ `grid-area: header`. لتغيير التخطيط، فقط اضبط قالب النص — لا حاجة لإعادة موضع الأبناء.
📖 ملخص
- Grid هو نظام تخطيط ثنائي البُعد قوي
- حدد بنية الشبكة بـ
grid-template-columnsوgrid-template-rows - استخدم وحدة
frلتوزيع المساحة المتناسب - أنشئ شبكات مرنة بـ
repeat()وminmax() gapتُعيّن مسافة؛auto-fill/auto-fitمعminmaxتُنشئ شبكات متجاوبة حقاً
📝 تمارين
أساسي
- أنشئ حاوية شبكة 3×3، كل خلية 100px×100px، فجوة 10px.
- استخدم وحدة
1frلتخطيط "عمودين" (يسار 1fr، يمين 3fr).
متوسط
- أنشئ شبكة بطاقات متكيفة بـ
repeat(auto-fill, minmax(150px, 1fr))— حجم المتصفح لرؤية تغييرات الأعمدة. - أنشئ تخطيط "ثلاثة صفوف وعمودين كلاسيكي": ترويسة (تمتد لعمودين)، قائمة يسار، محتوى يمين، تذييل (تمتد لعمودين).
تحدٍ
- أنشئ معرض صور متجاوب: سطح المكتب 4 أعمدة، جهاز لوحي 2 أعمدة، محمول عمود واحد، باستخدام
auto-fill+minmax. - استخدم
grid-template-areasلتخطيط مدونة كاملة (ترويسة، تنقل، محتوى رئيسي، شريط جانبي، تذييل).



