Tìm hiểu bản chất Box trong CSS Box Model

Ngày đăng: 05/05/2021   -    Cập nhật: 19/05/2021

Sẽ có nhiều thứ thú vị nếu bạn bắt đầu tinh chỉnh các thuộc tính CSS của phần tử HTML mà chưa nắm rõ về CSS Box Model.

 

Bản chất, website tính toán kích thước của phần tử HTML sẽ chiếm bao gồm:

 

  • Phần nội dung (content)
  • Phần đệm (padding)
  • Phần đường viền (border)
  • Khoảng cách với các phần tử khác (margin)



Tập hợp tất cả các thứ này gọi là Box Model.


Và khi thiết lập widthheight thì đó chỉ là thiết lập cho kích thước nội dung. Thế nên, nếu không có thiết lập cụ thể thì tính toán kích thước của bạn đôi khi sẽ bị sai.


Có thể bạn đã thấy Box Model ở đâu đó, ví dụ như trong bảng điều khiển dành cho nhà phát triển của Chrome. Nó trông giống như thế này:


tim-hieu-ban-chat-css-box-model-1

Biểu diễn cơ bản của CSS Box Model. Trông đủ đơn giản!


 

Box trong CSS Box Model là vùng nội dung.



Theo mặc định padding, border và margin được đặt thành 0px. Điều này làm cho phần tử HTML có mặc định CSS box-sizing của content-box, đường viền 1px và kích thước 300 x 100 trông giống như sau:

tim-hieu-ban-chat-css-box-model-2


Một phần tử HTML với kiểu CSS box model mặc định (box-sizing) được đặt thành giá trị mặc định của content-box.



Mọi thứ bắt đầu trở nên thú vị khi padding được thêm vào - trong trường hợp này là 16px.
 

tim-hieu-ban-chat-css-box-model-3



Phần padding được thêm vào phần tử HTML thông thường với kiểu mặc định sẽ đẩy kích thước của nó ra ở mức độ dày padding đã được đặt.



Độ dày padding bây giờ bao quanh phần tử.


Lưu ý rằng kích thước vật lý của phần tử bây giờ là 332 x 132 px và không phải là kích thước ban đầu là 300 x 100 vì phần đệm (padding) 32 (16 + 16) được thêm vào mỗi bên.


 

Điều này không phải lúc nào cũng là vấn đề - thực tế là padding ngoài là những gì bạn sẽ thấy được triển khai trên hầu hết các trang web - bởi vì giả sử các giá trị mặc định thường là một điều tốt.

 

Tuy nhiên, đôi khi điều này gây khó khăn cho việc dự đoán các kích thước cuối cùng của phần tử. Sẽ không tốt nếu chúng ta có thể chứa padding trong các thứ nguyên được xác định của phần tử thay thế? Đó là một khả năng khác!

 

Nó đạt được bằng cách ghi đè box-sizing với giá trị của padding-box.

tim-hieu-ban-chat-css-box-model-4



Giá trị mặc định định box-sizing ghi đè với padding-box sẽ “đảo ngược” padding, di chuyển nó vào hộp bên trong của phần tử.



Phần padding được "đảo ngược" và bây giờ bạn đang suy nghĩ bên trong box! Bằng cách này kích thước ban đầu 300 x 100 của box được bảo tồn.

 

Bây giờ padding đó nằm ở bên trong vùng hộp của chúng ta, nó có hiệu quả chuyển nội dung gần cách viền 16px mỗi bên.

 

Đó là một mô hình đẹp để tạo các yếu tố UI hoàn hảo!

 

Nhưng hãy nhớ là có margin. Chúng ta có thể đẩy đường viền bên trong của một phần tử theo cùng một cách bằng cách sử dụng giá trị border-box.

 

Nhưng trước tiên, hãy xem phần tử có paddingborder mặc định:


tim-hieu-ban-chat-css-box-model-5


Bằng cách sử dụng box-sizing: content-box, chúng ta có thể di chuyển thành công đường viền của phần tử bên trong.



Sử dụng border-box có thể đẩy đường viền và padding vào bên trong hộp:
 

tim-hieu-ban-chat-css-box-model-6

CSS: box-sizing: border-box đang hoạt động



Bây giờ cả hai paddingborder là ở bên trong.


Nhưng còn về margin? Sẽ ok nếu chúng ta có thể sử dụng "margin-box" và tất cả các thông số 3 bên trong khu vực nội dung.


 

Nhưng theo định nghĩa, margin là một khu vực nằm ngoài nội dung.

 

tim-hieu-ban-chat-css-box-model-7

 

Không có margin-box. Sự thực là như vậy.


> Thực tế: Trong khi CSS, để đảm bảo các phần tử được tính toán đúng, dễ dự đoán, người ta thường sử dụng box-sizing: border-box; cho mọi phần tử.


 

