Đăng nhập

Bài 13: Float và Clear – Kỹ thuật bố cục truyền thống trước thời Flexbox

Trước khi có Flexbox hay CSS Grid, các lập trình viên web thường dùng float để tạo bố cục chia cột, căn trái – phải.
Dù ngày nay ít còn dùng trong dự án hiện đại, nhưng hiểu về float giúp bạn đọc code cũ và xử lý lỗi layout tốt hơn.

Trong bài học này, bạn sẽ:

  • Hiểu cách hoạt động của float
  • Biết cách dùng clear để tránh vỡ bố cục
  • Áp dụng float để chia cột đơn giản

1. float là gì?

float giúp phần tử trôi về bên trái hoặc phải, làm cho các phần tử khác bao quanh nó nếu có thể.

.left-box {
  float: left;
}

.right-box {
  float: right;
}
  • float: left → đẩy phần tử sang trái
  • float: right → đẩy sang phải

2. Vấn đề: phần tử cha bị “mất chiều cao”

Khi con dùng float, nó thoát khỏi dòng chảy, khiến phần tử cha không tự tính được chiều cao.

Ví dụ:

<div class="parent">
  <div class="child" style="float:left;">Nội dung</div>
</div>

div.parent không thấy chiều cao của child, dẫn đến các lỗi về viền, nền, v.v.


3. Giải pháp: dùng clear hoặc clearfix

a. clear

Sử dụng clear để bắt phần tử kế tiếp xuống dòng, tránh chồng lấn:

.clearfix {
  clear: both;
}
<div style="float:left;">A</div>
<div style="float:right;">B</div>
<div class="clearfix"></div>

b. clearfix (chuẩn hiện nay)

.clearfix::after {
  content: "";
  display: table;
  clear: both;
}

Thêm class .clearfix vào phần tử cha để nó nhận đúng chiều cao:

<div class="container clearfix">
  <div style="float:left; width:50%;">Cột trái</div>
  <div style="float:right; width:50%;">Cột phải</div>
</div>

4. float thường dùng để làm gì?

Trước đây:

  • Chia 2 – 3 cột trên web
  • Căn hình ảnh bên trái/phải đoạn văn
  • Tạo menu ngang

Hiện nay, bạn chỉ nên dùng float cho:

  • Căn ảnh nhỏ bên trái/phải
  • Trường hợp đơn giản hoặc yêu cầu tương thích trình duyệt cũ

5. Thực hành: chia 2 cột bằng float

style.css

.container {
  width: 100%;
  background: #f1f1f1;
  overflow: hidden; /* Cách khác để fix mất chiều cao */
  margin-bottom: 30px;
}

.left, .right {
  width: 48%;
  padding: 1%;
  box-sizing: border-box;
}

.left {
  float: left;
  background: #ffccbc;
}

.right {
  float: right;
  background: #c5e1a5;
}

.image-float {
  float: right;
  margin: 10px;
  width: 150px;
}

index.html

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Bài 13 – Float và Clear</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>

  <div class="container">
    <div class="left">Cột bên trái</div>
    <div class="right">Cột bên phải</div>
  </div>

  <p>
    <img class="image-float" src="https://picsum.photos/150" alt="Ảnh ví dụ">
    Đây là đoạn văn có ảnh trôi bên phải. Văn bản sẽ bao quanh ảnh.  
    Bạn có thể dùng `float: right` để làm kiểu trình bày báo chí.
  </p>

</body>
</html>

6. Ghi nhớ

Thuộc tínhTác dụng
float: left/rightĐẩy phần tử sang trái/phải, cho phép trôi
clear: bothNgăn phần tử bị trôi kèm theo
clearfixGiữ chiều cao cho phần tử cha khi dùng float

Khi nào nên dùng float?

  • Không nên dùng để làm bố cục chính nữa
  • Float hiện tại chủ yếu dùng cho trình bày ảnh trong nội dung

Thảo luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Đăng ký nhận tin mới

Nhận bài học, tài nguyên và cơ hội việc làm qua email hàng tuần.

Chúng tôi cam kết không spam. Bạn có thể hủy bất cứ lúc nào.