عرض وارتفاع وفيضان CSS

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

مرجع سريع لخصائص الأبعاد

الخاصية القيم الشائعة الغرض
width 300px، 50%، 50vw، auto عرض محتوى العنصر
height 200px، 50%، 50vh، auto ارتفاع محتوى العنصر
min-width 320px، 50% عرض أدنى (يمنع صغر الحجم الزائد)
max-width 1200px، 80% عرض أقصى (شائع في التصميم المتجاوب)
min-height 200px، 100vh ارتفاع أدنى
max-height 400px ارتفاع أقصى (يفيض عند تجاوزه)
overflow visible، hidden، scroll، auto كيفية معالجة المحتوى الفائض
overflow-x visible، hidden، scroll، auto التحكم في الفيضان الأفقي
overflow-y visible، hidden، scroll، auto التحكم في الفيضان العمودي

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

width وheight تُعيّنان أبعاد منطقة محتوى العنصر:

مثال

HTML
<style>
.box {
  width: 300px;
  height: 200px;
  background: #f0f0f0;
}
</style>
<div class="box">عنصر صندوق يُظهر نطاق الأبعاد</div>
▶ جرّب الكود

الوحدات الشائعة

مثال

HTML
<style>
.pixel {
  width: 300px;
  background: #e3f2fd;
}
.percent {
  width: 50%;
  background: #fce4ec;
}
.vw-vh {
  width: 50vw;
  height: 100vh;
  background: #e8f5e9;
}
.auto-width {
  width: auto;
  background: #fff3e0;
}
</style>
<div class="pixel">وحدة بكسل: عرض ثابت 300px</div>
<div class="percent">وحدة النسبة: عرض 50%</div>
<div class="vw-vh">وحدة منفذ العرض: عرض 50vw</div>
<div class="auto-width">عرض تلقائي: يحدده المحتوى</div>
▶ جرّب الكود

min-width / max-width

يحدان الحد الأدنى/الأقصى لعرض العنصر، يُستخدمان بشكل شائع في التصميم المتجاوب:

مثال

HTML
<style>
.container {
  width: 80%;
  max-width: 1200px;
  min-width: 320px;
  margin: 0 auto;
  background: #e8eaf6;
  padding: 10px;
}
</style>
<div class="container">حاوية مع قيود عرض متجاوبة</div>
▶ جرّب الكود

min-height / max-height

مثال

HTML
<style>
.card {
  min-height: 200px;
  max-height: 400px;
  background: #fff3e0;
  border: 1px solid #ccc;
}
</style>
<div class="card">مكون بطاقة بارتفاع أدنى/أقصى. المحتوى الذي يتجاوز الارتفاع الأقصى سيفيض وسيتطلب خاصية overflow للمعالجة.</div>
▶ جرّب الكود

دالة calc()

calc() هي دالة CSS تتيح العمليات الحسابية (جمع، طرح، ضرب، قسمة) في قيم الخصائص. أكبر ميزة لها هي خلط وحدات مختلفة.

📌 قواعد calc(): + و- يجب أن تكون لهما مسافات على كلا الجانبين (calc(100% - 20px) ✅، calc(100%-20px) ❌)، مسافات * و/ اختيارية.

مثال

HTML
<style>
.layout {
  width: calc(100% - 300px);
  background: #e3f2fd;
  padding: 16px;
}

.sidebar {
  width: 300px;
  float: left;
  background: #fce4ec;
  padding: 16px;
  box-sizing: border-box;
}
</style>
<div class="layout">المحتوى الرئيسي: عرض = 100% - 300px</div>
▶ جرّب الكود

حالات الاستخدام الشائعة

  1. شريط جانبي + محتوى رئيسي: .main { width: calc(100% - 300px); } يتكيف مع المساحة المتبقية
  2. بطاقات متساوية المسافات: .card { width: calc((100% - 40px) / 3); } ثلاثة أعمدة بفجوات 20px
  3. خط متجاوب: font-size: calc(14px + 0.5vw); حجم أساسي + زيادة منفذ العرض
  4. توسيط دقيق: left: calc(50% - 100px); إزاحة معروفة بديلة لـ transform

