Menu
flag Ar iconالعربيةdown icon

العرض width والارتفاع height في CSS: min وmax و% وauto

تضبط width وheight حجم صندوق العنصر. تعلّم الأحجام الثابتة والنسب المئوية، ولماذا لا تفعل height: 100% شيئًا غالبًا، وmin-height وmax-width للتخطيطات المرنة، والفرق بين auto و100%، والكلمات المفتاحية fit-content.

تحتوي هذه الصفحة على محررات قابلة للتشغيل - حرّر، شغّل، وشاهد النتيجة فوراً.

ضبط العرض والارتفاع

تضبط width وheight حجم صندوق المحتوى للعنصر. افتراضيًا يُضاف الحشو والحد خارج ذلك الحجم.

الصندوق 260 في 100 بكسل: 240 في 80 للمحتوى إضافةً إلى 10px من الحشو على كل جانب. مع box-sizing: border-box سيكون 240 في 80 بالضبط؛ وتشرح صفحة نموذج الصندوق الحالتين.

القيم

القيمةمثالالمعنى
autowidth: autoالافتراضي. العناصر الكتلية تملأ عرض حاويتها؛ والارتفاع يناسب المحتوى
طول300px، 20remحجم ثابت
نسبة مئوية50%من عرض الكتلة الحاوية (لـ width) أو ارتفاعها (لـ height)
وحدات الشاشة100vh، 50vw، 100dvhمن نافذة المتصفح
min-contentwidth: min-contentأضيق ما يمكن، وأطول كلمة هي التي تحدد
max-contentwidth: max-contentبعرض المحتوى على سطر واحد
fit-contentwidth: fit-contentمثل max-content، لكن لا يتجاوز عرض الحاوية أبدًا

لماذا لا تفعل height: 100% شيئًا

يحتاج height بالنسبة المئوية إلى أب له ارتفاع محدد كي يكون نسبة منه. وحين يكون ارتفاع الأب auto، وهي الحالة المعتادة، تتصرف height: 100% للابن كـ auto أيضًا.

الابن الأول طوله بطول نصه فقط. أما الثاني فيملأ أباه لأن للأب ارتفاعًا. لكي تعمل سلسلة الصفحة كلها بالنسب المئوية، يحتاج كل سلف حتى html وbody إلى ارتفاع، ولهذا تستخدم معظم التخطيطات flexbox أو grid بدلًا من ذلك: فأبناؤهما يتمددون ليملؤوا المساحة من دون أي نسبة مئوية.

min-height وmax-width: أحجام مرنة

الأحجام الثابتة تنكسر بسهولة: الارتفاع الثابت يفيض حين يكون النص أطول من المتوقع، والعرض الثابت أعرض من الهاتف. خصائص min- وmax- تضبط حدودًا بدل أحجام محددة.

الخاصيةالمعنى
min-widthلا يكون أضيق من هذا أبدًا
max-widthلا يكون أعرض من هذا أبدًا
min-heightلا يكون أقصر من هذا أبدًا، لكن يمكنه النمو
max-heightلا يكون أطول من هذا أبدًا (المحتوى الزائد يفيض)

على شاشة أضيق من 360px، كالهاتف، تنكمش البطاقات معها، لأن max-width مجرد سقف.

حين ينطبق حجم وحد معًا، تفوز الحدود: max-width تتغلب على width، وmin-width تتغلب على max-width.

الفرق بين width: auto وwidth: 100%

في العنصر الكتلي، ترك width على auto هو غالبًا ما تريده. تُدخل auto الصندوق كله، بحشوه وحده، في الحاوية. أما 100% فتجعل المحتوى بعرض الحاوية ثم تضيف الحشو والحد فوقه:

تبقى width: 100% مفيدة على العناصر غير الكتلية افتراضيًا (<input>، <img>، عنصر inline-block)، ويُفضّل أن تكون مع box-sizing: border-box.

