عناصر Grid CSS

خصائص عناصر Grid تتيح لك التحكم الدقيق في كيفية وضع الأبناء داخل حاوية شبكة.

خصائص عناصر Grid

مرجع سريع

الخاصية القيم الغرض
grid-column 1 / 3، span 2 موضع العمود
grid-row 1 / 3، span 2 موضع الصف
grid-area header، 1 / 2 / 3 / 4 منطقة مسمى أو موضع خط
justify-self start، end، center، stretch محاذاة أفقية داخل الخلية
align-self start، end، center، stretch محاذاة عمودية داخل الخلية
place-self center، start end اختصار لـ justify + align

grid-column و grid-row

يتحكمان في مكان بداية ونهاية العناصر في الشبكة:

مثال

HTML
<style>
.grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-template-rows: repeat(3, 100px);
  gap: 10px;
  background: #f5f5f5;
  padding: 10px;
}
.item {
  background: #3498db;
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 4px;
}
.span-2-col { grid-column: span 2; }
.span-2-row { grid-row: span 2; }
</style>
<div class="grid">
  <div class="item">1</div>
  <div class="item span-2-col">يمتد لعمودين</div>
  <div class="item">3</div>
  <div class="item span-2-row">يمتد لصفين</div>
  <div class="item">5</div>
  <div class="item">6</div>
  <div class="item">7</div>
</div>
▶ جرّب الكود

عنصر بعرض كامل

استخدم grid-column: 1 / -1 لامتداد جميع الأعمدة:

مثال

HTML
<style>
.grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  background: #f5f5f5;
  padding: 10px;
}
.header {
  grid-column: 1 / -1; /* يمتد لجميع الأعمدة */
  background: #2c3e50;
  color: white;
  padding: 15px;
  text-align: center;
}
.item {
  background: #3498db;
  color: white;
  padding: 20px;
  text-align: center;
  border-radius: 4px;
}
</style>
<div class="grid">
  <div class="header">ترويسة (عرض كامل)</div>
  <div class="item">عمود 1</div>
  <div class="item">عمود 2</div>
  <div class="item">عمود 3</div>
</div>
▶ جرّب الكود

justify-self / align-self

يتحكمان في المحاذاة داخل خلايا فردية:

مثال

HTML
<style>
.grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  background: #f5f5f5;
  padding: 10px;
  height: 200px;
}
.item {
  background: #e74c3c;
  color: white;
  padding: 10px;
  border-radius: 4px;
}
.start { justify-self: start; align-self: start; }
.center { justify-self: center; align-self: center; }
.end { justify-self: end; align-self: end; }
</style>
<div class="grid">
  <div class="item start">بداية</div>
  <div class="item center">وسط</div>
  <div class="item end">نهاية</div>
</div>
▶ جرّب الكود

تراكب Grid

عناصر Grid يمكن أن تتراكب — العناصر اللاحقة تظهر في الأعلى:

مثال

HTML
<style>
.grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  background: #f5f5f5;
  padding: 10px;
}
.item1 {
  grid-column: 1 / 3;
  grid-row: 1 / 3;
  background: rgba(231, 76, 60, 0.7);
  color: white;
  padding: 20px;
  z-index: 1;
}
.item2 {
  grid-column: 2 / 4;
  grid-row: 2 / 4;
  background: rgba(52, 152, 219, 0.7);
  color: white;
  padding: 20px;
}
</style>
<div class="grid">
  <div class="item1">عنصر 1 (خلف)</div>
  <div class="item2">عنصر 2 (أمام)</div>
</div>
▶ جرّب الكود

❓ أسئلة شائعة

س ماذا يعني grid-column: 1 / -1؟
ج يعني "من خط الشبكة 1 إلى خط الشبكة الأخير (-1 هو رقم الخط الأخير)" — يمتد الصف بالكامل. مثالي للترويسات أو الفواصل بعرض كامل without الحاجة لمعرفة عدد الأعمدة الكلي.
س هل يمكن لعناصر Grid أن تتراكب؟
ج نعم. Grid يتيح للعناصرشغل نفس منطقة الشبكة — العناصر اللاحقة تغطي السابقة. استخدم هذا لتأثيرات التراكب مثل نص على صور. تحكم في التكديس بـ z-index.
س كيف أستخدم كلمة span؟
ج `grid-column: span 2` يعني "يمتد لعمودين" — أكثر بديهية من كتابة أرقام خطوط الشبكة. لا حاجة لمعرفة أي خط يبدأ منه؛ المتصفح يحسب تلقائياً. مفيد بشكل خاص في السيناريوهات المتجاوبة where لا تعرف العدد الدقيق للأعمدة.

📖 ملخص

📝 تمارين

  1. أنشئ شبكة 4×4، ضع عنصراً يمتد لعمودين وصفين بدءاً من العمود 2، الصف 2.
  2. استخدم grid-template-areas لتخطيط صفحة كاملة: ترويسة (تمتد لعمودين)، شريط جانبي، منطقة محتوى، تذييل (تمتد لعمودين).
  3. وسّط جميع العناصر أفقياً وعمودياً في حاوية شبكة (باستخدام place-items: center).
  4. اجعل عنصر الشبكة الثالث يحاذي الزاوية السفلية اليمنى لخليله (باستخدام justify-self وalign-self).
100%