1 fr trong CSS là gì?
Bố cục lưới CSS giới thiệu hệ thống lưới hai chiều cho CSS. Lưới có thể được sử dụng để bố trí các khu vực trang chính hoặc các thành phần giao diện người dùng nhỏ. Bài viết này giới thiệu Bố cục lưới CSS và thuật ngữ mới là một phần của đặc tả Bố cục lưới CSS Cấp 1. Các tính năng được hiển thị trong tổng quan này sau đó sẽ được giải thích chi tiết hơn trong phần còn lại của hướng dẫn này Show
Lưới là gì?Lưới là một tập hợp các đường ngang và dọc giao nhau xác định các cột và hàng. Các phần tử có thể được đặt vào lưới trong các dòng cột và hàng này. Bố cục lưới CSS có các tính năng sau Kích thước theo dõi cố định và linh hoạtBạn có thể tạo lưới với kích thước rãnh cố định – ví dụ: sử dụng pixel. Điều này đặt lưới thành pixel được chỉ định phù hợp với bố cục bạn mong muốn. Bạn cũng có thể tạo lưới sử dụng kích thước linh hoạt với tỷ lệ phần trăm hoặc với đơn vị 2 được thiết kế cho mục đích nàyvị trí mụcBạn có thể đặt các mục vào một vị trí chính xác trên lưới bằng cách sử dụng số dòng, tên hoặc bằng cách nhắm mục tiêu một khu vực của lưới. Lưới cũng chứa một thuật toán để kiểm soát vị trí của các mục không được cung cấp vị trí rõ ràng trên lưới Tạo các bản nhạc bổ sung để giữ nội dungBạn có thể xác định lưới rõ ràng với bố cục lưới. Thông số kỹ thuật Bố cục lưới đủ linh hoạt để thêm các hàng và cột bổ sung khi cần. Các tính năng như thêm "nhiều cột sẽ vừa với một vùng chứa" được bao gồm kiểm soát căn chỉnhLưới chứa các tính năng căn chỉnh để chúng tôi có thể kiểm soát cách các mục căn chỉnh sau khi được đặt vào vùng lưới và cách toàn bộ lưới được căn chỉnh Kiểm soát nội dung chồng chéoCó thể đặt nhiều mục vào một ô hoặc vùng lưới và chúng có thể chồng lên nhau một phần. Lớp này sau đó có thể được kiểm soát với thuộc tính 3Lưới là một đặc điểm kỹ thuật mạnh mẽ, khi được kết hợp với các phần khác của CSS chẳng hạn như flexbox, có thể giúp bạn tạo các bố cục mà trước đây không thể xây dựng trong CSS. Tất cả bắt đầu bằng cách tạo lưới trong vùng chứa lưới của bạn thùng chứa lướiChúng tôi tạo một thùng chứa lưới bằng cách khai báo 4 hoặc 5 trên một phần tử. Ngay sau khi chúng tôi làm điều này, tất cả các phần tử con trực tiếp của phần tử đó sẽ trở thành các mục lướiTrong ví dụ này, tôi có một div chứa một lớp trình bao bọc và bên trong là năm phần tử con
Tôi biến 6 thành một grid container
Tất cả các con trực tiếp bây giờ là các mục lưới. Trong trình duyệt web, bạn sẽ không thấy bất kỳ sự khác biệt nào về cách các mục này được hiển thị trước khi biến chúng thành lưới, vì lưới đã tạo ra một lưới cột duy nhất cho các mục. Tại thời điểm này, bạn có thể thấy hữu ích khi làm việc với Trình kiểm tra lưới, có sẵn như một phần của Công cụ dành cho nhà phát triển của Firefox. Nếu bạn xem ví dụ này trong Firefox và kiểm tra lưới, bạn sẽ thấy một biểu tượng nhỏ bên cạnh giá trị 7. Nhấp vào đây và sau đó lưới trên phần tử này sẽ được phủ lên trong cửa sổ trình duyệtKhi bạn tìm hiểu và sau đó làm việc với Bố cục lưới CSS, công cụ này sẽ cung cấp cho bạn ý tưởng tốt hơn về những gì đang xảy ra với lưới của bạn một cách trực quan Nếu chúng tôi muốn bắt đầu làm cho nó giống như lưới hơn, chúng tôi cần thêm các rãnh cột đường lướiChúng tôi xác định các hàng và cột trên lưới của mình bằng các thuộc tính 8 và 9. Chúng xác định các rãnh lưới. Đường lưới là khoảng cách giữa hai đường liền kề bất kỳ trên lưới. Hình ảnh bên dưới hiển thị một rãnh được đánh dấu – đây là rãnh ở hàng đầu tiên trong lưới của chúng tôiCác rãnh lưới được xác định trong lưới rõ ràng bằng cách sử dụng các thuộc tính 9 và 8 hoặc các thuộc tính tốc ký 7 hoặc 3. Các rãnh cũng được tạo trong lưới ẩn bằng cách định vị một mục lưới bên ngoài các rãnh được tạo trong lưới rõ ràngVí dụ cơ bảnTôi có thể thêm vào ví dụ trước của chúng ta bằng cách thêm thuộc tính 9, sau đó xác định kích thước của các rãnh cộtBây giờ tôi đã tạo một lưới có ba rãnh cột rộng 200 pixel. Các mục con sẽ được đặt trên lưới này, mỗi mục trong mỗi ô lưới
đơn vị frCác bản nhạc có thể được xác định bằng bất kỳ đơn vị độ dài nào. Lưới cũng giới thiệu một đơn vị độ dài bổ sung để giúp chúng tôi tạo các đường lưới linh hoạt. Đơn vị 2 mới đại diện cho một phần không gian có sẵn trong vùng chứa lưới. Định nghĩa lưới tiếp theo sẽ tạo ra ba rãnh có chiều rộng bằng nhau phát triển và thu nhỏ theo không gian có sẵn
1
Kích thước không bằng nhauTrong ví dụ tiếp theo này, chúng tôi tạo một định nghĩa với một rãnh 6 sau đó là hai rãnh 7. Không gian có sẵn được chia thành bốn. Hai phần được trao cho bản nhạc đầu tiên và một phần cho hai bản nhạc tiếp theo
0
Trộn kích thước linh hoạt và tuyệt đốiTrong ví dụ cuối cùng này, chúng tôi trộn các bản nhạc có kích thước tuyệt đối với các đơn vị 2. Bản nhạc đầu tiên là 500 pixel, vì vậy chiều rộng cố định được lấy đi từ không gian có sẵn. Không gian còn lại được chia thành ba và được gán theo tỷ lệ cho hai rãnh linh hoạt
3
Theo dõi danh sách với ký hiệu lặp lại ()Lưới lớn có nhiều rãnh có thể sử dụng ký hiệu 9, để lặp lại tất cả hoặc một phần của danh sách rãnh. Ví dụ: định nghĩa lưới 1Cũng có thể được viết là 6Ký hiệu lặp lại có thể được sử dụng cho một phần của danh sách bản nhạc. Trong ví dụ tiếp theo này, tôi đã tạo một lưới có rãnh 20 pixel ban đầu, sau đó là phần lặp lại gồm 6 rãnh _______77 sau đó là rãnh 20 pixel cuối cùng 7Ký hiệu lặp lại lấy danh sách bản nhạc và sử dụng nó để tạo một mẫu bản nhạc lặp lại. Trong ví dụ tiếp theo này, lưới của tôi sẽ bao gồm 10 rãnh, một rãnh 7 và sau đó là một rãnh 6. Mô hình này sẽ được lặp lại năm lần 8Lưới ngầm và rõ ràngKhi tạo lưới ví dụ của chúng tôi, chúng tôi đã xác định cụ thể các rãnh cột của mình bằng thuộc tính 9, nhưng lưới cũng tự tạo các hàng. Những hàng này là một phần của lưới ngầm. Trong khi lưới rõ ràng bao gồm bất kỳ hàng và cột nào được xác định bằng 9 hoặc 8Nếu bạn đặt thứ gì đó bên ngoài lưới đã xác định—hoặc do số lượng nội dung, cần nhiều rãnh lưới hơn—thì lưới sẽ tạo các hàng và cột trong lưới ẩn. Các bản nhạc này sẽ được tự động định kích thước theo mặc định, dẫn đến kích thước của chúng dựa trên nội dung bên trong chúng Bạn cũng có thể xác định kích thước đã đặt cho các rãnh được tạo trong lưới ngầm với thuộc tính 6 và 7Trong ví dụ bên dưới, chúng tôi sử dụng 6 để đảm bảo rằng các bản nhạc được tạo trong lưới ngầm có chiều cao 200 pixel
0
Theo dõi kích thước và minmaxKhi thiết lập lưới rõ ràng hoặc xác định kích thước cho các hàng hoặc cột được tạo tự động, chúng tôi có thể muốn cung cấp cho các bản nhạc một kích thước tối thiểu, nhưng cũng đảm bảo rằng chúng mở rộng để phù hợp với bất kỳ nội dung nào được thêm vào. Ví dụ: tôi có thể muốn các hàng của mình không bao giờ thu gọn nhỏ hơn 100 pixel, nhưng nếu nội dung của tôi kéo dài đến 300 pixel về chiều cao, thì tôi muốn hàng kéo dài đến độ cao đó Grid có giải pháp cho vấn đề này với hàm 9. Trong ví dụ tiếp theo này, tôi đang sử dụng 9 với giá trị của 6. Điều này có nghĩa là các hàng được tạo tự động sẽ có chiều cao tối thiểu là 100 pixel và tối đa là 12. Sử dụng 12 có nghĩa là kích thước sẽ xem xét kích thước nội dung và sẽ kéo dài để tạo khoảng trống cho mục cao nhất trong một ô, trong hàng này 2
4đường lướiCần lưu ý rằng khi chúng ta xác định một lưới, chúng ta xác định các rãnh lưới chứ không phải các đường. Lưới sau đó cung cấp cho chúng tôi các dòng được đánh số để sử dụng khi định vị các mục. Trong lưới ba cột, hai hàng, chúng tôi có bốn dòng cột Các dòng được đánh số theo chế độ viết của tài liệu. Trong ngôn ngữ viết từ trái sang phải, dòng 1 nằm ở phía bên trái của lưới. Trong ngôn ngữ đọc từ phải sang trái, nó nằm ở phía bên phải của lưới. Các dòng cũng có thể được đặt tên và chúng ta sẽ xem xét cách thực hiện việc này trong phần hướng dẫn sau của loạt bài này Định vị các mục so với các dòngChúng tôi sẽ khám phá vị trí dựa trên dòng đầy đủ chi tiết trong một bài viết sau. Ví dụ sau minh họa việc này một cách đơn giản. Khi đặt một mục, chúng tôi nhắm mục tiêu theo dòng – thay vì theo dõi Trong ví dụ sau, tôi đặt hai mục đầu tiên trên lưới theo dõi ba cột của chúng tôi, sử dụng các thuộc tính 14, 15, 16 và 17. Làm việc từ trái sang phải, mục đầu tiên được đặt trên dòng cột 1 và kéo dài đến dòng cột 4, trong trường hợp của chúng tôi là dòng ngoài cùng bên phải trên lưới. Nó bắt đầu ở dòng 1 và kết thúc ở dòng 3, do đó kéo dài hai rãnh hàngMục thứ hai bắt đầu trên dòng cột lưới 1 và kéo dài một rãnh. Đây là mặc định nên tôi không cần chỉ định dòng kết thúc. Nó cũng kéo dài hai rãnh hàng từ hàng 3 đến hàng 5. Các mục khác sẽ tự đặt vào các khoảng trống trên lưới 5 6
Ghi chú. Đừng quên rằng bạn có thể sử dụng Trình kiểm tra lưới trong Công cụ dành cho nhà phát triển Firefox để xem các mục được định vị như thế nào so với các đường của lưới Tốc ký định vị dòngCác giá trị viết tay được sử dụng ở trên có thể được nén thành một dòng cho các cột có 18 và một dòng cho các hàng có 19. Ví dụ sau sẽ đưa ra vị trí giống như trong đoạn mã trước, nhưng ít CSS hơn nhiều. Giá trị trước ký tự gạch chéo lên ( 0) là dòng bắt đầu, giá trị sau dòng kết thúcBạn có thể bỏ qua giá trị kết thúc nếu khu vực chỉ kéo dài một rãnh 8ô lướiÔ lưới là đơn vị nhỏ nhất trên lưới. Về mặt khái niệm, nó giống như một ô của bảng. Như chúng ta đã thấy trong các ví dụ trước của mình, khi một lưới được xác định là cha, các mục con sẽ tự sắp xếp trong một ô của mỗi lưới đã xác định. Trong hình bên dưới, tôi đã đánh dấu ô đầu tiên của lưới Khu vực lướiCác mục có thể mở rộng một hoặc nhiều ô theo hàng hoặc theo cột và điều này tạo ra một vùng lưới. Vùng lưới phải là hình chữ nhật – chẳng hạn như không thể tạo vùng hình chữ L. Vùng lưới được đánh dấu kéo dài hai hàng và hai cột máng xốiMáng xối hoặc ngõ giữa các ô lưới có thể được tạo bằng cách sử dụng thuộc tính 1 và 2 hoặc viết tắt 3. Trong ví dụ bên dưới, tôi đang tạo khoảng cách 10 pixel giữa các cột và khoảng cách 4 giữa các hàng 9Ghi chú. Khi lưới lần đầu tiên xuất hiện trong các trình duyệt, 1, 2 và 3 được đặt trước bằng tiền tố 8 lần lượt là 9, 0 và 1Tất cả các trình duyệt hiện hỗ trợ các giá trị không có tiền tố, tuy nhiên các phiên bản có tiền tố sẽ được duy trì dưới dạng bí danh để sử dụng chúng an toàn
1Bất kỳ khoảng trống nào được sử dụng bởi các khoảng trống sẽ được tính trước khi khoảng trống được chỉ định cho các rãnh 2 có độ dài linh hoạt và các khoảng trống hoạt động cho các mục đích định cỡ như một rãnh lưới thông thường, tuy nhiên bạn không thể đặt bất kỳ thứ gì vào khoảng trống. Về mặt định vị dựa trên đường, khoảng cách hoạt động giống như một đường dàylưới lồng nhauMột grid item có thể trở thành grid container. Trong ví dụ sau, tôi có lưới ba cột mà tôi đã tạo trước đó, với hai mục được định vị. Trong trường hợp này, mục đầu tiên có một số mục con. Vì các mục này không phải là con trực tiếp của lưới nên chúng không tham gia vào bố cục lưới và do đó hiển thị trong luồng tài liệu bình thường Làm tổ không có lưới conNếu tôi đặt 3 thành 4, tôi có thể cung cấp cho nó một định nghĩa về bản nhạc và nó cũng sẽ trở thành một lưới. Sau đó, các mục sẽ được bố trí trên lưới mới này 2 3 4Trong trường hợp này, lưới lồng nhau không có mối quan hệ với cha mẹ. Như bạn có thể thấy trong ví dụ, nó không kế thừa 3 của lưới cha và các dòng trong lưới lồng nhau không thẳng hàng với các dòng trong lưới chalưới conTrong bản nháp làm việc của đặc tả Lưới cấp 2, có một tính năng được gọi là lưới con, tính năng này sẽ cho phép chúng tôi tạo các lưới lồng nhau sử dụng định nghĩa rãnh của lưới mẹ Ghi chú. Tính năng này được cung cấp trong Firefox 71, hiện là trình duyệt duy nhất triển khai lưới con Trong thông số kỹ thuật hiện tại, chúng tôi sẽ chỉnh sửa ví dụ lưới lồng nhau ở trên để thay đổi định nghĩa theo dõi của 6, thành 7. Sau đó, lưới lồng nhau sẽ sử dụng các rãnh lưới chính để bố trí các mục 5Phân lớp các mục với chỉ mục zCác mục lưới có thể chiếm cùng một ô và trong trường hợp này, chúng ta có thể sử dụng thuộc tính 3 để kiểm soát thứ tự sắp xếp các mục chồng chéoChồng chéo mà không có chỉ mục zNếu chúng ta quay lại ví dụ của mình với các mục được định vị theo số dòng, chúng ta có thể thay đổi điều này để làm cho hai mục chồng lên nhau 6 7 8Mục 9 hiện đang chồng lên 3, mục này sẽ hiển thị ở trên cùng khi xuất hiện sau theo thứ tự nguồnKiểm soát đơn hàngChúng tôi có thể kiểm soát thứ tự các mục xếp chồng lên nhau bằng cách sử dụng thuộc tính 3 - giống như các mục được định vị. Nếu chúng tôi cung cấp cho 9 một 3 thấp hơn so với 3, nó sẽ hiển thị bên dưới 3 trong ngăn xếp 9 6 8Bước tiếp theoTrong bài viết này, chúng tôi đã xem xét rất nhanh các khả năng của bố cục lưới. Khám phá và chơi với các ví dụ mã, sau đó chuyển sang phần tiếp theo của hướng dẫn này, nơi chúng ta sẽ thực sự bắt đầu tìm hiểu chi tiết về Bố cục lưới CSS Giá trị của 1FR trong CSS là gì?1FR = 1/3 hoặc 33. 333% dung lượng trống . Không gian có sẵn là gì? .
Có bao nhiêu pixel là 1FR?Bây giờ chúng ta biết rằng mỗi đơn vị fr đại diện cho 225px
Fr được tính CSS như thế nào?đơn vị Fr tính toán dựa trên không gian có sẵn. Đầu tiên, nó sẽ trừ khoảng cách lưới khỏi tổng chiều rộng rồi tính toán tỷ lệ . khoảng cách lưới. 20px; .
Fr trong Flex là gì?Cú pháp. Kiểu dữ liệu Đơn vị fr đại diện cho một phần không gian còn lại trong vùng chứa lưới . Như với tất cả các kích thước CSS, không có khoảng cách giữa đơn vị và số. |