عرض وارتفاع وفيضان 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 تُعيّنان أبعاد منطقة محتوى العنصر:
مثال
<style>
.box {
width: 300px;
height: 200px;
background: #f0f0f0;
}
</style>
<div class="box">عنصر صندوق يُظهر نطاق الأبعاد</div>
الوحدات الشائعة
مثال
<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
يحدان الحد الأدنى/الأقصى لعرض العنصر، يُستخدمان بشكل شائع في التصميم المتجاوب:
مثال
<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
مثال
<style>
.card {
min-height: 200px;
max-height: 400px;
background: #fff3e0;
border: 1px solid #ccc;
}
</style>
<div class="card">مكون بطاقة بارتفاع أدنى/أقصى. المحتوى الذي يتجاوز الارتفاع الأقصى سيفيض وسيتطلب خاصية overflow للمعالجة.</div>
دالة calc()
calc() هي دالة CSS تتيح العمليات الحسابية (جمع، طرح، ضرب، قسمة) في قيم الخصائص. أكبر ميزة لها هي خلط وحدات مختلفة.
+ و- يجب أن تكون لهما مسافات على كلا الجانبين (calc(100% - 20px) ✅، calc(100%-20px) ❌)، مسافات * و/ اختيارية.
مثال
<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>
حالات الاستخدام الشائعة
- شريط جانبي + محتوى رئيسي:
.main { width: calc(100% - 300px); }يتكيف مع المساحة المتبقية - بطاقات متساوية المسافات:
.card { width: calc((100% - 40px) / 3); }ثلاثة أعمدة بفجوات 20px - خط متجاوب:
font-size: calc(14px + 0.5vw);حجم أساسي + زيادة منفذ العرض - توسيط دقيق:
left: calc(50% - 100px);إزاحة معروفة بديلة لـ transform
توافق calc()
calc() مدعوم في IE11+، Chrome 26+، Firefox 16+، Safari 7+ ويمكن استخدامها بأمان في المشاريع الحديثة. فقط تجنب تسلسل النصوص في calc().
التحكم في الفيضان
auto. أفضل ممارسة هي استخدام اختصار overflow.
عندما يتجاوز محتوى العنصر العرض/الارتفاع المُعيَّن، يحدث "فيضان". خاصية overflow تتحكم في كيفية معالجة المحتوى الفائض.
قيم overflow
مثال
<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>
التحكم في كل اتجاه
مثال
<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 لحذف سطر واحد من النص:
مثال
<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. قص الصور
حاوية بحجم ثابت مع فيضان مخفي للصور:
مثال
<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. حاوية تمرير
إنشاء منطقة قابلة للتمرير بارتفاع ثابت:
مثال
<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 على الأصل يمسح تأثيرات طفو الابن:
مثال
<style>
.clearfix {
overflow: hidden;
background: #e8eaf6;
padding: 10px;
}
</style>
<div class="clearfix">حاوية مسح الطفو (overflow: hidden يُشعل BFC)</div>
object-fit (تكيف الصور/الفيديو)
object-fit يتحكم في كيفية تكيف عناصر الاستبدال <img> أو <video> مع حجم الحاوية:
مثال
<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>
- cover: يحافظ على النسبة، يملأ الحاوية، يقص الزائد (الأكثر شيوعاً)
- contain: يحافظ على النسبة، يُظهر الصورة كاملة، قد يترك فراغاً
- fill: يمدد لملء without الحفاظ على النسبة (قد يشوّه)
- none: يحافظ على الحجم الأصلي
- scale-down: يأخذ الأصغر بين none وcontain
دوال الأبعاد CSS
calc()
calc() تتيح حسابات الأبعاد الديناميكية في CSS، خلط وحدات مختلفة:
مثال
<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>
ملاحظة: العوامل يجب أن تكون لها مسافات على كلا الجانبين، وإلا لن يتم التعرف عليها.
❓ أسئلة شائعة
📖 ملخص
- التحكم في أبعاد العنصر وسلوك الفيضان هو أساس التخطيط
width/heightيُعيّنان الأبعاد،min-width/max-widthيُقيّدان النطاق،overflowيُعالج المحتوى الفائضobject-fit: coverأداة قوية للتعامل مع الصور، بينماcalc()يوفر حساباً ديناميكياً مرناً- إتقان هذه الخصائص يمنحك تحكماً أفضل في سلوك العناصر في جميع الحالات
📝 تمارين
- أنشئ "حاوية متجاوبة" — عرض 80%، عرض أقصى 1200px، عرض أدنى 320px، مُوَسَّطة أفقياً.
- أنشئ حاوية صورة بحجم ثابت (300×200) بصورة أكبر، باستخدام
object-fit: coverلملء without تشويه. - نفّذ تأثيرات "حذف سطر واحد بعلامة القطع" و"فيضان نص متعدد الأسطر" (تلميح: الأسطر المتعددة تستخدم
-webkit-line-clamp). - استخدم
calc()لتنفيذ تخطيط "شاشة كاملة ناقص ارتفاع شريط التنقل".



