طفو ومسح CSS
الطفو كان طريقة التخطيط الرئيسية لـ CSS قبل Flexbox وGrid. بينما تخططيطات الحديثة تفضل Flexbox/Grid، فهم الطفو لا يزال مهماً — ستقع عليه في قواعدコード قديمة.
مرجع سريع لخصائص الطفو
| الخاصية | القيم الشائعة | الغرض |
|---|---|---|
float |
left، right، none |
اتجاه الطفو |
clear |
left، right، both، none |
مسح تأثيرات الطفو |
خاصية الطفو
float تجعل العناصر "تطفو" إلى جانب حاويتها، مع محتوى آخر يلف حولها.
مثال
HTML
<style>
.float-left {
float: left;
width: 120px;
background: #e3f2fd;
border: 1px solid #90caf9;
padding: 10px;
}
.float-right {
float: right;
width: 120px;
background: #fce4ec;
border: 1px solid #f48fb1;
padding: 10px;
}
</style>
<div class="float-left">طفو لليسار</div>
<div class="float-right">طفو لليمين</div>
<p>النص يلف حول العناصر العائمة...</p>
سلوك الطفو
مثال
HTML
<style>
.container {
border: 2px solid #333;
padding: 10px;
}
.image {
float: left;
margin-right: 15px;
margin-bottom: 10px;
width: 150px;
height: 100px;
background: #e3f2fd;
}
</style>
<div class="container">
<div class="image">صورة</div>
<p>النص يلف حول الصورة العائمة. هذا هو تأثير اللف النصي الكلاسيكي الذي صُمم الطفو من أجله أصلاً. النص يتدفق بشكل طبيعي حول العنصر العائم.</p>
</div>
مشاكل الطفو: انهيار الارتفاع
عندما يطفو جميع الأبناء، الأصل "ينسى" لفّهم:
مثال
HTML
<style>
.parent {
border: 2px solid red;
}
.child {
float: left;
width: 100px;
height: 100px;
background: #e3f2fd;
border: 1px solid #1976d2;
}
</style>
<div class="parent">
<div class="child">ابن 1</div>
<div class="child">ابن 2</div>
</div>
النتيجة: حدود الأصل تحتضن الأعلى، الأبناء يفيضون — لأن الأبناء العائمين لا يشغلون مساحة في تدفق المستند.
مسح الطفو
1. استخدام خاصية clear (تقليدي)
مثال
HTML
<div class="parent">
<div class="child">محتوى</div>
<div class="child">محتوى</div>
<div style="clear: both;"></div>
</div>
2. overflow الأصل
مثال
HTML
<style>
.parent {
overflow: hidden;
}
</style>
يستخدم سلوك BFC (سياق تنسيق القطعة).
3. مسح عنصر pseudo (مُوصى به)
الطريقة القياسية المُوصى بها:
مثال
HTML
<style>
.clearfix::after {
content: "";
display: block;
clear: both;
}
</style>
<div class="parent clearfix">
<div class="child" style="float: left;">محتوى</div>
<div class="child" style="float: left;">محتوى</div>
</div>
البديل الحديث: Flexbox
معظم تخطيطات الطفو يمكن استبدالها الآن بـ Flexbox أو Grid:
مثال
<style>
/* الطريقة القديمة: طفو */
.old-layout {
overflow: hidden;
}
.old-layout .col {
float: left;
width: 33.33%;
}
/* الطريقة الحديثة: Flexbox */
.modern-layout {
display: flex;
}
.modern-layout .col {
flex: 1;
}
</style>
❓ أسئلة شائعة
س هل لا يزال الطفو يُستخدم للتخطيطات؟
ج غير مُوصى به. الطفو صُمم لللف النصي، وليس للتخطيطات. Flexbox و Grid حلت تماماً محل تخطيطات الطفو. استخدم الطفو فقط لتأثيرات "صورة + لف نصي" — هذه هي حالته الاستخدام الحديثة الصحيحة.
س ما هو clearfix؟
ج clearfix هو hack كلاسيكي لمسح تأثيرات الطفو. أضف `::after { content: ""; display: block; clear: both; }` إلى الحاوية الأصلية لجعلها "تلف" الأبناء العائمين. مع Flexbox أو Grid، clearfix غير ضروري.
س ماذا أفعل بشأن انهيار ارتفاع أصل الطفو؟
ج انهيار الارتفاع يحدث لأن العناصر العائمة تغادر تدفق المستند — الأصل لا يستطيع كشف ارتفاعها. الحلول: اضبط `overflow: hidden` على الأصل، أو استخدم clearfix، أو انتقل إلى تخطيط Flexbox.
📖 ملخص
- الطفو كان يوماً طريقة التخطيط الرئيسية لـ CSS، الآن حلّت محله بشكل كبير Flexbox و Grid
- مشكلة الطفو الجوهرية هي "انهيار الارتفاع" — الإصلاح الكلاسيكي هو عنصر pseudo clearfix
- للمشاريع الجديدة، استخدم Flexbox أو Grid؛ لتأثيرات اللف النصي، الطفو لا يزال الخيار الأفضل
📝 تمارين
- أنشئ صفحة صورة ونص مع الصورة تطفو لليسار والنص يلف حولها.
- استخدم الطفو لتنفيذ "تخطيط ثلاثة أعمدة" — يسار 200px، يمين 200px، وسط متكيف.
- وضح "انهيار الارتفاع" وحله بثلاث طرق مختلفة على الأقل (clearfix، overflow، pseudo-element).
- أعد كتابة تخطيط الطفو ثلاثة أعمدة باستخدام Flexbox وقارن اختلافات الكود.



