جاري التحميل...

عناصر Flex

عناصر Flex (Flex Items) هي الوحدات الأساسية التي تتحرك وتترتب داخل حاوية Flex (Flex Container) في CSS. تعتبر هذه العناصر جوهرية لتصميم واجهات مرنة وقابلة للتكيف، فهي تمكن المطور من التحكم في توزيع المساحات والمحاذاة بطريقة ديناميكية، مثل ترتيب الأثاث داخل غرفة أو تنظيم كتب في مكتبة بطريقة يسهل الوصول إليها. عند بناء موقع إخباري (news site)، يمكن استخدام عناصر Flex لتوزيع المقالات بشكل متساوٍ ضمن الصفوف والأعمدة؛ أما في متجر إلكتروني (e-commerce) فهي تساعد على ترتيب منتجات بشكل جذاب ومتجاوب مع الشاشات المختلفة؛ وفي الصفحات الشخصية (personal page) يمكن تنظيم بطاقات التعريف والمحتوى بطريقة متناسقة؛ وفي البوابات الحكومية (government portal) تُسهل عرض الأقسام والروابط بطريقة منظمة وسهلة القراءة.
سيتعلم القارئ في هذا الدرس كيفية التحكم بمساحة كل عنصر، ترتيبها، محاذاتها، وتوزيعها بشكل ذكي ضمن الحاوية، مع فهم الفروق بين خصائص مثل order, flex-grow, flex-shrink, وalign-self. سنعتمد على أمثلة عملية واقعية تماثل تصميم المواقع الحقيقية، مع شروحات مفصلة لتبسيط المفاهيم المعقدة. تشبه عناصر Flex كتابة رسالة دقيقة: تحتاج لكل كلمة ومكانها الصحيح لتوصيل المعنى بوضوح. هذه المهارات أساسية لأي مطور واجهات يرغب في بناء مواقع حديثة ومستجيبة للهواتف والشاشات المختلفة.

مثال أساسي

css
CSS Code
.container {
display: flex; /* تعريف الحاوية كـ Flex Container */
justify-content: space-between; /* توزيع العناصر بالتساوي */
align-items: center; /* محاذاة العناصر عمودياً في الوسط */
height: 200px; /* ارتفاع الحاوية */
border: 2px solid #333; /* إطار لتوضيح الحاوية */
}
.item {
flex: 1; /* السماح لكل عنصر بالتمدد بشكل متساوٍ */
margin: 5px; /* مسافة بين العناصر */
background-color: #f2f2f2; /* لون خلفية للعناصر */
text-align: center; /* محاذاة النص داخل العنصر */
}

في المثال أعلاه، نبدأ بتعريف الحاوية .container كـ Flex Container باستخدام display: flex;، وهي الخطوة الأساسية لتحويل أي عنصر إلى حاوية Flex. خاصية justify-content: space-between; تتحكم في توزيع العناصر أفقياً بحيث يكون هناك مسافة متساوية بين كل عنصر وآخر، مما يشبه ترتيب الكتب على رف بطريقة متساوية. خاصية align-items: center; تضمن محاذاة العناصر عمودياً في منتصف الحاوية، كما لو كنا نزين غرفة بحيث تكون اللوحات في ارتفاع متساوٍ.
الخاصية flex: 1; على العناصر .item تعني أن كل عنصر سيأخذ نفس مقدار المساحة المتاحة ضمن الحاوية، مع احترام الهوامش (margin) بين العناصر. هذه الخاصية تجمع بين flex-grow وflex-shrink وflex-basis في قيمة واحدة لتسهيل التحكم بالتمدد والانكماش. استخدام background-color وtext-align يوضح طريقة العرض ويجعل كل عنصر متميزاً، وهو مهم عند تصميم صفحات إخبارية أو متاجر إلكترونية حيث يجب تمييز البطاقات والمنتجات بوضوح.

مثال عملي

