31

Float và Clear trong CSS

by PT on 30/03/2011, Lượt xem: 27.278

Float và clear là hai thuộc tính quan trọng của CSS, Float và Clear ngày càng được sử dụng nhiều trong việc thiết kế giao diện, trình bày và dàn trang.

1. Float

Với CSS float, một thành phần có thể được hiển thị ở bên trái hay bên phải của thành phần mẹ, cho phép các thành phần khác di chuyển lên lấp đầy khoảng trống nếu có.
Float thường được sử dụng để căn chỉnh hình ảnh, nhưng nó cũng được sử dụng nhiều trong thiết kế giao diện (layout).

Ví dụ: ở ví dụ sau tôi có một tấm hình và một đoạn văn bản, tôi sẽ float:left cho tấm hình này với mã CSS như sau:

img{float: left}

Code HTML

<div id="wapper">
    <img src="logo.jpg" />
    <p>Ở đây tôi sử dụng một tấm hình có chiều rộng 200px. Thành phần mẹ (div) có chiều rộng 350px, như vậy còn trống 150px bên phải tấm hình. Khi cho hình <em>float: left</em>, nội dung văn bản sẽ được di chuyển lên để lấp đầy khoảng trống 150px trong thành phần mẹ wapper. Do đó tạo nên hiệu ứng bao quanh hình ảnh</p>
</div>

Ta có kết quả như sau:

Vậy: khi ta float:left cho một thành phần nào đó, thì thành phần đó sẽ di chuyển tận cùng về bên trái (hoặc phải nếu được float:right) so với thành phần mẹ. Các thành phần khác sẽ được di chuyển lên phía trên để lấp đầy khoảng trống còn lại.

Ứng dụng float trong việc thiết kế giao diện.

Ví dụ sau là cách sử dụng thẻ <div> kết hợp với float để thiết kế một giao diện có hai cột song song nhau:

<div id="wapper">
   <div id="left">
      <img src="logo.jpg" />
      <p>Cột thứ nhất có độ rộng 200px và được float: left</p>
   </div>
   <div id="right">
      <p>Ở ví dụ này tôi có một thành phần mẹ (div) có chiều rộng 400px. Trong đó tôi có một thành phần div có có độ rộng 200px và được float: left, một thành phần div có có độ rộng 200px và được float: right.</p>
   </div>
</div>

Và code CSS như sau:

#wapper{width: 400px}
#left{float: left; width: 200px}
#right{float: right; width: 200px}
Ứng dụng float tạo giao diện

Ứng dụng float trong thiết kế giao diện

Khi thành phần left (id=”left”) được gán float:left thì nó sẽ được dịch chuyển về tận cùng bên trái. Do nó có chiều rộng 200px nên còn trống 200px bên phải trong thẻ div mẹ. Do đó khi gán float:right cho thành phần right thì nó bị lệch về tận cùng phía bên phải, thành phần right này có độ rộng 200px (bằng độ rộng phần trống trong thành phần div mẹ) nên nó sẽ di chuyển nên và nằm song song với thành phần left tạo thành một giao diện có hai cột.
Ta nhận thấy rằng, khi mỗi thành phần float đều có kích thước cố định thì nó sẽ được xếp song song nhau để tạo ra các cột khi thành phần mẹ đủ rộng. Đây chính là nguyên lý để thiết  các giao diện nhiều cột sử  dụng float.

Các giá trị của Float

Float có 3 giá trị sau
+ Left: Cố định phần tử về bên trái.
+ Right: Cố định phần tử về bên phải.
+ None: Không thay đổi . (Khi không được khai báo thì giá trị float bằng none).

2. Clear

Clear luôn đi cùng với float. Có thể coi clear là ngược lại của float. Khi float thì các thành phần bên dưới di chuyển nên trên để lấp đầy khoảng trống. Nhưng không phải lúc nào chúng ta cũng muốn như vậy, do đó ta sử dụng clear để ngăn không cho các thành phần phía dưới tràn lên trên. Bạn cứ hình dung rằng khi một thành phần nào đó được gán thuộc tính clear thì nó sẽ giống như một bức tường ngăn các thành phần bên dưới di chuyển lên trên.
Ở ví dụ bên dưới tất cả các thành phần đều được float:left, ta có kết quả sau:

Xem trang: 1 2

Nếu bạn thấy bài viết hữu ích, hãy nhấn +1 và các liên kết chia sẻ để website ngày càng phát triển hơn. Xin cám ơn bạn!
Hoc thiet ke web Peter Tran là một Coder, công việc hiện tại của anh ấy là phát triển ứng dụng web với PHP, thời gian rảnh anh ấy thường viết Blog chia sẻ những kiến thức về lập trình và phát triển website. Hãy xem trang cá nhân của anh ấy trên FacebookTwitter

Bài liên quan

{ 28 comments… read them below or add one }

Ewebvn mod game avatar 30/08/2012 07:54:35 at 07:54

Mình cũng đang lơ tơ mơ về phần này nhưng khi đọc xong thì mình rõ nhiều hơn.
Cảm ơn Peter Tran !

Reply

Ewebvn dich vu bao ve 12/09/2012 04:20:37 at 16:20

nhìn cũng dễ hiểu, cám ơn bài viết

Reply

Ewebvn PHIVATTHE.COM 03/11/2012 01:41:45 at 13:41

Xin chào các fan của Ewebvn
Mình là Toàn.
Hiện tại mình đang có ý định thực hiện lập một website dịch vụ nhỏ cho tên miền PHIVATTHE.COM/ .VN/ .COM.VN nhưng kiến thức về mảng PHP, JAVA của mình kém quá thành ra một mình mình làm gặp rất nhièu khó khăn.Giờ mình đang muốn tìm một vài người để có thể cùng làm.với mục đích là vừa là rèn giũa kiến thức học được vừa là cọ sát với sản phẩm đầu tay xem có nên cơm cháo gì không, còn mọi chi phí phát sinh thì có thể cùng nhau đóng góp.
Vậy nên bạn nào có thời gian và cảm thấy có thể tham gia được thì liên lạc lại với mình nhé.mìnnh luôn luôn chào đón các bạn có ý định tham gia với mình.
Chi tiết hơn thì các bạn liên lạc với mình rồi cùng trao đổi nhé.
Thân Mai toàn.

eMail: Maitoannet@gmail.com
SĐT: 0169.69.08267

Reply

Ewebvn Phạm quang phú 04/11/2012 03:25:38 at 15:25

ai có thể cho em biết tại sao khi cho float là left thì mất hết background vậy

Reply

Ewebvn PT 05/11/2012 08:48:09 at 08:48

Hi em,
Trường hợp này xảy ra thường là do đặt clear chưa đúng, em coi lại xem đã clear đúng cho các thành phần chưa nhé

Reply

Ewebvn khuong 09/11/2012 09:32:53 at 09:32

cung dc đó nhưng phần clear nên đưa ra ứng dụng. ví dụ như nó dc dùng nhiều nhất ở phần footer

Reply

Leave a Comment

AUTO[F9] TELEX VNI VIQR

Đặt code trong cặp thẻ [code] code của bạn [/code]

Những thắc mắc về lỗi code, ..., vui lòng gửi kèm demo

{ 3 trackbacks }