عناصر 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 لا تعرف العدد الدقيق للأعمدة.
📖 ملخص
- موضع عناصر Grid مرن جداً — حدد بدقة خطوط بداية/نهاية الشبكة، أو استخدم كلمة span لامتداد عدة صفوف/أعمدة
- داخل الخلايا،
justify-items/align-itemsيتحكمان في المحاذاة العامة،justify-self/align-selfيتحكمان في عناصر فردية - إذا كانت أرقام الخطوط صعبة الحفظ، جرب
grid-template-areasلمناطق مسمى — أكثر بديهية
📝 تمارين
- أنشئ شبكة 4×4، ضع عنصراً يمتد لعمودين وصفين بدءاً من العمود 2، الصف 2.
- استخدم
grid-template-areasلتخطيط صفحة كاملة: ترويسة (تمتد لعمودين)، شريط جانبي، منطقة محتوى، تذييل (تمتد لعمودين). - وسّط جميع العناصر أفقياً وعمودياً في حاوية شبكة (باستخدام
place-items: center). - اجعل عنصر الشبكة الثالث يحاذي الزاوية السفلية اليمنى لخليله (باستخدام
justify-selfوalign-self).



