Layout trong CSS



Chắc bạn cũng khá quen thuộc với các bảng trong HTML và quen thuộc với việc tạo các Page Layout bởi sử dụng các bảng này. Nhưng bạn có biết rằng CSS cung cấp cho bạn nhiều sự điều khiển hơn tới việc xác định vị trí các phần tử trong một tài liệu. CSS là xu hướng của tương lai, và tại sao bạn không học và sử dụng CSS để có nhiều sự lựa chọn hơn trong việc thiết kế Layout cho Webpage thay vì chỉ sử dụng bảng một cách đơn điệu?

Dưới đây là một số điểm mạnh và điểm yếu của hai công nghệ trên:

  • Hầu hết trình duyệt đều hỗ trợ bảng, trong khi việc hỗ trợ CSS diễn ra khá chậm chạp.

  • Các bảng thì dễ học và sử dụng hơn là các CSS rule.

  • CSS cung cấp sự chính xác hơn khi là sử dụng các bảng trong HTML.

  • Việc theo dõi và thiết kế các bảng lồng vào nhau thực sự gây cho bạn khá nhiều phiền phức. CSS rule giúp bạn tổ chức tốt hơn, đọc, và tạo các thay đổi một cách dễ dàng hơn.

Dù thế nào đi nữa, nếu bạn quen và thích sử dụng công nghệ nào mà làm cho Webpage của bạn làm việc và được hiển thị tốt nhất thì hãy sử dụng nó.

CSS cung cấp thuộc tính table-layout giúp cho các bảng của bạn được tải nhanh hơn. Ví dụ:

<table style="table-layout:fixed;width:600px;">
   <tr height="30">
      <td width="150">Cell A</td>
      <td width="200">Cell B</td>
      <td width="250">Cell C</td>
   </tr>
</table>

Bạn sẽ nhận thấy lợi thế một cách rõ ràng với các bảng lớn. Với HTML truyền thống, trình duyệt phải tính toán mỗi ô trước khi hiển thị bảng. Trong khi đó, khi bạn thiết lập thuật toán table-layout thành fixed, thì trình duyệt sẽ chỉ cần nhìn vào hàng đầu tiên trước khi hiển thị toàn bộ bảng. Nghĩa là, bảng của bạn sẽ cần có các độ rộng cột và chiều cao hàng cố định.

Ví dụ mẫu về Column Layout trong CSS

Dưới đây là các bước đơn giản để tạo một Column Layout đơn giản trong CSS.

Thiết lập lề và padding của toàn bộ tài liệu như sau:

<style style="text/css">
   <!--
   body {
      margin:9px 9px 0 9px;
      padding:0;
      background:#FFF;
   }
   -->
</style>

Bây giờ, chúng ta sẽ thiết lập màu cho một cột (màu vàng) và sau đó gắn qui tắc này cho thẻ <div>:

<style style="text/css">
   <!--
   #level0 {
      background:#FC0;
   }
   -->
</style>

Lúc này chúng ta sẽ có một tài liệu với thân màu vàng, tiếp đó chúng ta xác định một khối khác bên trong level0.

<style style="text/css">
   <!--
   #level1 {
      margin-left:143px;
      padding-left:9px;
      background:#FFF;
   }
   -->
</style>

Lồng một hoặc nhiều khối vào trong level1, và tiếp đó chúng ta sẽ chỉ thay đổi màu nền cho chúng:

<style style="text/css">
   <!--
   #level2 {
      background:#FFF3AC;
   }
   -->
</style>

Cuối cùng, sử dụng cùng công nghệ trên, lồng một khối tại level3 vào bên trong level2 để tạo Layout cho cột phải:

<style style="text/css">
   <!--
   #level3 {
      margin-right:143px;
      padding-right:9px;
      background:#FFF;
   }
   #main {
      background:#CCC;
   }
   -->
</style>

Và cuối cùng source code sẽ có dạng sau:

<style style="text/css">
   body {
      margin:9px 9px 0 9px;
      padding:0;
      background:#FFF;
   }
	
   #level0 {background:#FC0;}
	
   #level1 {
      margin-left:143px;
      padding-left:9px;
      background:#FFF;
   }
	
   #level2 {background:#FFF3AC;}
	
   #level3 {
      margin-right:143px;
      padding-right:9px;
      background:#FFF;
   }
	
   #main {background:#CCC;}
</style>
<body>
   <div id="level0">
      <div id="level1">
         <div id="level2">
            <div id="level3">
               <div id="main">
                  Noi dung can trinh bay tai day ...
               </div>
            </div>
         </div>
      </div>
   </div>
</body>

Tương tự, bạn có thể thêm một thanh điều hướng hoặc một thanh quảng cáo chẳng hạn vào phần trên cùng của trang.

Kết quả là:

Loạt bài hướng dẫn Học CSS cơ bản và nâng cao của chúng tôi dựa trên nguồn tài liệu của: TutorialspointW3Schools

Follow fanpage của team https://www.facebook.com/vietjackteam/ hoặc facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.