توافق calc()

calc() مدعوم في IE11+، Chrome 26+، Firefox 16+، Safari 7+ ويمكن استخدامها بأمان في المشاريع الحديثة. فقط تجنب تسلسل النصوص في calc().

التحكم في الفيضان

💡 overflow-x وoverflow-y: عند تعيين الفيضان الأفقي والعمودي بقيم مختلفة، قد يُجبر أحدهما على auto. أفضل ممارسة هي استخدام اختصار overflow.

عندما يتجاوز محتوى العنصر العرض/الارتفاع المُعيَّن، يحدث "فيضان". خاصية overflow تتحكم في كيفية معالجة المحتوى الفائض.

قيم overflow

مثال

HTML
<style>
.visible {
  overflow: visible;
  background: #fce4ec;
  height: 50px;
}
.hidden {
  overflow: hidden;
  background: #e8f5e9;
  height: 50px;
}
.scroll {
  overflow: scroll;
  background: #fff3e0;
  height: 50px;
}
.auto {
  overflow: auto;
  background: #e3f2fd;
  height: 50px;
}
</style>
<div class="visible">منطقة مرئية (الفيضان يظهر خارج الصندوق)</div>
<div class="hidden">المحتوى يُقص عند التجاوز (overflow hidden)</div>
<div class="scroll">شريط التمرير مرئي دائماً حتى لو容纳 المحتوى</div>
<div class="auto">شريط التمرير يظهر فقط عندما يفيض المحتوى</div>
▶ جرّب الكود

التحكم في كل اتجاه

مثال

HTML
<style>
.box {
  overflow-x: hidden;
  overflow-y: auto;
  width: 200px;
  height: 80px;
  background: #f5f5f5;
  border: 1px solid #ddd;
}
</style>
<div class="box">عنصر صندوق بفيضان أفقي مخفي وتمرير عمودي تلقائي لعرض جميع المحتوى</div>
▶ جرّب الكود

حالات الاستخدام الشائعة

1. حذف النص بعلامة القطع

مُدمج مع text-overflow لحذف سطر واحد من النص:

مثال

HTML
<style>
.ellipsis {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  width: 200px;
  border: 1px solid #ccc;
  padding: 8px;
  background: #f9f9f9;
}
</style>
<div class="ellipsis">هذا نص طويل سيتم حذفه بعلامة القطع عند تجاوز عرض الحاوية</div>
▶ جرّب الكود

2. قص الصور

حاوية بحجم ثابت مع فيضان مخفي للصور:

مثال

HTML
<style>
.avatar {
  width: 100px;
  height: 100px;
  overflow: hidden;
  border-radius: 50%;
  background: #e0e0e0;
}
.avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
</style>
<div class="avatar">حاوية الصورة الرمزية (قص دائري)</div>
▶ جرّب الكود

3. حاوية تمرير

إنشاء منطقة قابلة للتمرير بارتفاع ثابت:

مثال

HTML
<style>
.scroll-box {
  height: 300px;
  overflow-y: auto;
  border: 1px solid #ddd;
  padding: 10px;
  background: #fafafa;
}
</style>
<div class="scroll-box">
  <p>السطر 1: حاوية التمرير يمكنها عرض محتوى كبير</p>
  <p>السطر 2: شريط التمرير يظهر عندما يتجاوز المحتوى الارتفاع</p>
  <p>السطر 3: مرّر لعرض المحتوى المخفي</p>
  <p>السطر 4: تم تنفيذه بـ overflow-y: auto</p>
  <p>السطر 5: محتوى أكثر يعني تمرير أكثر</p>
  <p>السطر 6: مناسب لأقسام التعليقات والإعلانات وما إلى ذلك</p>