css
CSS Code
.news-container {
display: flex;
flex-wrap: wrap; /* السماح بانكسار العناصر للصف التالي عند الحاجة */
gap: 15px; /* مسافة بين العناصر */
}
.news-item {
flex: 1 1 300px; /* عنصر قابل للتمدد والانكماش مع حد أدنى للعرض */
border: 1px solid #ccc;
padding: 10px;
background-color: #fafafa;
}
/* تطبيق مشابه في متجر إلكتروني */
.product-container {
display: flex;
flex-wrap: wrap;
justify-content: center;
}
.product-item {
flex: 0 1 200px; /* الحفاظ على حجم محدد للمنتجات مع إمكانية الانكماش */
margin: 10px;
padding: 15px;
background-color: #fff;
border: 1px solid #ddd;
}

في هذا المثال العملي، استخدمنا flex-wrap: wrap; للسماح للعناصر بالانتقال إلى صفوف جديدة عندما لا تتسع الحاوية، وهي تقنية مهمة لتصميم مواقع متجاوبة (responsive design) مثل الأخبار والمتاجر الإلكترونية. خاصية gap توفر مساحة واضحة بين العناصر بدون الحاجة لاستخدام margin منفصل لكل عنصر، مما يجعل الكود أنظف وأسهل في الصيانة.
الخاصية flex: 1 1 300px; تضمن أن كل عنصر يمكن أن ينمو (flex-grow: 1) وينكمش (flex-shrink: 1) حسب المساحة المتاحة، مع تحديد الحد الأدنى للعرض بـ 300px (flex-basis). هذا يسمح بمرونة كبيرة على مختلف أحجام الشاشات. في حالة المنتجات، استخدمنا flex: 0 1 200px; للحفاظ على حجم محدد لكل بطاقة منتج مع السماح بالانكماش لتجنب الفوضى.
من الأخطاء الشائعة، استخدام flex بدون ضبط flex-basis قد يؤدي إلى عناصر صغيرة جداً أو كبيرة بشكل غير متساوٍ. كما أن الإفراط في justify-content وalign-items قد يؤدي إلى تعارضات في محاذاة العناصر. النصيحة العملية هي البدء بتحديد الحاوية وخصائص Flex الأساسية، ثم تعديل كل عنصر بحسب الحاجة، مع اختبار التصميم على مختلف الأجهزة لضمان التوافقية.

📊 مرجع سريع

Property/Method Description Example
flex تحكم في نمو وانكماش العنصر flex: 1 1 200px;
order تحديد ترتيب ظهور العناصر order: 2;
align-self محاذاة عنصر فردي مختلف عن الحاوية align-self: flex-end;
justify-content محاذاة العناصر أفقياً داخل الحاوية justify-content: space-between;
align-items محاذاة العناصر عمودياً align-items: center;
flex-wrap السماح بانكسار العناصر flex-wrap: wrap;

باختصار، عناصر Flex هي أداة قوية لبناء واجهات ديناميكية ومرنة، مع التحكم الكامل في توزيع وترتيب العناصر ضمن الحاوية. من خلال فهم خصائص مثل flex, order, align-self, وjustify-content, يمكن تحويل أي تصميم ثابت إلى تصميم متجاوب يتيح عرض المحتوى بشكل جميل وعملي على جميع الأجهزة. هذه المهارات مرتبطة مباشرة ببنية HTML، حيث تحدد العناصر التي سيتم تحريكها، ويمكن أن تتفاعل مع JavaScript لتغيير الترتيب أو الحجم ديناميكياً.
الخطوات التالية المقترحة تشمل دراسة خصائص Flex المتقدمة مثل align-content وflex-basis مع أمثلة أكثر تعقيداً، وكذلك الانتقال إلى CSS Grid للحصول على تحكم أكبر في تصميم الشبكات. نصيحتي للمطورين هي تجربة مشاريع صغيرة مثل بطاقات المنتجات أو الأخبار، ثم زيادة التعقيد تدريجياً لضمان إتقان عناصر Flex بالكامل.

🧠 اختبر معرفتك

جاهز للبدء

اختبر معرفتك

اختبر فهمك لهذا الموضوع بأسئلة عملية.

3
الأسئلة
🎯
70%
للنجاح
♾️
الوقت
🔄
المحاولات

📝 التعليمات

  • اقرأ كل سؤال بعناية
  • اختر أفضل إجابة لكل سؤال
  • يمكنك إعادة الاختبار عدة مرات كما تريد
  • سيتم عرض تقدمك في الأعلى