انتقل إلى محتوى الدرس
الدرس 85
دورة لغة CSS

خاصية flex-shrink مع Flexbox في لغة CSSCSS Flex Shrink

تعلّم كيف تمنع خاصية flex-shrink فيضان الحاوية عبر تقليص العناصر تلقائياً عند ضيق المساحة وكيف تحمي القيمة صفر الأيقونات والأزرار من الانضغاط مع فهم معاملات التقلص النسبية وحد الكلمة الأدنى.
أقسام الدرس
5
الأمثلة
3
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
3,271
محتوى الدرس
في هذا الدرس 5تصفّح المواضيع

عندما تكون الحاوية المرنة ذات السطر الواحد flex-wrap: nowrap أضيق من مجموع الأحجام الأساسية flex-basis لأبنائها، ينشأ عجز في المساحة على المحور الرئيسي. وبدلاً من السماح للعناصر بالفيضان خارج إطار الحاوية فوراً، يمنح نظام Flexbox كل عنصر قيمة افتراضية هي flex-shrink: 1.

بفضل القيمة الافتراضية flex-shrink: 1 تتعاون العناصر وتنكمش تلقائياً إلى أقل من حجمها الأساسي لتبقى مصفوفة داخل حدود الحاوية طالما يسمح محتواها النصي بذلك.

مخطط يوضح الانكماش التلقائي بقيمة 1 وحماية الأيقونات بقيمة 0 وحد المحتوى الأدنى

يتحول الانكماش التلقائي إلى خلل بصري واضح عندما تجاور فقرة إشعار طويلة صورة رمزية دائرية بعرض 48px أو شارة أيقونة أو زر إجراء؛ إذ يضغط النص الطويل على الأيقونة فيحول الدائرة إلى شكل بيضاوي مشوه. يحل التصريح الحاسم flex-shrink: 0 هذه المشكلة فوراً بتثبيت بُعد الأيقونة أو الزر وإجبار كتلة النص وحدها على الانكماش والالتفاف.

CSS
.alert-row {
  display: flex;
  gap: 12px;
}
.icon-badge {
  width: 48px;
  height: 48px;
  flex-shrink: 0;
}

يؤدي إسناد معامل أكبر مثل flex-shrink: 2 أو flex-shrink: 3 إلى جعل العنصر يتحمل حصة أكبر من عجز المساحة مقارنةً بقرينه الذي يحمل flex-shrink: 1، فينكمش بسرعة أكبر كلما ضاقت الحاوية.

وخلافاً لخاصية التمدد، تضرب معادلة W3C معامل flex-shrink في وزن الحجم الأساسي flex-basis لكل عنصر؛ وبذلك يتنازل اللوح العريض ذو 300px عن بكسلات أكثر من الشارة الصغيرة ذات 80px حمايةً للعناصر الصغيرة من الاختفاء المبكر.

CSS
.tight-row {
  display: flex;
  width: 340px;
}
.box-slow {
  flex-basis: 220px;
  flex-shrink: 1;
}
.box-fast {
  flex-basis: 220px;
  flex-shrink: 3;
}

مختبر تفاعلي — التحكم في التقلص بـ flex-shrink

حتى عند إسناد معامل تقلص كبير مثل flex-shrink: 5 لن ينكمش العنصر المرن إلى أقل من عرض أطول كلمة متصلة أو صورة ثابتة بداخله؛ ويعود الفضل في هذه الحماية التلقائية إلى القيمة الافتراضية min-width: auto في الصفوف أو min-height: auto في الأعمدة، والتي تمنع تداخل السطور النصية وتشابكها.

يمكنك رفع هذه الأرضية عمداً بتحديد min-width: 140px، أو خفضها عبر min-width: 0 عند قص النصوص الطويلة مع overflow: hidden. وكما هو الحال في التمدد، تُعد الأرقام السالبة مثل flex-shrink: -1 غير صالحة ويتجاهلها المتصفح تماماً.

CSS
.floor-card {
  flex-basis: 260px;
  flex-shrink: 2;
  min-width: 150px;
}

لتشخيص سبب انضغاط أيقونة أو فيضان سطر مرن، افحص العنصر في أدوات المطور DevTools عبر لوحتي Layout وComputed لمراجعة قيم flex-shrink وflex-basis وmin-width الفعلية. يلخص الجدول الآتي حالات استخدام flex-shrink ومقارنتها.

