Cách thiết kế layout website bằng HTML và CSS

Thursday, September 25, 2014
Dùng HTML và CSS để tạo ra giao diện web bằng các thẻ div và css để định nghĩa nhưng sẽ rất khó nếu bạn không hiểu . Hãy cùng tìm hiểu cách thiết kế website bằng HTML và CSS nhé
Cách thiết kế layout website bằng HTML và CSS

Xây dựng CODE HTML cho website
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html XMLns="http://www.w3.org/1999/xhtml" XML:lang="en" lang="en">
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <title>Thiết kế giao diện với Div</title>
    <link href="style.css" media="screen" rel="stylesheet" />
</head>
<body>
    <div id="mainWap">
      <div id="header">
        <h1>Header</h1>
     </div>
     <div id="left">
        Nội dung cột trái...
     </div>
     <div id="right">
        Nội dung cột phải...
     </div>
     <div class="clr"></div>
     <div id="footer">
       Nội dung footer...
     </div>
   </div>
</body>
</html>
Hãy lưu nó lại thành file index.html
Trước tiên chúng ta sẽ tạo ra một thẻ div lớn bao quanh toàn bộ trang web với id=”mainWap”. Bên nên thực hiện việc này trong các thiết kế tiếp theo của mình. Ví dụ bây giờ bạn muốn toàn bộ trang web của bạn được canh bên phải màn hình, thay vì phải đi căn chỉnh từng thành phần sang phải  thì bạn chỉ cần canh thẻ div này sang phải, toàn bộ các thành phần khác trong nó sẽ được canh phải theo thẻ div lớn. (Bạn cứ tưởng tượng rằng chúng ta có một cái hộp lớn và bỏ tất cả các hộp nhỏ vào bên trong và khi muốn thì chỉ cần di chuyển cái hộp lớn đi thôi). Đây cũng là cách để bạn quản lý độ lớn của Box tốt hơn. 

Tiếp theo ta sẽ tạo các thành phần header, left, right, footer bên trong thẻ div lớn này với các id tương ứng. 

Ta thêm vào thành phần <div class=”clr”></div> trước footer, ta sẽ xem phần này sau khi viết CSS. 

Tạo một file style.css và lưu vào cùng thư mục chứa file div.html. chúng ta sẽ viết mã CSS trong file này. 
Xây dựng CODE CSS cho website
Trong bài viết này có sử dụng đến Margin và Padding, tuy nhiên mỗi trình duyệt lại hiểu các giá trị này theo một kiểu, cho nên để tránh phiền toái việc đầu tiên chúng ta nên làm là reset 2 giá trị này về 0 với lệnh sau: 
*{ margin: 0; padding: 0 }
Tiếp theo chúng ta sẽ quy định cho độ rộng của toàn bộ trang là 950px và canh giữa màn hình bằng các viết mã cho thẻ div lớn bao quanh mà chúng ta đã tạo ra ban đầu. 

#mainWap{
    width: 950px;
    margin: 0 auto;
}
Khi ta sử dụng margin: 0 auto; 
thì thẻ div lớn sẽ được canh giữa màn hình. Bạn có thể tìm hiểu thêm vấn đề này trong bài Margin và Padding trong CSS. 

Theo hình trên ta thấy, thành phần header cách thành phần left và right 1 khoảng 10px, đó chính là margin-bottom của header đối left và right. Và ta sẽ viết mã cho header như sau: 
#header{ 
    background: green; 
    margin-bottom: 10px; 
    padding: 10px; 
}
Tiếp theo để left và right tạo thành 2 cột nằm song song ta cần sử dụng đển thuộc tính Float để cố định 2 thành phần này, đồng thời gán cho chúng một kích thước (width) nào đó. Đầu tiên ta có cố định thành phần left về bên trái và gán thuộc tính width = 200px. Mã CSS như sau: 
#left{
     float: left;
     width:  200px;
     background(): #f98000;
     padding: 10px;
     min-height: 450px;
}
Lúc này thành phần left sẽ được di chuyển về tận cùng bên trái của thẻ div mẹ (id=”mainWap”) và có độ lớn là: 

200px + 10px left padding + 10px right padding = 220px; (1) 

Tiếp theo ta viết mã CSS cho thành phần right như sau: 
#right{
    float: right;
    width: 700px;
    padding: 10px;
    background(): #e4e4e4;
    min-height: 450px;
}
Lúc này thành phần right  sẽ được di chuyển về tận cùng bên phải của thẻ div mẹ (id=”mainWap”) và có độ lớn là: 

700px + 10px left padding + 10px right padding = 720px; (2) 

Như ta đã biết khi thuộc tính float được khai báo cho một thành phần nào đó thì thành phần đó sẽ bị dịch chuyển tận cùng về phía bên trái nếu được float:left và bên phải nếu được float:right so với thành phần mẹ và tạo khoảng trống cho các thành phần khác di chuyển lên lấp đầy khoảng trống nếu còn. 

Kết hợp (1) và (2) ta thấy rằng: Thành phần left được float left và có độ rộng 220px, như vậy nó được cố định về bên trái và tạo ra khoảng trống còn lại trong thẻ div mẹ là: 

950 (độ rộng thẻ div bao quanh) – 220 (left) = 730px; 

Như vậy đủ độ lớn để thành phần right (720px) di chuyển lên nằm song song với thành phần left và tạo thành 2 cột. Đương nhiên nó được cố định về bên phải vì có float:right. 

Độ lớn của left và right = 220 + 720 = 940px, như vậy ta thấy còn dư 10px trong thẻ div bao quanh. Đó chính là khoảng cách 10px giữa left và right (như trên hình). 

Khi sử dụng float, các thành phần bên dưới luôn luốn có xu hướng di chuyển lên trên. Và ở đây thì thành phần footer cũng vậy, nó tràn lên phía trên, và đó không phải là điều mà chúng ta mong muốn. 

Do đó đây là lúc chúng ta cần sử dụng đến thuộc tính clear cho thành phần <div class=”clr”> nằm trước footer để ngăn cho footer không tràn lên trên. 

.clr{clear: both;}
Và cuối cùng là CSS cho thành phần footer có khoảng cách 10px so với left và right, đó chính là margin-top của footer: 
#footer{
    background(): green;
    margin-top: 10px;
    padding: 10px;
}
Ở trên các bạn thấy mình có sử dụng thuộc tính min-height trong 2 thành phần left và right. Mục đích của việc này là để quy định chiều cao tối thiểu của một thành phần nào đó khi độ lớn về chiều cao của các thành phần bên trong nó chưa thực sự đủ lớn như mong muốn của ta. Nói đơn giản hơn, bây giờ trong các thành phần left và right chưa có nội dung gì cả, nhưng mình vẫn muốn nó có độ cao là 450px, lúc đó mình sẽ thêm thuộc tính min-height:450px. Khi độ cao của các thành phần bên trong nó vượt quá giá trị min-height, thì độ cao của một thành phần nào đó sẽ bằng tổng độ cao của các thành phần bên trong nó. 

Chú ý: thuộc tính này không hoạt động trong trình duyệt Internet Explorer. 

No comments:

Post a Comment