31

Float và Clear trong CSS

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

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 Trần Ngọc Quốc 11/04/2011 08:28:45 at 08:28

Cám ơn anh.Phải nói bài viết của anh rất thực tế.Nó giúp em biết được khi nào thì cần sử dụng cái gì và sử dụng như thế nào.Rất mong anh sớm viết nhiều bài hay nữa.

Reply

Ewebvn Peter Tran 11/04/2011 08:36:42 at 08:36

Cám ơn bạn, mình rất vui vì có những comment như thế này, nó sẽ là động lực giúp mình để hoàn thành những bài viết tốt hơn.
Thanks again!

Reply

Ewebvn Kiếp phong trần 06/05/2011 11:51:09 at 11:51

Bài hướng dẫn này rất hay đó! cảm ơn bạn nhiều

Reply

Ewebvn Bi Phuc 30/06/2011 05:45:46 at 17:45

Bài viết rất hay

Reply

Ewebvn Nguyễn Quang Thuận 15/09/2011 03:34:31 at 15:34

Bài viết rất tốt ! Thanks.

Reply

Ewebvn btk 18/10/2011 10:12:35 at 10:12

Để mình thử làm xem thế nào??thank

Reply

Ewebvn Phương Nam 18/10/2011 08:05:46 at 20:05

Cám ơn a rất nhiều vì sự nhiệt tình & những kiến thức bổ ích mà a share cho mọi người!

Reply

Ewebvn quang 01/12/2011 03:19:46 at 15:19

Rất cám ơn những bài viết rất rất bổ ích của a
Chắc thằng e đóng quân ở ewebvn luôn quá:D

Reply

Ewebvn Truong Thanh 06/12/2011 09:59:02 at 21:59

cảm ơn bạn nhé

Reply

Ewebvn LHH 16/12/2011 04:50:35 at 16:50

Thật dễ hiểu và trình bày rất chi tiết cho các bạn mới học html/css/

Reply

Ewebvn Rain 09/01/2012 02:07:42 at 02:07

cám ơn bạn nhiều nhé ^^~, bài chỉ dẫn rất dễ hiểu :D

Reply

Ewebvn anh vũ 02/02/2012 11:45:56 at 23:45

Hy vọng được đọc thêm nhiều bài hướng dẫn hay như thế này nữa của a. Thank

Reply

Ewebvn ngọc hải 13/04/2012 11:56:56 at 11:56

sao e làm phần float nó không ra giống vậy nhỉ ? Tất cả các chữ đều nằm phía dưới hình :(

Reply

Ewebvn Peter Tran 13/04/2012 09:51:56 at 21:51

Em kiểm tra lại độ lớn của box nhé, text nằm dưới là do box chứa các thành phần không đủ độ lớn để các thành phần bên dưới di chuyển lên, Em cố gắng đọc kỹ và làm theo ví dụ thì em sẽ hiểu được.
Thân!

Reply

Ewebvn Nguyên Hạ 08/06/2012 06:22:50 at 18:22

a ơi ! chỉ e làm cái bõ leave a comment như của a với

Reply

Ewebvn Peter Tran 08/06/2012 06:54:35 at 18:54

Để làm được Comment em cần phải biết các ngôn ngữ lập trình web động như PHP, ASP.Net, … Sắp tới EW sẽ tập trung để về PHP cho anh em. Em có thể tìm hiểu Wordpress. Ew đang chạy mã nguồn này.
Thân!

Reply

Ewebvn phuc 28/06/2012 11:39:15 at 23:39

cảm ơn bạn nhiều. chúc cho trang web của bạn ngày càng phát triển tốt.

Reply

Ewebvn Abu 03/07/2012 06:05:25 at 18:05

Thanks anh. Hy vọng anh sẽ có nhiều bài chỉ dẩn dễ hiểu về html/css nữa :”)

Reply

Ewebvn Huy Trung 12/07/2012 05:14:57 at 17:14

Em thấy ở trường hợp này nếu ko thêm 1 thẻ div trống mà thêm thuộc tính { clear: both} cho thẻ DIV tràn lên nó cũng sẽ ko tràn lên nữa a ah

Reply

Ewebvn Hoc Web 15/07/2012 04:27:39 at 16:27

Bài viết hay, cảm ơn tác giả, chờ nhiều bài tiếp theo!

Reply

Ewebvn dungmanher 20/07/2012 12:04:09 at 12:04

Tuyệt vời, đây là nơi mà các web beginer nên vào. Các bài viết của bạn ngắn gọn xúc tích và rất dễ hiểu.

Reply

Ewebvn thanh 12/08/2012 09:25:14 at 21:25

cam on ban rat nhieu

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 }