انتقل إلى محتوى الدرس
الدرس 118
تاريخ النشر: تاريخ التحديث:
دورة لغة CSS

تجاوب العناصر مع نظام Flexbox في لغة CSSCSS Flex Responsive طريقة تبديل اتجاه الصندوق المرن للشاشات، وبناء معرض صور مرن متجاوب، ومنع فيضان النصوص داخل المرن

ابنِ واجهات متجاوبة بنظام Flexbox في CSS عبر تبديل الاتجاه من عمود الهاتف إلى صف الحاسوب، وتفعيل التفاف البطاقات التلقائي، وتصميم شريط علوي ثنائي اللغة، ومعالجة فيضان النصوص الطويلة بتصفير العرض الأدنى.
أقسام الدرس
6
الأمثلة
3
اللغة
العربية
المشاهدات
4,285
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

تبدو الواجهات المقسومة جنباً إلى جنب مريحة على شاشات الحواسيب الواسعة، غير أن حشر عمودين متجاورين داخل شاشة هاتف عرضها 360px يضغط النصوص في شرائط ضيقة يصعب قراءتها. يعالج نظام Flexbox بنهج الهاتف أولاً هذه المشكلة بتبديل نظيف لاتجاه المحور:

  • نبدأ القاعدة الأساسية للحاوية بالتصريحات display: flex; flex-direction: column; gap: 16px; فتتراص اللوحات عمودياً بترتيب القراءة الطبيعي على الهواتف.
  • نضيف استعلام @media (min-width: 768px) لتحويل الاتجاه إلى flex-direction: row; فور توفر مساحة أفقية كافية لاصطفاف العناصر متجاورة.
CSS
.flex-layout {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
@media (min-width: 768px) {
  .flex-layout {
    flex-direction: row;
  }
}

لا تحتاج دائماً إلى كتابة استعلام @media لجعل صف البطاقات يتكيف مع مختلف الشاشات؛ فعند إقران flex-wrap: wrap و gap: 16px على الحاوية الأب مع التصريح المختصر flex: 1 1 260px على كل بطاقة، تنكسر البطاقات تلقائياً إلى سطر جديد فور ضيق المساحة عن 260px، ثم تتمدد لتملأ عرض السطر بتوازن أنيق.

مخطط يوضح تكيف الصندوق المرن بين العمود الرأسي للهاتف والالتفاف الذكي للبطاقات والصف الأفقي للحاسوب
CSS
.card-row {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
}
.flex-card {
  flex: 1 1 260px;
  padding: 18px;
}

يمثل الشريط العلوي للتنقل أبرز تطبيقات Flexbox العملية في المواقع ثنائية اللغة؛ فعند ضبط display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 12px; يتموضع شعار الموقع في بداية السطر ومجموعة الروابط في نهايته، وينعكس ترتيبهما تلقائياً بين العربية RTL والإنجليزية LTR مع التفاف أنيق على الهواتف الضيقة:

HTML
.topbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
}

من أكثر المشكلات شيوعاً في تخطيطات Flexbox المتجاوبة امتناع بطاقة تحتوي رابطاً طويلاً متصلاً أو مسار ملف عن التقلص على الهاتف، فتدفع الصف بأكمله خارج حدود الشاشة. يرجع السبب الهندسي إلى أن المواصفة تمنح كل عنصر ابن داخل الحاوية المرنة القيمة الافتراضية min-width: auto التي تمنعه من الانكماش لأصغر من أطول كلمة متصلة بداخله.

يعالج إضافة التصريح min-width: 0; مع overflow: hidden; أو overflow-x: auto; مباشرة على صنف العنصر الابن هذه المشكلة فوراً، فيلتزم الصندوق بحدود شاشة الهاتف دون أي فيضان أفقي.

تجمع الواجهات المتجاوبة الاحترافية بين Flexbox و CSS Grid بتكامل هندسي واضح؛ فتتولى الشبكة تقسيم الهيكل العام ثنائي الأبعاد، بينما يدير الصندوق المرن المكونات الداخلية التي يتبع حجمها محتواها:

معيار المقارنةالتجاوب عبر Flexboxالتجاوب عبر CSS Grid
أبعاد التخطيطأحادي البعد في صف أو عمود مع قابلية الالتفافثنائي الأبعاد يضبط الصفوف والأعمدة معاً في آن واحد
العناصر المنفردة بآخر سطرتتمدد تلقائياً لملء المساحة المتبقية في السطرتلتزم بدقة تحت خطوط المسارات المحددة للأعمدة
فلسفة التحجيمتبدأ من حجم المحتوى صعوداً لتوزيع السطرتبدأ من تقسيم الحاوية نزولاً لوضع العناصر
المكونات المثاليةالشريط العلوي ومجموعات الأزرار والشارات والأقسام المقسومةالهيكل العام للصفحة ومعارض البطاقات متطابقة العرض
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

