Hướng dẫn bố cục CSS
Bây giờ bạn đã biết cách sử dụng HTML để tạo nội dung trang web và bạn biết cách sử dụng CSS để tạo kiểu cho nội dung đó Show
Hướng dẫn này nói về các cách khác nhau để định vị các thành phần trong trang của bạn Đến bây giờ, có lẽ bạn đã thấy các thẻ HTML chỉ định các loại nội dung khác nhau, chẳng hạn như vàCó một thẻ HTML khác đặc biệt hữu ích để tạo bố cục. các nhãn. Nếu bạn chưa quen với HTML và CSS, bạn có thể chưa sử dụng nó nhiều, vì vậy đây là phần giới thiệu nhanh Các thẻ thể hiện sự phân chia nội dung. Nó cho phép bạn nhóm các thẻ khác lại với nhau thành các phần và bạn có thể tạo kiểu cho các phần đó bằng CSS. Đây là một ví dụ Mã này tạo một div màu vàng chứa một số nội dung, bao gồm hai div khác. Div màu đỏ chứa một số văn bản và div màu xanh chứa các thẻ HTML khác Có các thẻ HTML khác liên quan đến bố cục, như vàlà thứ bạn sẽ thấy thường xuyên nhất Theo mặc định, các div được hiển thị trên dòng riêng của chúng, vì vậy nhiều div sẽ hiển thị chồng lên nhau. Phần còn lại của hướng dẫn này nói về cách thay đổi hành vi mặc định đó CSS có một vài cách khác nhau để định vị các phần tử và cá nhân tôi thấy thật khó hiểu khi có quá nhiều tùy chọn để lựa chọn. Tôi có nên sử dụng phao? . Vì vậy, hãy lướt qua lịch sử ngắn gọn về bố cục trong CSS HTML được phát hành vào khoảng năm 1993. Trong những ngày đầu phát triển web, không có thứ gọi là CSS. Việc tạo kiểu đã được thực hiện với các thẻ HTML như và với các thuộc tính như 7 (như trong 8). Bố cục đã được thực hiện bằng cách sử dụng thuộc tính HTML 9 của một phần tử thành 0 hoặc 1 để nó hiển thị ở bên trái hoặc bên phải của các phần tử khác và bạn có thể đặt thuộc tính 2 của một phần tử thành 3 hoặc 4 để thay đổi cách các phần tử khác được bố trí xung quanh . Bạn cũng có thể đặt vị trí của phần tử theo cách thủ công nếu bạn thực sự muốnphao nổiĐây là cách bạn tạo điều hướng bên trái bằng float Phao vẫn thường được sử dụng trong bố cục CSS, mặc dù chúng có một vài nhược điểm. Trình duyệt xử lý các phần tử nổi như thể chúng không chiếm dung lượng - đó là lý do tại sao div nội dung có lề trái. Hãy thử xóa phong cách đó để xem điều gì sẽ xảy ra. Sau đó, hãy thử thêm chân trang vào trang để xem tại sao các float có thể khó làm việc với khốiVà đây là cách bạn có thể làm điều đó với các khối nội tuyến Giống như float, các khối nội tuyến vẫn được sử dụng trong bố cục CSS, nhưng chúng cũng có nhược điểm riêng. Ví dụ: các trình duyệt sẽ bọc một khối nội tuyến vào dòng tiếp theo nếu nội dung quá rộng. Hãy thử thêm một số văn bản dài vào div nội dung và sau đó làm cho trình duyệt của bạn bớt rộng hơn để xem ý tôi là gì Sau CSS 2, lịch sử của CSS trở nên khá phức tạp, chủ yếu là do CSS được chia thành nhiều mô-đun khác nhau với lịch sử của riêng chúng. Tóm lại, CSS 3 được xây dựng dựa trên CSS 2 và một trong những tính năng được thêm vào CSS 3 là flexbox vào năm 2017 Flexbox cho phép bạn xác định mối quan hệ giữa các phần tử cha và phần tử con. Bản thân điều đó nghe có vẻ không hữu ích lắm, nhưng nó là một công cụ cực kỳ mạnh mẽ khi bạn đang cố gắng định vị một loạt nội dung trong trang của mình. Ví dụ: với flexbox, bạn có thể yêu cầu trình duyệt hiển thị một số phần tử liên tiếp và bạn có thể cung cấp cho mỗi phần tử con các quy tắc khác nhau về cách định cỡ chính chúng. Và trình duyệt sẽ làm phần việc còn lại cho bạn Để sử dụng flexbox, hãy đặt 5 trên phần tử cha (phần tử chứa các phần tử khác), sau đó đặt các thuộc tính flex khác trên cả phần tử cha và phần tử con để tùy chỉnh bố cục của bạnVí dụ: đây là ví dụ điều hướng bên trái ở trên, lần này sử dụng flexbox Thuộc tính linh hoạtĐể sử dụng flexbox, hãy đặt 5 trên phần tử cha (phần tử chứa các phần tử khác), sau đó đặt các thuộc tính flex khác trên cả phần tử cha và phần tử con để tùy chỉnh bố cục của bạnDưới đây là một vài thuộc tính flex phổ biến trưng bày. uốn congĐây là tài sản khởi đầu cho tất cả. Đặt cái này trên một phần tử cha (thường là div) để bảo nó sử dụng các quy tắc flex để sắp xếp các phần tử con của nó (các phần tử mà nó chứa) 0hướng uốnTheo mặc định, các thùng chứa linh hoạt (các phần tử có 5) sắp xếp các phần tử con của chúng trong một hàng. Bạn có thể đặt thuộc tính 8 thành 9 để thay đổi điều này
uốn dẻoTheo mặc định, các thùng chứa linh hoạt sắp xếp các phần tử con của chúng trong một hàng hoặc một cột. Nếu vùng chứa chứa nhiều phần tử hơn mức sẽ vừa với một dòng, thì các phần tử đó sẽ bị nhòe Để bọc các phần tử con thay vì làm mịn chúng, hãy đặt 50 thành 51
Giá trị mặc định là 52Đối với các hộp chứa linh hoạt có phần tử con được bao bọc, bạn cũng có thể đặt thuộc tính 53 để chỉ định khoảng cách của nội dung được bao bọcbiện minh cho nội dungTheo mặc định, các hộp chứa linh hoạt sắp xếp các phần tử con của chúng bắt đầu từ ngoài cùng bên trái (hoặc trên cùng đối với các hộp chứa có 54) mà không có bất kỳ khoảng trống nào giữa chúngĐể thay đổi khoảng cách giữa các phần tử con, hãy đặt thuộc tính 55 5Có một vài giá trị để lựa chọn
Hãy thử thay đổi mã này để thấy sự khác biệt sắp xếp các mụcTheo mặc định, các thùng chứa linh hoạt căn chỉnh các phần tử con của chúng lên trên cùng (hoặc bên trái đối với các thùng chứa có 54) và đặt chiều cao (hoặc chiều rộng) của chúng để lấp đầy khoảng trống còn lạiĐể thay đổi cách các phần tử con được căn chỉnh, hãy đặt thuộc tính 72 7Có một số tùy chọn để lựa chọn
Hãy thử thay đổi mã này để thấy sự khác biệt lỗ hổngTheo mặc định, các thùng chứa flex không thêm bất kỳ khoảng cách nào giữa các phần tử con của chúng. Bạn có thể thay đổi điều đó bằng 55, 72 và 53. Bạn cũng có thể đặt thuộc tính 91 theo cách thủ công 9uốn congTheo mặc định, các phần tử bên trong hộp chứa linh hoạt sẽ không mở rộng để lấp đầy khoảng trống thừa trong vùng chứa Bạn có thể yêu cầu một phần tử lấp đầy bất kỳ khoảng trống thừa nào bằng cách sử dụng thuộc tính 92 2Thuộc tính 92 lấy một số, đại diện cho đứa trẻ đó sẽ phát triển bao nhiêu so với anh chị em của nóĐó là một chút khó hiểu, vì vậy đây là một ví dụ Trong ví dụ này, lớp 94 có giá trị mặc định của lớp 92 là 96, có nghĩa là nó không phát triển chút nào. Sau đó, các lớp 97 và 98 có các giá trị 92 tương ứng là 20 và 21, điều đó có nghĩa là 98 sẽ tăng gấp đôi so với 97Hãy thử thay đổi mã để xem ảnh hưởng của các giá trị khác nhau uốn congTheo mặc định, nếu một bộ chứa linh hoạt không đủ rộng (hoặc đủ cao cho các bộ chứa có 54) để chứa tất cả các phần tử con của nó, thì tất cả các phần tử con đó sẽ co lại như nhauĐể có các phần tử con khác nhau co lại ở các tỷ lệ khác nhau, hãy đặt thuộc tính 25 của chúng 6Điều này tương tự như 92 ở chỗ giá trị là một con số biểu thị mức độ nhỏ bé của một đứa trẻ so với các anh chị em của nó. Giá trị mặc định là 20, nhưng bạn có thể đặt thành 96 để không bao giờ thu nhỏ hoặc đặt thành số cao hơn để thu nhỏ hơn nữacơ sở linh hoạtTheo mặc định, các thành phần bên trong hộp chứa linh hoạt đặt kích thước riêng của chúng, thông qua thuộc tính 29 và 60 hoặc từ nội dung của chúngThay vì dựa vào kích thước riêng của phần tử, bạn có thể đặt kích thước ban đầu của nó bằng thuộc tính 61 3uốn congSức mạnh của 92, 25 và 61 có thể không rõ ràng. Tại sao bạn nên sử dụng chúng thay vì đặt thuộc tính 29 và 60?Có một vài lý do
Với flexbox, bạn có thể đặt các thuộc tính 92, 25 và 61 để cho nội dung của bạn biết cách sắp xếp. Điều gì sẽ phát triển khi nó được xem trên màn hình rộng? Trên thực tế, ba thuộc tính này hữu ích đến mức bạn có thể kết hợp chúng thành một thuộc tính duy nhất có tên là 30Vì vậy, nếu bạn có CSS này 3Bạn có thể rút ngắn nó như thế này Để hiểu tại sao điều này lại hữu ích, hãy thử thay đổi độ rộng của div cha trong ví dụ này (Có thể hữu ích khi xem phiên bản toàn màn hình. ) Tất cả trẻ em đều bắt đầu ở những kích thước nhất định, nhờ vào đặc tính 61 của chúngKhi bạn làm cho div cha lớn hơn, phần tử con màu đỏ không lớn lên chút nào, bởi vì 92 của nó là 96. Đứa trẻ màu xanh lá cây lớn nhanh hơn đứa trẻ màu xanh da trời, vì thuộc tính 92 của chúng là 21 và 20Khi bạn làm cho div gốc nhỏ hơn, phần tử con màu đỏ co lại nhanh hơn phần tử con màu xanh, vì các thuộc tính 25 của chúng là 21 và 20. Đứa trẻ màu xanh lá cây không co lại chút nào, bởi vì 25 của nó là 96Điều này có nghĩa là bạn có thể đặt các thuộc tính này và sau đó không phải lo lắng về kích thước chính xác của nội dung hoặc kích thước chính xác của cửa sổ trình duyệt của người dùng Học nhiều hơn nữaChúng tôi đã đề cập đến các nguyên tắc cơ bản của flexbox ở trên, nhưng có các thuộc tính và giá trị khác mà bạn có thể sử dụng. Để tìm hiểu thêm về chúng, hãy xem Hướng dẫn đầy đủ về Flexbox trên Thủ thuật CSS Và tất nhiên, đừng ngại tìm kiếm trên internet khi bạn không chắc chắn về điều gì đó. Có rất nhiều tài nguyên tuyệt vời ngoài kia Flexbox hữu ích nhất khi bạn có một hàng (hoặc cột) nội dung. Bộ chứa Flexbox có thể bọc nội dung của chúng thành nhiều hàng (hoặc cột) bằng cách sử dụng thuộc tính 50, nhưng bạn không có nhiều quyền kiểm soát đối với việc căn chỉnh các mục đóĐiều đó có thể ổn đối với nhiều bố cục, nhưng nếu bạn muốn kiểm soát nhiều hơn cách các thành phần của mình được định vị, bạn có thể sử dụng bố cục lưới Để đặt bố cục lưới trong bối cảnh lịch sử, về mặt kỹ thuật, nó vẫn chưa được phát hành chính thức, nhưng kể từ năm 2022, hầu hết mọi trình duyệt đều đã hỗ trợ nó. CSS thật kỳ lạ Đây là ví dụ điều hướng bên trái ở trên bằng Grid Thuộc tính lướiĐể sử dụng lưới, hãy đặt 33 trên phần tử cha, sau đó đặt các thuộc tính lưới khác trên cả phần tử cha và phần tử con để tùy chỉnh bố cục của bạntrưng bày. lướiĐây là tài sản khởi đầu cho tất cả. Đặt cái này trên phần tử cha (thường là div) để bảo nó sử dụng quy tắc lưới để sắp xếp các phần tử con của nó (các phần tử mà nó chứa) 0Bản thân điều đó không thú vị lắm, vì theo mặc định, lưới là một cột gồm các phần tử lưới-mẫu-cộtTheo mặc định, lưới là một cột gồm các phần tử Để chia lưới của bạn thành nhiều cột, hãy sử dụng thuộc tính 34 1Thuộc tính 34 lấy một danh sách các kích thước được phân tách bằng dấu cách và sẽ bố trí nội dung trong nhiều cột đó, với các kích thước đóCác kích thước có thể là một vài loại giá trị khác nhau
Xem grid-template-columns trên MDN để biết các loại giá trị khác Ví dụ trên của 05 tạo ba cột. một cột rộng 36 và sau đó là một cột ở giữa sẽ chiếm khoảng một nửa chiều rộng của cột thứ balưới-mẫu-hàngTương tự như 34, 08 cho phép bạn chỉ định chiều cao của mỗi hàngBằng cách xác định cả 34 và 08, bạn có thể tạo một lưới nội dung 2Thay vào đó, hãy thử thay đổi mã này để mã có 3 cột và 2 hàng Đặt các mục trong lướiTheo mặc định, các mục chiếm một ô trong lưới chính của chúng và chúng xuất hiện theo thứ tự mà bạn liệt kê chúng trong HTML của mình Bạn có thể làm cho một phần tử chiếm nhiều hơn một ô bằng cách sử dụng các thuộc tính này
3Đây là một ví dụ Div màu đỏ bắt đầu từ cột 1 và kéo dài đến cột 3, vì vậy nó chiếm cả hai cột. Div màu xanh lục bắt đầu từ hàng 2 và kéo dài đến hàng 4, vì vậy nó chiếm hàng 2 và 3 Cũng lưu ý rằng div màu xanh lá cây xuất hiện trước div màu xanh lam, mặc dù nó xuất hiện sau trong HTML. Điều này có thể hữu ích để đảm bảo nội dung chính của bạn xuất hiện đầu tiên trong HTML, điều này có thể trợ giúp với những thứ như trình đọc màn hình và SEO Bạn cũng có thể sử dụng tốc ký 15 và 16 4Các ô được đặt tênCác ví dụ trên sử dụng các số để chỉ định các ô mà một phần tử chiếm giữ Thay vào đó, bạn có thể đặt tên cho các ô của mình, sau đó chỉ định vị trí phần tử bằng các tên đó Trước tiên, hãy thêm tên vào các hàng và cột vùng chứa của bạn bằng cách sử dụng dấu ngoặc vuông 17 5Bạn đang thực sự đặt tên cho các dòng giữa các ô. Đây là CSS giống như trên, ngoại trừ bây giờ một số dòng giữa các ô có tên Sau đó, sử dụng các tên đó để đặt các phần tử con của bạn 6Đây là mã đầy đủ Thuộc tính lưới khácLưới có nhiều thuộc tính khác và các phím tắt để viết ít dòng mã hơn. Thay vì cố gắng liệt kê tất cả chúng ở đây, tôi khuyến khích bạn đọc qua Hướng dẫn đầy đủ về lưới trên thủ thuật CSS, Bố cục lưới CSS trên W3Schools và Bố cục lưới CSS trên MDN Quan trọng hơn, tôi khuyến khích bạn dùng thử. Nếu bạn muốn thử nghiệm với bố cục dạng lưới (hoặc flexbox, hoặc bất kỳ thứ gì thực sự) thì điều tốt nhất bạn có thể làm là tạo một tệp sơ bộ hoặc một dự án CodePen và dùng thử. Làm cho thứ gì đó hoạt động và sau đó xem liệu có cách nào khác để viết mã của bạn không Một bố cục cụ thể phổ biến đến mức họ đã đặt cho nó một cái tên. chén Thánh Bố cục chén thánh là một trang web có tiêu đề, thanh bên trái, khu vực nội dung chính, thanh bên phải và chân trang. Bạn có thể kể tên một số trang web sử dụng bố cục này Dưới đây là một vài ví dụ về cách bố trí chén thánh sử dụng flexbox Sử dụng lưới Nếu bạn muốn thử thách và nếu bạn muốn hiểu điều gì làm cho flexbox và grid trở nên phổ biến, hãy thử triển khai bố cục chén thánh chỉ sử dụng float hoặc blocks Tôi đã liệt kê một vài cách tiếp cận để tạo bố cục ở trên, nhưng bạn không cần phải chọn chỉ một. Trên thực tế, hầu hết các trang web sử dụng kết hợp tất cả những điều trên Ví dụ: bạn có thể sử dụng lưới để tạo bố cục ngoài cùng của mình để đặt tiêu đề, thanh bên, nội dung chính và chân trang. Tiêu đề của bạn có thể sử dụng flexbox để tạo một hàng liên kết điều hướng. Nội dung chính có thể chứa các hình ảnh được di chuyển sang trái hoặc phải Hãy thử nghĩ về từng phần trên trang của bạn dưới dạng bố cục riêng, sau đó sử dụng bất kỳ công cụ nào có ý nghĩa nhất cho phần cụ thể đó Đảm bảo trang web của bạn hoạt động trên màn hình của mọi người là một phần quan trọng của bố cục và thiết kế, kể từ những ngày đầu của HTML Nhưng điều này thậm chí còn trở nên khó khăn hơn vào cuối những năm 2000 và đầu những năm 2010, khi điện thoại di động trở nên phổ biến hơn để duyệt web. Làm cách nào để bạn đảm bảo rằng trang web của mình hiển thị tốt trên một chiếc điện thoại di động nhỏ, màn hình rộng và mọi thứ ở giữa? Một cách phổ biến để nghĩ về nó là thiết kế đáp ứng. Thiết kế đáp ứng là ý tưởng rằng trang web của bạn sẽ phản ứng với những thay đổi về kích thước màn hình. Có thể trang của bạn chỉ hiển thị nội dung chính trên thiết bị màn hình hẹp, nhưng thêm thanh bên trái trên thiết bị cỡ trung bình và chia nội dung thành nhiều cột trên thiết bị màn hình rộng Đây là một ví dụ Thiết kế ưu tiên thiết bị di động và cải tiến liên tụcThiết kế đáp ứng có nghĩa là bạn hiển thị một bố cục khác trên các kích thước màn hình khác nhau. Bạn có thể coi điều này là ẩn các phần của trang web trên màn hình nhỏ hơn, nhưng một cách khác để nghĩ về điều này là màn hình nhỏ hơn chứa tất cả nội dung cần thiết và màn hình lớn hơn hiển thị nội dung "bổ sung" không bắt buộc Bắt đầu thiết kế của bạn bằng cách suy nghĩ về màn hình nhỏ được gọi là thiết kế ưu tiên thiết bị di động và suy nghĩ về việc thêm các tính năng bổ sung cho màn hình rộng hơn được gọi là cải tiến liên tục Đây là một từ thông dụng nhỏ, nhưng tôi thấy chúng hữu ích trong việc suy nghĩ về cách thiết kế bố cục của trang web Bạn có thể đọc thêm về thiết kế đáp ứng tại Thiết kế đáp ứng - MDN và Thiết kế web đáp ứng - Wikipedia Để hiển thị bố cục khác tùy thuộc vào kích thước màn hình, bạn có thể sử dụng tính năng CSS có tên là truy vấn phương tiện Truy vấn phương tiện sử dụng từ khóa 18, sau đó là loại phương tiện (bạn có thể muốn 19, nhưng bạn cũng có thể tùy chỉnh giao diện trang web của mình được in ra bằng 20), sau đó là tính năng phương tiện cho phép bạn thiết lập quy tắc cho các loại hiển thị khác nhau. Sau đó, bên trong dấu ngoặc nhọn 21, bạn đặt bất kỳ quy tắc nào bạn muốn áp dụng cho truy vấn của mình. Đây là một ví dụ(Có thể hữu ích khi xem phiên bản toàn màn hình. ) Theo mặc định, lớp 22 có đường viền mỏng, liền màu đen và nền màu lục lam. Nhưng trên màn hình rộng hơn 700 pixel, lớp 22 sẽ có nền vôi. Bởi vì chúng tôi không thay đổi đường viền trên màn hình rộng nên nó duy trì mặc định màu đen đặc mỏngĐây là một ví dụ phức tạp hơn hiển thị nội dung trong một cột theo mặc định và trong bố cục chén thánh trên các thiết bị rộng hơn 600 pixel (Có thể hữu ích khi xem phiên bản toàn màn hình. ) Ví dụ này cũng ẩn hoàn toàn thanh bên trái trên thiết bị di động Xem hướng dẫn dành cho người mới bắt đầu về truy vấn phương tiện trên MDN và CSS @media Rule trên W3Schools để biết thêm thông tin Khi bạn đang tạo và gỡ lỗi bố cục trong CSS, người bạn tốt nhất của bạn là các công cụ dành cho nhà phát triển của trình duyệt. Họ có thể giúp bạn hiểu lý do tại sao mọi thứ đang thẳng hàng theo một cách nhất định hoặc một vài pixel không gian thừa đó đến từ đâu Bạn thậm chí có thể sử dụng chế độ thiết bị để xem trang web của mình trông như thế nào trên các thiết bị khác nhau. Điều này dễ dàng hơn nhiều so với việc liên tục thay đổi kích thước cửa sổ của bạn Làm cách nào để tạo bố cục CSS?Tải xuống các tệp hướng dẫn tại đây (mở trong tab mới) (và lưu chúng trong bộ nhớ đám mây an toàn). . Bắt đầu. Mở tệp 'lưới1. . Kiểm tra CSS cho lưới. . Xác định vị trí lưới. . Sử dụng mẫu lưới. . Xác định mẫu. . Liên kết mẫu với lớp. . Làm cho nó đáp ứng. . Làm việc trên một bố cục thực tế Bố cục nào là tốt nhất trong CSS?Bố cục CSS tốt nhất cho trang web của bạn . Nguyên chất. css. . Bố cục CSS Masonry thuần túy với Flexbox. . Mở rộng bố cục cột. . Bố cục toàn màn hình với các cột. . Bố cục CSS Masonry thuần túy. . Ví dụ bố cục trang tĩnh. . Bố cục trang sản phẩm với Flexbox. . Bố cục CSS3 đẹp Kỹ thuật bố cục CSS là gì?Các kỹ thuật bố cục trang CSS cho phép chúng tôi lấy các thành phần có trong trang web và kiểm soát vị trí của chúng so với các yếu tố sau. vị trí mặc định của chúng trong luồng bố cục bình thường, các thành phần khác xung quanh chúng, vùng chứa chính của chúng và cửa sổ/khung nhìn chính
Bố cục trang web CSS là gì?Bố cục lưới CSS là hệ thống bố cục hai chiều dành cho web . Nó cho phép bạn sắp xếp nội dung theo hàng và cột, đồng thời có nhiều tính năng giúp việc xây dựng các bố cục phức tạp trở nên đơn giản. |