التصريحسلوك التقلص عند ضيق الحاويةالاستخدام العملي الشائع
flex-shrink: 1انكماش نسبي تلقائي افتراضيالفقرات النصية والبطاقات المرنة المعتادة
flex-shrink: 0منع الانكماش تحت الحجم الأساسي نهائياًالأيقونات والصور الرمزية والأزرار الثابتة
flex-shrink: 2 فأكثرالتنازل عن حصة أكبر من عجز المساحةالألواح الثانوية التي تفسح المجال أولاً
min-width: autoإيقاف الانكماش عند عرض أطول كلمةحماية تلقائية للنصوص من التداخل
flex-shrink: -1صيغة غير صالحة يتجاهلها المتصفحمرفوضة دائماً لأن المعاملات غير سالبة فقط
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

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

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

في ملخص الدرس تعرّفت على دور القيمة الافتراضية flex-shrink: 1 في منع الفيضان، وكيفية حماية الأيقونات والأزرار من التشوه عبر flex-shrink: 0، وتفاعل معاملات التقلص المرجحة مع أرضية المحتوى min-width: auto. وفي الخطوة التالية ننتقل إلى درس خاصية align-self مع Flexbox في لغة CSS لتخصيص محاذاة عنصر مرن منفرد على المحور المتعامد.

مشاركة

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

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

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

المصطلحات4

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

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Space Deficit عجز المساحة السالب
المقدار الذي يتجاوز به مجموع الأحجام الأساسية والفجوات البُعد الداخلي للحاوية المرنة.
للمراجعة
02 Shrink Lock (flex-shrink 0) قفل الانكماش بقيمة الصفر
ضبط flex-shrink على 0 لتحتفظ الأيقونات والشارات والأزرار بأبعادها الكاملة داخل الحاويات الضيقة.
للمراجعة
03 Basis-Weighted Shrinkage التقلص المرجح بالحجم الأساسي
حساب يضرب معامل التقلص في الحجم الأساسي ليتنازل العنصر الأكبر عن مساحة أوسع من العنصر الصغير.
للمراجعة
04 Minimum Content Floor أرضية المحتوى الأدنى
حد الحماية الافتراضي min-width auto الذي يوقف انكماش العنصر المرن عند عرض أطول كلمة مفردة بداخله.
للمراجعة

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

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

الاختصارات3

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

0 / 3 مفهومةأول بطاقة، أول خطوة
01 CSS CSS
Cascading Style Sheets
لغة الأنماط المسؤولة عن ضبط الانكماش المرن وحماية العناصر من الفيضان أو التشوه.
للمراجعة
02 W3C W3C
World Wide Web Consortium
المنظمة العالمية التي وضعت خوارزمية التقلص المرجح في مواصفة الصندوق المرن.
للمراجعة
03 UI UI
User Interface
عناصر واجهة المستخدم كالصور الرمزية والأزرار التي تُحمى من الانضغاط عبر قيمة الصفر.
للمراجعة

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

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

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

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

0/2مهام منجزة
  1. طبّق العرض 48px والارتفاع 48px وتدوير الحواف 50% مع flex-shrink بقيمة 0 على شارة داخل صف مرن ضيق.

  2. امنح عنصرين بحجم أساسي 220px معاملي التقلص 1 و 3 داخل حاوية بعرض 340px وافحص عرضيهما النهائيين.

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

مساحة التحدي

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

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

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

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

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

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

ما القيمة الابتدائية الافتراضية لخاصية flex-shrink لكل عنصر مرن في CSS؟

02

أي تصريح يمنع تحول صورة رمزية دائرية بعرض 48px إلى شكل بيضاوي منضغط داخل صف مرن ضيق؟

03

عنصران بحجم أساسي 200px داخل صف ضيق بعرض 300px؛ الأول بمعامل تقلص 1 والثاني بمعامل 3، فأيهما يصبح أضيق؟

04

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

05

ماذا يحدث إذا حملت جميع العناصر في صف غير ملتف القيمة flex-shrink: 0 وتجاوز مجموع عروضها عرض الحاوية؟

06

كيف تتعامل لغة CSS مع قيمة سالبة مثل flex-shrink: -2؟

07

خلافاً لخاصية التمدد، تضرب معادلة التقلص معامل flex-shrink في الحجم الأساسي flex-basis لكل عنصر.

08

تؤثر خاصية flex-shrink بصرياً حتى عندما تتوفر مساحة فارغة موجبة فائضة داخل الحاوية.