CSS: عناصر Flexbox CSS

خصائص عناصر Flexbox تمنحك تحكماً دقيقاً في الأبناء داخل حاوية flex.

1. خصائص عناصر Flex

(1) مرجع سريع

الخاصية القيم الغرض
flex-grow 0، 1، 2، ... مقدار نمو العنصر بالنسبة لإخوته
flex-shrink 0، 1، 2، ... مقدار انكماش العنصر بالنسبة لإخوته
flex-basis auto، 100px، 50% الحجم الأولي قبل النمو/الانكماش
flex 1، 0 0 200px، 1 1 auto اختصار لـ grow، shrink، basis
order 0، 1، -1 ترتيب بصري (لا يؤثر على DOM)
align-self auto، flex-start، flex-end، center تجاوز align-items للأصل

2. flex-grow

يتحكم في مقدار نمو عنصر flex بالنسبة لعناصر أخرى:

▶ مثال

HTML
<style>
.container {
  display: flex;
  gap: 10px;
  background: #f5f5f5;
  padding: 10px;
}
.item-1 { flex-grow: 1; background: #3498db; padding: 10px; color: white; }
.item-2 { flex-grow: 2; background: #e74c3c; padding: 10px; color: white; }
.item-3 { flex-grow: 1; background: #2ecc71; padding: 10px; color: white; }
</style>
<div class="container">
  <div class="item-1">grow: 1</div>
  <div class="item-2">grow: 2 (ضعف العرض)</div>
  <div class="item-3">grow: 1</div>
</div>
▶ جرّب الكود

3. flex: 1 اختصار

flex: 1 هو الاختصار الأكثر شيوعاً:

▶ مثال

HTML
<style>
.container {
  display: flex;
  gap: 10px;
  background: #f5f5f5;
  padding: 10px;
}
.item {
  flex: 1;
  background: #9b59b6;
  padding: 10px;
  color: white;
  text-align: center;
}
</style>
<div class="container">
  <div class="item">مساوٍ</div>
  <div class="item">مساوٍ</div>
  <div class="item">مساوٍ</div>
</div>
▶ جرّب الكود

flex: 1 يعني flex-grow: 1; flex-shrink: 1; flex-basis: 0% — "لينمو لملء المساحة المتبقية بالتساوي."


4. order

يُغيّر الترتيب البصري without التأثير على ترتيب DOM:

▶ مثال

HTML
<style>
.container {
  display: flex;
  gap: 10px;
  background: #f5f5f5;
  padding: 10px;
}
.item {
  background: #f39c12;
  padding: 10px;
  color: white;
}
.item:nth-child(2) { order: -1; } /* يتحرك للأمام */
</style>
<div class="container">
  <div class="item">الأول في DOM</div>
  <div class="item">الثاني في DOM (بصرياً الأول)</div>
  <div class="item">الثالث في DOM</div>
</div>
▶ جرّب الكود

ملاحظة: order يُغيّر فقط الترتيب البصري، وليس ترتيب DOM. قارئات الشاشة تتبع ترتيب DOM.


5. align-self

يتجاوز align-items الأصل لعناصر فردية:

▶ مثال

HTML
<style>
.container {
  display: flex;
  align-items: center;
  height: 200px;
  background: #f5f5f5;
  gap: 10px;
  padding: 10px;
}
.item {
  background: #e74c3c;
  padding: 10px;
  color: white;
}
.item:nth-child(2) { align-self: flex-end; }
.item:nth-child(3) { align-self: flex-start; }
</style>
<div class="container">
  <div class="item">وسط (افتراضي)</div>
  <div class="item">أسفل (align-self)</div>
  <div class="item">أعلى (align-self)</div>
</div>
▶ جرّب الكود

❓ أسئلة شائعة

س ماذا يعني flex: 1؟
ج flex: 1 هو اختصار لـ flex-grow: 1; flex-shrink: 1; flex-basis: 0% — يعني "لينمو لملء المساحة المتبقية." عندما يكون لعدة عناصر flex: 1، تشترك بالتساوي في عرض الحاوية.
س هل يؤثر order على بنية DOM؟
ج لا. order يُغيّر فقط الترتيب البصري، ترتيب DOM يبقى كما هو. قارئات الشاشة تتبع ترتيب DOM، لذا لا تستخدم order للفرز البصري فقط — يؤثر على إمكانية الوصول.
س أيهما أولوية أعلى: align-self أم align-items؟
ج align-self له أولوية أعلى. يعمل على عناصر فردية، متجاوزاً align-items الأصل. مثلاً، الأصل يضبط align-items: center لمحاذاة مُوَسَّطة، لكن الابن يمكنه ضبط align-self: flex-start للمحاذاة للأعلى بشكل فردي.

📖 ملخص

📝 تمارين

  1. أنشئ حاوية flex بـ 5 عناصر. استخدم order لإظهار العنصر الثالث أولاً والعنصر الأول أخيراً.
  2. استخدم flex-grow لتنفيذ "ثلاثة أعمدة متساوية"، ثم اجعل العمود الأوسط ضعف عرض الجوانب.
  3. أنشئ تخطيط "شريط جانبي ثابت + محتوى متكيف": الشريط الجانبي يستخدم flex: 0 0 250px، المحتوى يستخدم flex: 1.
  4. في حاوية، حاذ العنصران الأولان للأعلى والثالث لأسفل باستخدام align-self.
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%