التحجيم حسب المحتوى: fit-content

لجعل عنصر كتلي بعرض نصه فقط، من دون تحويله إلى inline-block، استخدم fit-content:

تُوسِّط fit-content مع margin-inline: auto تسمية أو كتلة تشبه الزر تبقى بعرض نصها بالضبط.

أقسام بارتفاع كامل ووحدات الشاشة

vh تساوي 1% من ارتفاع نافذة العرض، وvw تساوي 1% من عرضها. على الهواتف يكبر شريط عنوان المتصفح ويصغر أثناء التمرير، لذلك قد تكون 100vh أطول مما تراه. الوحدة الديناميكية dvh تتبع المساحة المرئية، وsvh تستخدم أصغر ارتفاع مرئي:

.hero {
  min-height: 100vh;  /* fallback */
  min-height: 100dvh; /* follows mobile toolbars */
}

استخدم min-height لا height للأقسام بملء الشاشة، كي تحصل الشاشة الصغيرة ذات النص الكثير على قسم يكبر. الارتفاع الثابت مع محتوى لا يتسع يجعله يفيض، وهذا ما تعالجه صفحة overflow في CSS.

أخطاء شائعة

  • height: 100% داخل أب بلا ارتفاع. تتصرف كـ auto. أعطِ الأب ارتفاعًا أو استخدم flex أو grid.
  • width: 100% مع حشو. يتجاوز العنصر حاويته. اترك عرض العناصر الكتلية على auto، أو استخدم box-sizing: border-box.
  • ارتفاعات ثابتة على حاويات النص. استخدم min-height كي لا يفيض النص الأطول أو الخط الأكبر.
  • width على عنصر سطري. يتجاهل <span> و<a> الخاصيتين width وheight؛ اجعلهما inline-block أو block.
  • width: 1200px على غلاف الصفحة. يتمرر أفقيًا على كل هاتف. استخدم max-width: 1200px بدلًا منه.

الأسئلة الشائعة

لماذا لا تعمل height: 100%؟

الارتفاع بالنسبة المئوية نسبة من ارتفاع الأب، ولا يعمل إلا حين يكون ذلك الارتفاع محددًا. إذا كان ارتفاع الأب auto (يتحدد بمحتواه) تُعامل النسبة كـ auto. أعطِ الأب ارتفاعًا، أو استخدم flexbox أو grid، فهما يمطّان الأبناء من دون نسب مئوية.

ما الفرق بين width: 100% وwidth: auto؟

في العنصر الكتلي، تملأ auto الحاوية بما فيها الحشو والحد. أما width: 100% فتضبط عرض المحتوى على عرض الحاوية، فتحت box-sizing: content-box الافتراضية يجعل أي حشو أو حد العنصر يتجاوز الحاوية.

ماذا تفعل min-height في CSS؟

تضبط أصغر ارتفاع مسموح للعنصر مع السماح له بالنمو مع محتواه. min-height: 200px تعطي البطاقة الفارغة 200px، والبطاقة التي فيها نص أكثر تصبح أطول بدل أن يفيض محتواها، وهو ما لا يسمح به height الثابت.

ما الفرق بين width وmax-width؟

تضبط width حجمًا محددًا. أما max-width فتضبط حدًا أعلى: يمكن أن يكون العنصر أضيق، على الهاتف مثلًا، لكنه لا يكون أعرض أبدًا. width: 100%; max-width: 600px; تملأ الشاشات الصغيرة وتتوقف عند 600px في الكبيرة.

كيف أجعل العنصر بارتفاع الشاشة كاملة؟

استخدم min-height: 100vh (أو 100dvh كي تُحتسب أشرطة أدوات متصفح الهاتف). استخدام min-height بدل height يسمح للقسم بأن يكبر إذا كان محتواه أطول من الشاشة.

Coddy programming languages illustration

تعلّم البرمجة مع Coddy

ابدأ الآن