تعلّمت في هذا الدرس تبديل flex-direction عبر نقاط التوقف بنهج الهاتف أولاً، وبناء صفوف بطاقات ملتفة تلقائياً عبر flex-wrap: wrap و flex: 1 1 260px، وتصميم شريط علوي ثنائي اللغة ينعكس تلقائياً بين العربية والإنجليزية، ومنع فيضان النصوص الطويلة بالتصريح min-width: 0. في الخطوة التالية ننتقل إلى درس خاصية text-overflow في لغة CSS للتحكم الاحترافي في قص العناوين الطويلة وإظهار نقاط الاختصار القياسية.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Flex Axis Switching تبديل محور الصندوق المرن
تحويل خاصية flex-direction من الوضع العمودي column على الهاتف إلى الأفقي row عند نقطة توقف لاصطفاف العناصر متجاورة.
للمراجعة
02 Intrinsic Flex Wrapping الالتفاف الذاتي للبطاقات
دمج خاصية flex-wrap: wrap مع قيمة أساس مرن flex-basis لتنكسر العناصر إلى سطر جديد تلقائياً دون استعلامات وسائط.
للمراجعة
03 Flex Minimum Width Reset تصفير العرض الأدنى للعنصر المرن
تعيين min-width: 0 على العنصر الابن لإلغاء القيمة الافتراضية min-width: auto والسماح للصندوق بالانكماش داخل الشاشات الضيقة.
للمراجعة
04 Bilingual Flex Mirroring الانعكاس التلقائي ثنائي اللغة
انعكاس ترتيب عناصر الصف المرن تلقائياً بين اتجاهي اليسار لليمين LTR واليمين لليسار RTL دون تعديل قواعد CSS.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات3

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 3 مفهومةأول بطاقة، أول خطوة
01 RWD RWD
Responsive Web Design
منهجية تصميم واجهات مرنة تتكيف بسلاسة مع شاشات الهواتف والأجهزة اللوحية والحواسيب.
للمراجعة
02 RTL RTL
Right-to-Left Direction
اتجاه الكتابة من اليمين إلى اليسار المستخدم في العربية حيث يبدأ الصف المرن من الحافة اليمنى تلقائياً.
للمراجعة
03 LTR LTR
Left-to-Right Direction
اتجاه الكتابة من اليسار إلى اليمين المستخدم في الإنجليزية حيث يبدأ الصف المرن من الحافة اليسرى تلقائياً.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. نسّق الصنف .flex-layout بالتصريحات display: flex و flex-direction: column و gap: 16px ثم بدّله إلى flex-direction: row داخل @media (min-width: 768px).

  2. طبّق display: flex و flex-wrap: wrap و gap: 16px على .card-row مع flex: 1 1 260px على .flex-card لتلتف البطاقات تلقائياً بلا تمرير أفقي.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 2أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

في تخطيط Flexbox المبني للهاتف أولاً، أي قيمة أساسية للخاصية flex-direction ترص اللوحات عمودياً على الهاتف قبل تحويلها لصف على الحاسوب؟

02

أي خاصية على الحاوية المرنة ضرورية لكي تنكسر العناصر ذات القيمة flex: 1 1 260px إلى سطر جديد بدلاً من الانضغاط أو الفيضان؟

03

لماذا قد يرفض عنصر مرن يحتوي رابطاً طويلاً متصلاً الانكماش داخل شاشة الهاتف الضيقة افتراضياً؟

04

أي تصريح على العنصر المرن الابن يلغي الحد الأدنى التلقائي لعرض محتواه فيسمح له بالانكماش بأمان داخل الشاشات الضيقة؟

05

لماذا تُفضَّل خاصية gap على الحاوية المرنة بدلاً من هوامش margin على الأبناء في معارض الصور متعددة الأسطر؟

06

ماذا يحدث لبطاقة ثالثة تحمل التصريح flex: 1 1 260px عندما تلتف منفردة إلى السطر الثاني داخل حاوية Flexbox؟

07

ينعكس ترتيب البداية والنهاية في الشريط العلوي المرن ذي التصريحين flex-direction: row و justify-content: space-between تلقائياً عند التبديل بين dir="ltr" و dir="rtl".

08

يبقى المحور الرئيسي ممتداً في الاتجاه الرأسي دون تغيير عند تبديل flex-direction من column إلى row.