طفو ومسح 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.

📖 ملخص

📝 تمارين

  1. أنشئ صفحة صورة ونص مع الصورة تطفو لليسار والنص يلف حولها.
  2. استخدم الطفو لتنفيذ "تخطيط ثلاثة أعمدة" — يسار 200px، يمين 200px، وسط متكيف.
  3. وضح "انهيار الارتفاع" وحله بثلاث طرق مختلفة على الأقل (clearfix، overflow، pseudo-element).
  4. أعد كتابة تخطيط الطفو ثلاثة أعمدة باستخدام Flexbox وقارن اختلافات الكود.
100%