</div>
▶ جرّب الكود

4. مسح الطفو

تعيين overflow: hidden أو overflow: auto على الأصل يمسح تأثيرات طفو الابن:

مثال

HTML
<style>
.clearfix {
  overflow: hidden;
  background: #e8eaf6;
  padding: 10px;
}
</style>
<div class="clearfix">حاوية مسح الطفو (overflow: hidden يُشعل BFC)</div>
▶ جرّب الكود

object-fit (تكيف الصور/الفيديو)

object-fit يتحكم في كيفية تكيف عناصر الاستبدال <img> أو <video> مع حجم الحاوية:

مثال

HTML
<style>
.image-container {
  width: 300px;
  height: 200px;
  background: #f5f5f5;
  border: 2px dashed #aaa;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 10px;
}
.image-container img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
</style>
<div class="image-container">حاوية الصورة (استبدل بالصورة الفعلية)</div>
▶ جرّب الكود

دوال الأبعاد CSS

calc()

calc() تتيح حسابات الأبعاد الديناميكية في CSS، خلط وحدات مختلفة:

مثال

HTML
<style>
.calc-demo {
  width: calc(100% - 40px);
  height: calc(50vh - 60px);
  background: #e3f2fd;
  border: 1px solid #90caf9;
  display: flex;
  align-items: center;
  justify-content: center;
}
</style>
<div class="calc-demo">العرض يطرح تلقائياً 40px، الارتفاع نصف منفذ العرض ناقص 60px</div>
▶ جرّب الكود

ملاحظة: العوامل يجب أن تكون لها مسافات على كلا الجانبين، وإلا لن يتم التعرف عليها.


❓ أسئلة شائعة

س لماذا لا يعمل height: 100%؟
ج الارتفاع النسبي يعتمد على ارتفاع الأصل. إذا كان ارتفاع الأصل auto (يحدده المحتوى)، ارتفاع الابن: 100% لا يمكن حسابه — لأن الأصل لم يحدد ارتفاعه بعد. لجعل الارتفاعات النسبية تعمل، يحتاج الأصل إلى قيمة ارتفاع صريحة.
س ما الفرق بين max-width: 100% وwidth: 100%؟
ج width: 100% يُجبر العنصر على مساواة عرض الأصل، حتى لو كان المحتوى صغيراً. max-width: 100% يعني "لا تتجاوز عرض الأصل أبداً" — إذا كان العنصر أصغر طبيعياً، يبقى أصغر. استخدام max-width: 100% للصور المتجاوبة هو أفضل ممارسة.
س هل overflow: hidden يخفي جميع المحتوى الفائض؟
ج نعم. overflow: hidden يقص جميع المحتوى الذي يتجاوز أبعاد العنصر. إذا كنت بحاجة للتمرير عبر المحتوى الفائض، استخدم overflow: auto (شريط التمرير يظهر عند الحاجة) أو overflow: scroll (يُظهر شريط التمرير دائماً). overflow: hidden يُستخدم أيضاً بشكل شائع لتشغيل BFC (سياق تنسيق القطعة) لحل مشاكل الطفو.

📖 ملخص

📝 تمارين

  1. أنشئ "حاوية متجاوبة" — عرض 80%، عرض أقصى 1200px، عرض أدنى 320px، مُوَسَّطة أفقياً.
  2. أنشئ حاوية صورة بحجم ثابت (300×200) بصورة أكبر، باستخدام object-fit: cover لملء without تشويه.
  3. نفّذ تأثيرات "حذف سطر واحد بعلامة القطع" و"فيضان نص متعدد الأسطر" (تلميح: الأسطر المتعددة تستخدم -webkit-line-clamp).
  4. استخدم calc() لتنفيذ تخطيط "شاشة كاملة ناقص ارتفاع شريط التنقل".
100%