Làm cách nào để vẽ một hộp trong HTML?
Mọi thứ trong CSS đều có hộp xung quanh và việc hiểu các hộp này là chìa khóa để có thể tạo các bố cục phức tạp hơn bằng CSS hoặc để căn chỉnh các mục với các mục khác. Trong bài học này, chúng ta sẽ xem CSS Box Model. Bạn sẽ hiểu về cách thức hoạt động của nó và các thuật ngữ liên quan đến nó Show
Khối và hộp nội tuyếnTrong CSS, chúng ta thường có hai loại hộp - hộp khối và hộp nội tuyến. Loại đề cập đến cách hộp hoạt động theo luồng trang và liên quan đến các hộp khác trên trang. Hộp có loại trưng bày trong và loại trưng bày ngoài Nói chung, bạn có thể đặt các giá trị khác nhau cho kiểu hiển thị bằng thuộc tính 9, thuộc tính này có thể có nhiều giá trị khác nhauLoại màn hình bên ngoàiNếu một hộp có loại hiển thị bên ngoài là 0, thì
Một số phần tử HTML, chẳng hạn như 3 và 4, mặc định sử dụng 0 làm loại hiển thị bên ngoài của chúngNếu một hộp có kiểu hiển thị bên ngoài là 1, thì
Một số phần tử HTML, chẳng hạn như 4, 5, 6 và 7 sử dụng 1 làm kiểu hiển thị bên ngoài của chúng theo mặc địnhLoại hiển thị bên trongHộp cũng có kiểu hiển thị bên trong, cho biết cách bố trí các phần tử bên trong hộp đó Bố cục khối và nội tuyến là cách mọi thứ hoạt động mặc định trên web. Theo mặc định và không có bất kỳ hướng dẫn nào khác, các thành phần bên trong hộp cũng được bố trí theo quy trình bình thường và hoạt động như khối hoặc hộp nội tuyến Ví dụ, bạn có thể thay đổi kiểu hiển thị bên trong bằng cách cài đặt 9. Phần tử sẽ vẫn sử dụng loại hiển thị bên ngoài 0 nhưng điều này thay đổi loại hiển thị bên trong thành 1. Bất kỳ phần tử con trực tiếp nào của hộp này sẽ trở thành các mục linh hoạt và hoạt động theo đặc điểm kỹ thuật của FlexboxKhi bạn chuyển sang tìm hiểu chi tiết hơn về Bố cục CSS, bạn sẽ gặp phải ________ 71 và nhiều giá trị bên trong khác mà các hộp của bạn có thể có, ví dụ như ________ 73 Ghi chú. Để đọc thêm về các giá trị của hiển thị và cách các hộp hoạt động trong bố cục khối và nội tuyến, hãy xem hướng dẫn MDN Bố cục khối và nội tuyến Ví dụ về các loại hiển thị khác nhauVí dụ bên dưới có ba phần tử HTML khác nhau, tất cả đều có kiểu hiển thị bên ngoài là 0
Trong ví dụ tiếp theo, chúng ta có thể thấy các phần tử 1 hoạt động như thế nào
Để chuyển đổi giữa các chế độ hiển thị, bạn có thể thay đổi 63 thành 8 hoặc 62 thành 5Điều quan trọng cần nhớ bây giờ là. Việc thay đổi giá trị của thuộc tính 9 có thể thay đổi loại hiển thị bên ngoài của hộp là khối hay nội tuyến. Điều này thay đổi cách nó hiển thị cùng với các thành phần khác trong bố cụcMô hình hộp CSS là gì?Toàn bộ mô hình hộp CSS áp dụng cho hộp khối và xác định cách các phần khác nhau của hộp — lề, đường viền, phần đệm và nội dung — phối hợp với nhau để tạo hộp mà bạn có thể nhìn thấy trên trang. Hộp nội tuyến chỉ sử dụng một số hành vi được xác định trong mô hình hộp Để tăng độ phức tạp, có một mô hình hộp tiêu chuẩn và thay thế. Theo mặc định, các trình duyệt sử dụng mô hình hộp tiêu chuẩn Các bộ phận của hộpTạo một hộp khối trong CSS, chúng ta có
Sơ đồ dưới đây cho thấy các lớp này Mô hình hộp CSS tiêu chuẩnTrong mô hình hộp tiêu chuẩn, nếu bạn cung cấp cho hộp một thuộc tính 69 và 90 (hoặc 1 và 2), điều này xác định kích thước nội tuyến và kích thước khối (chiều rộng và chiều cao theo ngôn ngữ ngang) của hộp nội dung. Bất kỳ phần đệm và đường viền nào sau đó sẽ được thêm vào các kích thước đó để có được tổng kích thước mà hộp chiếm (xem hình ảnh bên dưới)Nếu chúng tôi cho rằng một hộp có CSS sau 5Không gian thực tế mà hộp chiếm sẽ rộng 410px (350 + 25 + 25 + 5 + 5) và cao 210px (150 + 25 + 25 + 5 + 5) Ghi chú. Lề không được tính vào kích thước thực của hộp — chắc chắn, nó ảnh hưởng đến tổng dung lượng mà hộp sẽ chiếm trên trang, nhưng chỉ ảnh hưởng đến không gian bên ngoài hộp. Diện tích của hộp dừng lại ở đường viền — nó không mở rộng ra ngoài lề Mô hình hộp CSS thay thếTrong mô hình hộp thay thế, chiều rộng bất kỳ là chiều rộng của hộp hiển thị trên trang. Chiều rộng của vùng nội dung là chiều rộng đó trừ đi chiều rộng của phần đệm và đường viền (xem hình ảnh bên dưới). Không cần thêm đường viền và phần đệm để có kích thước thực của hộp Để bật mô hình thay thế cho một phần tử, hãy đặt 00 cho phần tử đó
Nếu chúng tôi giả sử hộp có cùng CSS như trên
Bây giờ, không gian thực tế chiếm bởi hộp sẽ là 350px theo hướng nội tuyến và 150px theo hướng khối Để sử dụng mô hình hộp thay thế cho tất cả các phần tử của bạn (là lựa chọn phổ biến của các nhà phát triển), hãy đặt thuộc tính 01 trên phần tử 02 và đặt tất cả các phần tử khác kế thừa giá trị đó 6Để hiểu ý tưởng cơ bản, bạn có thể đọc bài viết Thủ thuật CSS về kích thước hộp Ghi chú. Một chút lịch sử thú vị — Internet Explorer được sử dụng để mặc định là mô hình hộp thay thế, không có cơ chế nào để chuyển đổi Chơi với các mô hình hộpTrong ví dụ dưới đây, bạn có thể thấy hai hộp. Cả hai đều có một lớp 03, cung cấp cho chúng cùng một lớp 1, 2, 95, 94 và 93. Sự khác biệt duy nhất là hộp thứ hai đã được thiết lập để sử dụng mô hình hộp thay thếBạn có thể thay đổi kích thước của hộp thứ hai (bằng cách thêm CSS vào lớp 09) để làm cho nó khớp với hộp thứ nhất về chiều rộng và chiều cao không?Ghi chú. Bạn có thể tìm thấy một giải pháp cho nhiệm vụ này tại đây Sử dụng DevTools của trình duyệt để xem mô hình hộpCác công cụ dành cho nhà phát triển trình duyệt của bạn có thể giúp việc hiểu mô hình hộp dễ dàng hơn nhiều. Nếu bạn kiểm tra một phần tử trong DevTools của Firefox, bạn có thể thấy kích thước của phần tử cộng với lề, phần đệm và đường viền của nó. Kiểm tra một yếu tố theo cách này là một cách tuyệt vời để tìm hiểu xem hộp của bạn có thực sự có kích thước như bạn nghĩ hay không Lề, đệm và đường viềnBạn đã thấy các thuộc tính 95, 93 và 94 hoạt động trong ví dụ trên. Các thuộc tính được sử dụng trong ví dụ đó là tốc ký và cho phép chúng tôi đặt cả bốn cạnh của hộp cùng một lúc. Các tốc ký này cũng có các thuộc tính viết tay tương đương, cho phép kiểm soát các mặt khác nhau của hộp riêng lẻHãy khám phá những thuộc tính này chi tiết hơn LềLề là một không gian vô hình xung quanh hộp của bạn. Nó đẩy các yếu tố khác ra khỏi hộp. Lợi nhuận có thể có giá trị dương hoặc âm. Đặt lề âm ở một bên hộp của bạn có thể khiến nó chồng lên những thứ khác trên trang. Cho dù bạn đang sử dụng mô hình hộp tiêu chuẩn hay thay thế, lề luôn được thêm vào sau khi tính toán kích thước của hộp hiển thị Chúng tôi có thể kiểm soát tất cả các lề của một phần tử cùng một lúc bằng cách sử dụng thuộc tính 95 hoặc từng bên riêng lẻ bằng cách sử dụng các thuộc tính longhand tương đương
Trong ví dụ dưới đây, hãy thử thay đổi các giá trị lề để xem hộp được đẩy xung quanh như thế nào do lề tạo hoặc loại bỏ khoảng trắng (nếu đó là lề âm) giữa phần tử này và phần tử chứa Thu hẹp ký quỹTùy thuộc vào việc hai phần tử có lề chạm nhau có lề dương hay âm mà kết quả sẽ khác nhau
Trong ví dụ dưới đây, chúng ta có hai đoạn văn. Đoạn trên cùng có 16 50 pixel, đoạn còn lại có 14 30 pixel. Các lề đã được thu gọn lại với nhau nên lề thực tế giữa các hộp là 50 pixel chứ không phải tổng của hai lềBạn có thể kiểm tra điều này bằng cách đặt 14 của đoạn hai thành 0. Lề có thể nhìn thấy giữa hai đoạn sẽ không thay đổi — nó giữ nguyên 50 pixel được đặt trong 16 của đoạn một. Nếu bạn đặt nó thành -10px, bạn sẽ thấy rằng tổng lề trở thành 40px — nó trừ đi 50pxMột số quy tắc chỉ ra khi lợi nhuận xảy ra và không sụp đổ. Để biết thêm thông tin, hãy xem trang chi tiết về thu gọn lề chính. Điều chính cần nhớ là sự sụp đổ của lề là điều xảy ra nếu bạn đang tạo không gian có lề và không có được khoảng trống như mong đợi biên giớiĐường viền được vẽ giữa lề và phần đệm của hộp. Nếu bạn đang sử dụng mô hình hộp tiêu chuẩn, kích thước của đường viền sẽ được thêm vào 1 và 2 của hộp nội dung. Nếu bạn đang sử dụng mô hình hộp thay thế thì kích thước của đường viền sẽ làm cho hộp nội dung nhỏ hơn vì nó chiếm một số 1 và 2 có sẵn của hộp phần tửĐối với các đường viền tạo kiểu, có một số lượng lớn các thuộc tính — có bốn đường viền và mỗi đường viền có một kiểu, chiều rộng và màu sắc mà chúng ta có thể muốn thao tác Bạn có thể đặt chiều rộng, kiểu hoặc màu của cả bốn đường viền cùng một lúc bằng cách sử dụng thuộc tính 94Để đặt thuộc tính của từng bên riêng lẻ, hãy sử dụng
Để đặt chiều rộng, kiểu hoặc màu của tất cả các mặt, hãy sử dụng
Để đặt chiều rộng, kiểu hoặc màu của một mặt, hãy sử dụng một trong các thuộc tính longhand chi tiết hơn
Trong ví dụ bên dưới, chúng tôi đã sử dụng nhiều cách viết tắt và viết tay khác nhau để tạo đường viền. Chơi xung quanh với các thuộc tính khác nhau để kiểm tra xem bạn có hiểu cách chúng hoạt động không. Các trang MDN dành cho thuộc tính đường viền cung cấp cho bạn thông tin về các kiểu đường viền có sẵn khác nhau đệmPhần đệm nằm giữa đường viền và vùng nội dung và được sử dụng để đẩy nội dung ra khỏi đường viền. Không giống như lề, bạn không thể có phần đệm âm. Bất kỳ nền nào được áp dụng cho phần tử của bạn sẽ hiển thị phía sau phần đệm Thuộc tính 93 kiểm soát phần đệm trên tất cả các mặt của một phần tử. Để kiểm soát từng bên riêng lẻ, hãy sử dụng các thuộc tính longhand này
Trong ví dụ bên dưới, bạn có thể thay đổi các giá trị cho phần đệm trên lớp 03 để thấy rằng điều này thay đổi vị trí bắt đầu của văn bản liên quan đến hộp. Bạn cũng có thể thay đổi phần đệm trên lớp 02 để tạo khoảng cách giữa hộp chứa và hộp. Bạn có thể thay đổi phần đệm trên bất kỳ phần tử nào để tạo khoảng cách giữa đường viền của nó và bất kỳ thứ gì bên trong phần tử đóMô hình hộp và hộp nội tuyếnTất cả những điều trên hoàn toàn áp dụng cho hộp khối. Một số thuộc tính cũng có thể áp dụng cho các hộp nội tuyến, chẳng hạn như các thuộc tính được tạo bởi phần tử 5Trong ví dụ bên dưới, chúng ta có một 5 bên trong một đoạn văn. Chúng tôi đã áp dụng 1, 2, 95, 94 và 93 cho nó. Bạn có thể thấy rằng chiều rộng và chiều cao bị bỏ qua. Lề dọc, phần đệm và đường viền được tôn trọng nhưng không thay đổi mối quan hệ của nội dung khác với hộp nội tuyến của chúng tôi. Phần đệm và đường viền chồng lên các từ khác trong đoạn văn. Phần đệm ngang, lề và đường viền di chuyển nội dung khác ra khỏi hộpSử dụng màn hình. chặn Nội tuyến 10 là một giá trị đặc biệt của 9, cung cấp một nền tảng trung gian giữa 1 và 0. Sử dụng nó nếu bạn không muốn một mục chuyển sang một dòng mới, nhưng muốn nó tôn trọng 1 và 2 và tránh sự chồng chéo đã thấy ở trênMột phần tử với 10 thực hiện một tập hợp con của khối mà chúng ta đã biết về
Tuy nhiên, nó không chuyển sang một dòng mới và sẽ chỉ trở nên lớn hơn nội dung của nó nếu bạn thêm các thuộc tính 1 và 2 một cách rõ ràngTrong ví dụ tiếp theo này, chúng tôi đã thêm 10 vào phần tử 5 của chúng tôi. Hãy thử thay đổi điều này thành 8 hoặc xóa hoàn toàn dòng này để thấy sự khác biệt trong các kiểu hiển thịTrường hợp điều này có thể hữu ích là khi bạn muốn cung cấp cho một liên kết một khu vực tiếp cận lớn hơn bằng cách thêm 93. 4 là một phần tử nội tuyến như 5; Bạn thấy điều này khá thường xuyên trong các thanh điều hướng. Điều hướng bên dưới được hiển thị trong một hàng bằng cách sử dụng flexbox và chúng tôi đã thêm phần đệm vào phần tử 4 vì chúng tôi muốn có thể thay đổi 32 khi 4 được di chuột. Phần đệm dường như chồng lên đường viền trên phần tử 61. Điều này là do 4 là một phần tử nội tuyếnThêm 10 vào quy tắc với bộ chọn 37 và bạn sẽ thấy cách nó khắc phục sự cố này bằng cách làm cho phần đệm được các phần tử khác tôn trọngKiểm tra kỹ năng của bạnBạn đã đọc đến cuối bài viết này, nhưng liệu bạn có nhớ được thông tin quan trọng nhất không? . Mô hình hộp Tóm lượcĐó là hầu hết những gì bạn cần hiểu về mô hình hộp. Bạn có thể muốn quay lại bài học này trong tương lai nếu bạn cảm thấy bối rối về kích thước của các hộp trong bố cục của mình Trong bài viết tiếp theo, chúng ta sẽ xem cách nền và đường viền có thể được sử dụng để làm cho các hộp đơn giản của bạn trông thú vị hơn Làm cách nào để tạo hộp div trong HTML?Với thẻ div, bạn có thể tạo nhiều hình dạng khác nhau và vẽ bất cứ thứ gì vì nó rất dễ tạo kiểu. Để tạo một hình vuông với thẻ div, trước tiên bạn cần xác định một thẻ div trống và đính kèm một thuộc tính lớp cho thẻ đó trong HTML . Trong CSS, chọn div với thuộc tính lớp, sau đó đặt chiều cao và chiều rộng bằng nhau cho nó. |