Thuộc tính box-sizing trong CSS

Một thuộc tính có lẽ ít được mọi người quan tâm trong CSS đó là Box-sizing. Trước đây khi tìm hiểu về CSS thì nó không được chú ý lắm. Nhưng mãi về sau khi làm nhiều dự án mình đã gặp rất nhiều thuộc tính mà trước này chưa hề gặp. Tuy đơn giản nhưng nó lại giúp giải quyết nhiều vấn đề hay ho.

Thuộc tính box-sizing là gì?

Box-sizing CSS được sử dụng để cho trình duyệt tính toán kích thước (chiều rộng và chiều cao) của một Box Model.

Ở trên trình duyệt Google Chrome bạn ấn F12 sau đó nhấp chuột chọn mũi tên rồi ấn vào bất kỳ phần tử nào trên màn hình. Và sẽ có một Box Model xuất hiện bao gồm các thuộc tính như margin, border, padding và phía trong cùng là nơi chứa content.

Khu vực content sẽ chứa văn bản, hình ảnh, video… Nó được xác định theo width và height.

box-sizing

Công thức tính chiều rộng và chiều cao thực của một phần tử như sau:

  • Chiều rộng thực của phần tử = width + padding + border
  • Chiều cao thực của phần tử = height + padding + border

Cách sử dụng box-sizing

Hãy làm một ví dụ sau:

<html>
   <head>
      <style>
         .box {
            width: 300px;
            height: 100px;
            padding: 100px;
            border: 1px solid red;   
         }
      </style>
   </head>

   <body>
      <div class = "box">Đây là một hộp có chiều rộng là 300px và chiều cao là 100px</div>
   </body>
</html>

box-sizing1

Tiếp theo đó mình sẽ thêm cho .box thuộc tính padding là 100px;

Áp dụng công thức ở trên sẽ có:

  • chiều rộng = 300px + 100px = 400px;
  • chiều cao = 100px + 100px = 200px;

Như vậy là khi thêm padding vào chiều rộng và chiều cao đã bị tăng lên.

Nhưng mình sẽ thêm

box-sizing: border-box;

Vào kết quả đã thay đổi. Đó là chiều rộng lúc này vẫn giữa nguyên là 300px.

Và khi xem trên Google Chrome thì kích thước của .box đã còn 198px

box-sizing2

Ví dụ 2:

<html>
   <head>
      <style>
 .box {
width: 300px;
height: 100px;
border: 1px solid green; 
float: left;

}

.box1 {
width: 300px;
height: 100px;
border: 1px solid red; 
padding: 50px;
      </style>
   </head>

   <body>
   <div class="box">
      <div class = "box1">Đây là một hộp có chiều rộng là 300px và chiều cao là 100px</div>
      </div>
   </body>
</html>

Sau khi mình thêm padding: 50px cho box1 là con của box thì lúc này nó đã vượt ra ngoài phần tử cha.

Vậy làm thế nào để thằng con box1 không vượt ra ngoài phạm vi của thằng cha nó.

Đó là bạn lại tiếp tục dùng

box-sizing: border-box;

Cho thằng .box1

box-sizing3

Và lúc này thằng con đã nằm trọn trong vòng tay của cha nó :).

Kết luận: Với thuộc tính box-sizing khi dùng để dựng bố cục sẽ không còn phải đau đầu về tình trạng vỡ khung do dùng margin, padding nữa. Thay vào đó là cảm giác sung sướng và làm web trở nên nhẹ nhàng hơn.

Related Posts

Hover-CSS-1

Hiệu ứng rê chuột trong CSS

CSS là ngôn ngữ trang trí với nhiều hiệu ứng hay. Bạn sẽ thường gặp nhất là khi di chuyển chuột vào một liên kết (Link) hay…

Mẫu Form đăng nhập HTML và CSS đẹp mắt

Trong một số bài viết trên blog này mình đã chia sẻ về cách tạo một Form đăng nhập đơn giản. Nhưng để có một Form đẹp…

form-lien-he-4

Hướng dẫn tạo form liên hệ bằng HTML, CSS

Form liên hệ là một chức năng không thể thiếu cho blog, website. Thông qua Form độc giả, khách hàng có thể yêu cầu admin trợ giúp…

css-code-1

8 Cách viết CSS chuẩn, dễ đọc và tối ưu

Nói tới xây dựng giao diện phía Front-end không thể thiếu CSS. Ngôn ngữ được sử dụng phổ biến để sắp xếp bố cục các phần tử…

Thuộc tính text-shadow trong CSS

Trong những lúc rảnh rỗi mình thường hay nghịch ngợm một vài thứ hay ho tìm thấy trên internet. Đối với CSS thì text-shadow cũng là thuộc…

Thuộc tính Overflow trong CSS

Khi thiết kế web với HTML và CSS đôi khi chúng ta sẽ gặp phải tình trạng văn bản (text) bị tràn ra khỏi phần tử HTML…