**القيم المُمكنة لخاصية `float`:**
* `left`: يضع العنصر على الجانب الأيسر من حاويه.
* `right`: يضع العنصر على الجانب الأيمن من حاويه.
* `none`: (القيمة الافتراضية) لا يُغير وضع العنصر.
* `inherit`: يرث قيمة `float` من العنصر الأب.
**كيف تعمل خاصية `float`؟**
عند تطبيق خاصية `float` على عنصر، يتم إخراجه من التدفق الطبيعي للصفحة (normal flow)، ويتم وضعه على الجانب المُحدد (يسار أو يمين). تتدفق العناصر الأخرى الموجودة في الحاوية حول العنصر العائم.
**مثال بسيط:**
```html
<div style="width: 300px; border: 1px solid black;">
<img src="image.jpg" style="float: left; margin-right: 10px;" alt="صورة">
<p>هذا النص يتدفق حول الصورة العائمة على اليسار. هذا النص يتدفق حول الصورة العائمة على اليسار. هذا النص يتدفق حول الصورة العائمة على اليسار.</p>
</div>
في هذا المثال، يتم وضع الصورة على الجانب الأيسر من الحاوية، ويتدفق النص حولها.
**مشاكل `float`:**
* **انهيار الحاوية (Containing Block Collapse):** إذا كانت الحاوية تحتوي فقط على عناصر عائمة، فإن ارتفاعها سينهار إلى الصفر. لحل هذه المشكلة، نستخدم ما يُعرف بـ "clearfix".
* **التداخل مع العناصر الأخرى:** قد تتداخل العناصر العائمة مع العناصر الأخرى في الصفحة بشكل غير مُتوقع.
**حل مشكلة انهيار الحاوية (clearfix):**
هناك عدة طرق لحل مشكلة انهيار الحاوية، أشهرها استخدام ما يُعرف بـ "clearfix":
1. **إضافة عنصر فارغ مع خاصية `clear`:**
```html
<div style="width: 300px; border: 1px solid black;">
<img src="image.jpg" style="float: left; margin-right: 10px;" alt="صورة">
<p>هذا النص يتدفق حول الصورة العائمة على اليسار.</p>
<div style="clear: both;"></div> <!— عنصر فارغ لحل المشكلة —>
</div>
2. **استخدام pseudo-element `::after`:** (الطريقة المُفضلة)
```css
.clearfix::after {
content: "";
display: table;
clear: both;
}
```
ثم نضيف الكلاس `clearfix` إلى الحاوية:
```html
<div style="width: 300px; border: 1px solid black;" class="clearfix">
<img src="image.jpg" style="float: left; margin-right: 10px;" alt="صورة">
<p>هذا النص يتدفق حول الصورة العائمة على اليسار.</p>
</div>
**خاصية `clear`:**
تُستخدم خاصية `clear` للتحكم في تدفق العناصر حول العناصر العائمة. القيم المُمكنة:
* `left`: يمنع العنصر من التدفق بجوار أي عنصر عائم على اليسار.
* `right`: يمنع العنصر من التدفق بجوار أي عنصر عائم على اليمين.
* `both`: يمنع العنصر من التدفق بجوار أي عنصر عائم على كلا الجانبين.
* `none`: (القيمة الافتراضية) يسمح للعنصر بالتدفق بشكل طبيعي.
**متى نستخدم `float`؟**
على الرغم من أن Flexbox و Grid هما الخياران الأفضل في معظم الحالات، إلا أن `float` لا يزال مُفيدًا في بعض الحالات البسيطة، مثل:
* وضع صورة داخل فقرة مع تدفق النص حولها (كما في المثال أعلاه).
* إنشاء تخطيطات بسيطة مُكونة من عمودين.
خاصية `float` تُستخدم لوضع العناصر على الجانب الأيسر أو الأيمن من حاويتها، ولكن يجب الانتباه إلى مشاكلها، خاصةً مشكلة انهيار الحاوية. يُفضل استخدام Flexbox و Grid لإنشاء تخطيطات أكثر تعقيدًا، حيث أنها توفر تحكمًا أكبر ومرونة أعلى.