Qua một số minh họa, có lẽ bạn đã có đôi chút hiểu về bản chất của CSS Box Model. Hãy để lại comment bên dưới nếu có bất kỳ thắc mắc nào về CSS box model mình sẽ giải đáp cho bạn ngay khi có thể.


> Nếu bạn yêu thích CSS và đi chuyên sâu thì thì HỌC LẬP TRÌNH FRONT END với React.js ngay. Học với chuyên gia doanh nghiệp.


 

---

HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Học Lập trình chất lượng cao (Since 2002). Học thực tế + Tuyển dụng ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0383.180086
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
 
#niit #niithanoi #icthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #java #php #python
Bình luận Facebook
Khóa học liên quan đến bài viết

KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS

56 giờ
Học Lập trình Front end hiện đại với ReactJS. Học làm chủ HTML, CSS, JS và thư viện JavaScript phổ biến nhất hiện nay. Sẵn sàng đi thực tập / đi làm ngay sau khóa học.

Khóa học PHP Full stack [2023] cho người mới bắt đầu

96 giờ
Khóa học Lập trình PHP Full stack, phiên bản cập nhật lần thứ 8. Dạy Lập trình PHP bài bản từ Front end đến Back end + Laravel. Hướng dẫn làm 2 Dự Án Web lớn

KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG

50 giờ
Khóa học giúp học viên sử dụng thành thạo ngôn ngữ Lập trình Python (3x). Hiểu và phát triển được Ứng dụng Web với Django Framework. Học thực hành với Giảng viên cao cấp.

Khóa học Java Full stack (IJFD)

104 giờ
Học lập trình Java Fullstack với khóa học được xây dựng theo lộ trình bài bản, từ JAVA CƠ BẢN đến JAVA WEB và nâng cao về JAVA FRAMEWORK như: Spring Boot, Hibernate
Mục lục
Đăng ký tư vấn
Nhân viên gọi điện tư vấn miễn phí sau khi đăng ký
Được cập nhật các ưu đãi sớm nhất
Hotline: 0383180086
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Hãy đăng ký để nhận những thông tin mới nhất về học bổng mới nhất tại NIIT - ICT Hà Nội
top
Đóng lại Đăng ký học tại NIIT - ICT Hà Nội
6260+ học viên đã theo học tại NIIT - ICT Hà Nội và có việc làm tốt trong ngành lập trình. Nắm lấy cơ hội ngay hôm nay!
Chọn khóa học
  • KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS
  • KHÓA HỌC LẬP TRÌNH PHP WEB
  • Khóa học PHP Full stack [2023] cho người mới bắt đầu
  • Khóa học BIG DATA với Hadoop và Spark
  • Khóa học Lập trình Android tại Hà Nội
  • [Tuyển sinh 2023] Lập trình viên Quốc tế DigiNxt
  • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại Hà Nội
  • LẬP TRÌNH GAME
    • Khóa học Lập trình Game Unity
  • LẬP TRÌNH WEB FRONT END
    • KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG
    • KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)
  • LẬP TRÌNH WEB BACK END
    • LẬP TRÌNH JAVA WEB VỚI FRAME WORK
    • Lập trình Web với Django
    • Lập trình PHP với Laravel Framework
  • CHƯƠNG TRÌNH ĐÀO TẠO ỨNG DỤNG CÔNG NGHỆ
    • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại TP HCM
  • LẬP TRÌNH WEB FULL STACK
    • Khóa học Java Full stack (IJFD)
  • LẬP TRÌNH MOBILE
    • FRONT-END VỚI REACTJS VÀ REACT NATIVE
    • Lập trình Android Nâng cao
  • ĐÀO TẠO CHO DOANH NGHIỆP
    • KHÓA HỌC BUSINESS ANALYSIC TỪ CƠ BẢN ĐẾN NÂNG CAO 2023
    • Khóa học Magento: Làm chủ CMS TMĐT lớn nhất
    • Khóa học IOT: Xây dựng Sản phẩm IOT với Raspberry Pi
    • Khóa học Automation Testing Chuyên nghiệp
  • KHÓA HỌC DỰ ÁN
    • Học sử dụng bộ Office: Word, Excel, Power Point, Mail chuyên nghiệp
  • KHÓA HỌC KHÁC
    • VBA Excel Toàn Tập (Cơ Bản - Nâng Cao)
    • VBA Excel Nâng cao
    • Khóa học JMeter: Performance Testing
    • Khóa học Tester đạt chuẩn Quốc tế ISTQB Foundation Level
    • Khoá Học Tester đạt chuẩn quốc tế ISTQB Advanced Level
Bạn chưa chọn khóa học cần đăng ký
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Đăng ký học thành công!
Cảm ơn bạn đã đăng ký học tại NIIT - ICT HÀ NỘI!