Lưới linh hoạt trong bố cục đáp ứng là gì? Tại sao CSS Grid tốt hơn khung Bootstrap? Các vùng lưới được đặt tên

Từ tác giả: bài viết từ khái niệm về bố cục loạt bài Lưới CSS. Trong các bài học trước, chúng ta đã học cú pháp lưới, học một số cách sắp xếp các thành phần trên một trang và tạm biệt một số thói quen cũ. Trong hướng dẫn này, chúng tôi sẽ áp dụng tất cả kiến ​​thức của mình vào thực tế để tạo ra một bố cục đáp ứng.

Truy vấn phương tiện truyền thông

Hãy lấy bản demo từ bài học trước.

Trang bao gồm hai lưới: lưới chính và một lưới được lồng bên trong một trong các phần tử. Chúng tôi có thể kiểm soát các mắt lưới của mình bằng cách sử dụng truy vấn phương tiện. Điều này có nghĩa là chúng ta hoàn toàn có thể xây dựng lại bố cục để phù hợp với chiều rộng màn hình khác.

Chúng ta sẽ bắt đầu bằng việc sao chép phần khai báo của lưới đầu tiên. Hãy gói bản sao trong truy vấn phương tiện bằng kỹ thuật ưu tiên thiết bị di động. Tôi tùy ý lấy 500px làm điểm chuyển tiếp.

Grid-1 ( /* kiểu lưới */ ) chỉ có màn hình @media và (độ rộng tối thiểu: 500px) ( .grid-1 ( /* kiểu lưới */ ) )

Bây giờ chúng ta sẽ thay đổi lưới trong quảng cáo đầu tiên để đặt mọi thứ vào một cột. Chúng tôi đặt một cột bằng thuộc tính Grid-template-columns. Kiểm tra xem bốn hàng của chúng tôi có được đặt bằng thuộc tính Grid-template-rows không và khớp với bố cục bằng thuộc tính Grid-template-areas:

Lưới-1 ( hiển thị: lưới; chiều rộng: 100%; lề: 0 tự động; lưới-mẫu-cột: 1fr; lưới-mẫu-hàng: 80px tự động tự động 80px; khoảng cách lưới: 10px; khu vực mẫu lưới: " tiêu đề" "chính" "thanh bên" "chân trang"; )

Lưới - 1 (

hiển thị:lưới;

chiều rộng: 100%;

lề: 0 tự động;

lưới - mẫu - cột : 1fr ;

lưới - mẫu - hàng: 80px tự động tự động 80px;

khoảng cách lưới: 10px;

lưới - mẫu - khu vực: "tiêu đề"

"chủ yếu"

"thanh bên"

"chân trang" ;

Để vừa với màn hình nhỏ, chúng tôi đặt khoảng cách lưới thành 10px theo mặc định. Đây là những gì chúng tôi có. Bạn cũng nên chú ý rằng chúng tôi thay đổi thuộc tính đệm và cỡ chữ trong các phần tử div .grid-1 bằng truy vấn phương tiện.

Lưới lồng nhau của chúng tôi

Đoạn mã trên sửa đổi bố cục chính của chúng tôi. Tuy nhiên, chúng ta vẫn có một lưới lồng nhau kiên quyết từ chối loại bỏ hai cột của nó trên bất kỳ màn hình nào. Để khắc phục điều này, chúng tôi sẽ thực hiện chính xác điều tương tự, nhưng lấy một điểm chuyển tiếp khác bằng phương pháp ưu tiên nội dung:

Mục-2 ( /* kiểu lưới */ ) màn hình chỉ @media và (độ rộng tối thiểu: 600px) ( .item-2 ( /* kiểu lưới */ ) )

Nếu chúng ta làm lại bản demo tự động điền và thay đổi độ rộng cột thành minmax(9em, 1fr), thì lưới sẽ cố gắng vừa với nhiều rãnh có chiều rộng 9em nhất có thể, sau đó mở rộng chúng thành 1fr cho đến khi toàn bộ vùng chứa đầy:

Nhược điểm: Lưới sẽ chỉ tính toán lại các bản nhạc sau khi khởi động lại chứ không phải khi chiều rộng cửa sổ thay đổi. Hãy thử thu hẹp cửa sổ trình duyệt của bạn và làm mới trang. Để thay đổi giá trị, bạn có thể kết nối truy vấn phương tiện nhưng chúng không hoạt động tốt khi thay đổi độ rộng của cửa sổ trình duyệt.

Phần kết luận

Hãy tóm tắt tất cả những điều trên trong một danh sách:

Truy vấn phương tiện cho phép chúng tôi xây dựng lại hoàn toàn lưới bằng cách thay đổi thuộc tính Grid-template-areas (và các thuộc tính khác) cho các trường hợp khác nhau.

Thuộc tính chuyển tiếp không ảnh hưởng đến bố cục lưới.

Tốt để đổ đầy thùng lưới từ khóa tự động điền

Hàm minmax() là một bổ sung tuyệt vời cho tính năng tự động hoàn thành nhưng nó không mang lại cho chúng ta khả năng thích ứng thực sự.

Bây giờ bạn đã sẵn sàng làm việc với mắt lưới! Hãy theo dõi để biết thêm các bài viết về Lưới CSS, bài tập thực hành và giải pháp cho các vấn đề về lưới thường gặp.

Tôi nhận thấy kỹ thuật Grids khoảng một năm trước. Sau đó, kỹ thuật này, sau một nghiên cứu rất hời hợt, dường như vô dụng và mang tính thử nghiệm đối với tôi; tôi cảm thấy khó chịu vì thực tế là để triển khai, cần phải tạo thêm đánh dấu. Nhưng giờ đây, việc không chú ý đến số lượng trang web được xây dựng trên lưới cũng như số lượng bài viết và hướng dẫn về nó đang trở nên khó khăn. Nhờ có phần sau, việc nghiên cứu và hiểu các nguyên tắc và khái niệm cũng như rút ra ít nhiều kết luận thực tế đã trở nên dễ dàng hơn nhiều. Kết luận của tôi một năm sau đó là: “Thật đơn giản và giải pháp hữu ích từng được tạo ra để bố trí các trang web, mọi nhà thiết kế web có lòng tự trọng đều nên biết.”

Bất cứ ai đã từng làm việc với lưới đều biết lưới là gì. biên tập viên đồ họa (Photoshop, Pháo hoa, Gimp, v.v.) và tất nhiên đánh giá cao sự cần thiết của nó khi tạo ra bất kỳ thiết kế nào. Nhưng làm cách nào để triển khai Lưới trên web? Trong thực tế dạng bảng bố cục là một thiết kế trang web thực sự với Lưới, chắc chắn là rất tiện lợi. Nhưng không phải mục đích sử dụng của các yếu tố bàn thật kinh khủng.
May mắn thay, sự phổ biến to lớn của các tiêu chuẩn web đã tăng lên và tiếp tục phát triển qua những năm trước, cũng như sự hỗ trợ của chúng trong các trình duyệt hiện đại, đã cho chúng tôi cơ hội tạo các trang đa chức năng với rất ít đánh dấu hợp lý. Cách bố trí này được gọi Khối. Nhưng cũng Khối bố cục hóa ra là Mặt yếu. Khi tạo các trang với một tập hợp khổng lồ các phần tử có kích thước và ý nghĩa khác nhau, việc đánh dấu các trang như vậy đã trở thành một nhiệm vụ rất khó khăn và nếu có nhiều người làm việc đánh dấu, công việc đó có thể trở thành một cơn ác mộng.
Và rồi kỹ thuật sử dụng Lưới đã ra tay giải cứu. Kỹ thuật này là sự kết hợp giữa Khốidạng bảng cách trình bày. Sử dụng nó mang lại cho chúng tôi:

  • tốc độ và dễ dàng phát triển
  • tự do định vị
  • tỷ lệ của các thành phần trang và vị trí của chúng
Giá cho tất cả điều này chỉ là một chút đánh dấu thêm. Tôi nghĩ ngày nay, khi giá đồng hồ của một người đắt hơn nhiều so với phần cứng và năng suất, không khó để đoán được cán cân đang nghiêng về phía nào.

Bố cục với Grid là gì? Trước hết, đó là một khái niệm. Một khái niệm bao gồm nhiều khía cạnh thiết kế và rất ít quy tắc để thực hiện nó. Điều này mang lại sự tự do hoàn toàn và không có tiêu chuẩn hóa trong việc thực hiện nó. Tôi sẽ nói nhiều hơn nữa - cùng một Grid có thể được triển khai nhiều nhất những cách khác. Nếu bạn đã đọc về Grid, bạn có thể nhận thấy rằng mỗi tác giả đều bắt đầu từ một góc độ mới, đi sâu vào các chi tiết, nói một cách nhẹ nhàng thì khó hiểu. May mắn thay họ bắt đầu xuất hiện Hệ thống lưới - Thư viện CSS và để làm việc với Grid. Và sử dụng ví dụ của họ, bạn có thể nhanh chóng thành thạo nguyên tắc cơ bản kỹ thuật này.

Tôi nghĩ thật vô nghĩa khi viết về tất cả các khía cạnh của Lưới; bạn có thể dễ dàng tìm thấy thông tin về nó trên Internet. Tôi khuyên bạn nên tạo đơn giản của riêng bạn Hệ thống lưới điện.

Trước tiên, bạn cần hiểu rằng lưới bao gồm các cột và khoảng cách giữa chúng. Có ba giá trị chính - chiều rộng lưới, chiều rộng cột và chiều rộng khoảng cách giữa các cột. Chiều rộng của các cột phụ thuộc vào số lượng của chúng.

Hãy thử tạo một lưới rộng 950 pixel với 16 cột có khoảng cách 10 pixel, do đó, một cột phải rộng 50 pixel. Sau khi hiểu tất cả các giá trị, chúng tôi mở bất kỳ trình soạn thảo đồ họa nào mà chúng tôi biết và tạo bố cục. Bạn cũng có thể thêm phần đệm vào Lưới ở bên trái và bên phải, giả sử mỗi phần là 20 pixel và điều này sẽ dẫn đến bố cục có chiều rộng là 990 pixel. Bạn có thể xem ví dụ của tôi.

Bây giờ chúng ta có thể bắt đầu tạo thư viện của mình. Giống như hầu hết các thư viện CSS của chúng tôi cần thiết lập lại toàn cục, tôi đề xuất Thiết lập lại CSS của Eric Mayer, giữ nguyên đặt lại.css hãy tạo ra lưới.css mà chúng ta có thể thêm ngay một phương pháp làm sạch các thùng chứa khối nổi - Clear Fix. Điều đầu tiên chúng ta cần là một quy tắc cho vùng chứa sẽ chứa tất cả các cột của chúng ta. Chiều rộng của mỗi vùng chứa bằng chiều rộng của lưới của chúng tôi.

.thùng đựng hàng(
lề: 0 tự động;
chiều rộng: 950px;
}

Bây giờ chúng ta có thể thêm quy tắc cho các cột của mình, nó chứa chiều rộng và phần đệm. Thụt lề hoạt động như một khoảng trống (mương nước) giữa các cột.
.cột(
nổi: trái;
lề phải: 10px;
tràn: ẩn;
chiều rộng: 50px;
}

Cột cuối cùng không cần thụt lề; để thực hiện việc này, hãy thêm quy tắc cho cột đó:

Container của chúng ta chứa các cột, các cột là các khối nổi nên phải được làm sạch. Để tránh .clearfix không cần thiết trong đánh dấu, bạn có thể áp dụng quy tắc này cho vùng chứa:
.clearfix:sau .container:sau{
nội dung: ".";
hiển thị: khối;
chiều cao: 0;
rõ ràng: cả hai;
khả năng hiển thị: ẩn;
}

sửa chữa rõ ràng, .thùng đựng hàng( hiển thị: khối nội tuyến; )

/* Ẩn khỏi IE-mac \*/
*html.clearfix, *html.container(chiều cao: 1%;)
.clearfix, .thùng đựng hàng(hiển thị: khối;)
/* Kết thúc việc ẩn khỏi IE-mac */


Bây giờ chúng ta có thể bắt đầu với các cột của mình. Cột có thể rộng hai hoặc ba, v.v. Để làm điều này, chúng ta có thể áp dụng các quy tắc sau cho chúng:
.span-1 ( chiều rộng: 50px; )
.span-2 (chiều rộng: 110px; )
.span-3 (chiều rộng: 170px; )
.span-4 (chiều rộng: 230px; )
.span-5 (chiều rộng: 290px; )
.span-6 (chiều rộng: 350px; )
.span-7 (chiều rộng: 410px; )
.span-8 (chiều rộng: 470px; )
.span-9 (chiều rộng: 530px; )
.span-10 (chiều rộng: 590px; )
.span-11 (chiều rộng: 650px; )
.span-12 (chiều rộng: 710px; )
.span-13 (chiều rộng: 770px; )
.span-14 (chiều rộng: 830px; )
.span-15 (chiều rộng: 890px; )
.span-16 ( chiều rộng: 950px; lề phải: 0; )

Về nguyên tắc, đây là tất cả những gì cần thiết cho việc triển khai Lưới; bạn cũng có thể thêm trình bao bọc và lớp để xem Lưới bằng bố cục. Hãy tạo ra chính.css và thêm vào nó:
.vỏ bánh(
lề: 0 tự động;
chiều rộng: 990px;
}
.overlay(
nền: url trong suốt (overlay.png) lặp lại-y cuộn trên cùng bên trái;
}

Đây là cách bố trí có thể trông như thế nào:


Tôi nghĩ điều này là đủ cho một sự khởi đầu.
Bạn có thể xem ví dụ của tôi

Tôi nhận thấy kỹ thuật Grids khoảng một năm trước. Sau đó, kỹ thuật này, sau một nghiên cứu rất hời hợt, dường như vô dụng và mang tính thử nghiệm đối với tôi; tôi cảm thấy khó chịu vì thực tế là để triển khai, cần phải tạo thêm đánh dấu. Nhưng giờ đây, việc không chú ý đến số lượng trang web được xây dựng trên lưới cũng như số lượng bài viết và hướng dẫn về nó đang trở nên khó khăn hơn. Nhờ có phần sau, việc nghiên cứu và hiểu các nguyên tắc và khái niệm cũng như rút ra ít nhiều kết luận thực tế đã trở nên dễ dàng hơn nhiều. Kết luận của tôi một năm sau đó là: “Mọi nhà thiết kế web có lòng tự trọng nên biết giải pháp đơn giản và hữu ích này từng được tạo ra để bố cục các trang web”.

Bất cứ ai đã từng làm việc với các biên tập viên đồ họa đều biết lưới là gì. (Photoshop, Pháo hoa, Gimp, v.v.) và tất nhiên đánh giá cao sự cần thiết của nó khi tạo ra bất kỳ thiết kế nào. Nhưng làm cách nào để triển khai Lưới trên web? Trong thực tế dạng bảng bố cục là một thiết kế trang web thực sự với Lưới, chắc chắn là rất tiện lợi. Nhưng không phải mục đích sử dụng của các yếu tố bàn thật kinh khủng.
May mắn thay, sự phổ biến rộng rãi của các tiêu chuẩn web đã phát triển và tiếp tục phát triển trong những năm gần đây, cũng như sự hỗ trợ của chúng trong các trình duyệt hiện đại, đã cho chúng ta cơ hội tạo ra các trang có chức năng phong phú với rất ít đánh dấu logic. Cách bố trí này được gọi Khối. Nhưng cũng Khối bố cục hóa ra là một điểm yếu. Khi tạo các trang với một tập hợp khổng lồ các phần tử có kích thước và ý nghĩa khác nhau, việc đánh dấu các trang như vậy đã trở thành một nhiệm vụ rất khó khăn và nếu có nhiều người làm việc đánh dấu, công việc đó có thể trở thành một cơn ác mộng.
Và rồi kỹ thuật sử dụng Lưới đã ra tay giải cứu. Kỹ thuật này là sự kết hợp giữa Khốidạng bảng cách trình bày. Sử dụng nó mang lại cho chúng tôi:

  • tốc độ và dễ dàng phát triển
  • tự do định vị
  • tỷ lệ của các thành phần trang và vị trí của chúng
Giá cho tất cả điều này chỉ là một chút đánh dấu thêm. Tôi nghĩ ngày nay, khi giá đồng hồ của một người đắt hơn nhiều so với phần cứng và năng suất, không khó để đoán được cán cân đang nghiêng về phía nào.

Bố cục với Grid là gì? Trước hết, đó là một khái niệm. Một khái niệm bao gồm nhiều khía cạnh thiết kế và rất ít quy tắc để thực hiện nó. Điều này mang lại sự tự do hoàn toàn và không có tiêu chuẩn hóa trong việc thực hiện nó. Tôi sẽ nói nhiều hơn nữa - cùng một Grid có thể được triển khai theo nhiều cách khác nhau. Nếu bạn đã đọc về Grid, bạn có thể nhận thấy rằng mỗi tác giả đều bắt đầu từ một góc độ mới, đi sâu vào các chi tiết, nói một cách nhẹ nhàng thì khó hiểu. May mắn thay họ bắt đầu xuất hiện Hệ thống lưới- Thư viện CSS để làm việc với Grid. Và sử dụng ví dụ của họ, bạn có thể nhanh chóng nắm vững các nguyên tắc cơ bản của kỹ thuật này.

Tôi nghĩ thật vô nghĩa khi viết về tất cả các khía cạnh của Lưới; bạn có thể dễ dàng tìm thấy thông tin về nó trên Internet. Tôi khuyên bạn nên tạo đơn giản của riêng bạn Hệ thống lưới điện.

Trước tiên, bạn cần hiểu rằng lưới bao gồm các cột và khoảng cách giữa chúng. Có ba giá trị chính - chiều rộng lưới, chiều rộng cột và chiều rộng khoảng cách giữa các cột. Chiều rộng của các cột phụ thuộc vào số lượng của chúng.

Hãy thử tạo một lưới rộng 950 pixel với 16 cột có khoảng cách 10 pixel, do đó, một cột phải rộng 50 pixel. Sau khi hiểu tất cả các giá trị, chúng tôi mở bất kỳ trình soạn thảo đồ họa nào mà chúng tôi biết và tạo bố cục. Bạn cũng có thể thêm phần đệm vào Lưới ở bên trái và bên phải, giả sử mỗi phần là 20 pixel và điều này sẽ dẫn đến bố cục có chiều rộng là 990 pixel. Bạn có thể xem ví dụ của tôi.

Bây giờ chúng ta có thể bắt đầu tạo thư viện của mình. Giống như hầu hết các thư viện CSS của chúng tôi cần thiết lập lại toàn cục, tôi đề xuất Thiết lập lại CSS của Eric Mayer, giữ nguyên đặt lại.css hãy tạo ra lưới.css mà chúng ta có thể thêm ngay một phương pháp làm sạch các thùng chứa khối nổi - Clear Fix. Điều đầu tiên chúng ta cần là một quy tắc cho vùng chứa sẽ chứa tất cả các cột của chúng ta. Chiều rộng của mỗi vùng chứa bằng chiều rộng của lưới của chúng tôi.

.thùng đựng hàng(
lề: 0 tự động;
chiều rộng: 950px;
}

Bây giờ chúng ta có thể thêm quy tắc cho các cột của mình, nó chứa chiều rộng và phần đệm. Thụt lề hoạt động như một khoảng trống (mương nước) giữa các cột.
.cột(
nổi: trái;
lề phải: 10px;
tràn: ẩn;
chiều rộng: 50px;
}

Cột cuối cùng không cần thụt lề; để thực hiện việc này, hãy thêm quy tắc cho cột đó:

Container của chúng ta chứa các cột, các cột là các khối nổi nên phải được làm sạch. Để tránh .clearfix không cần thiết trong đánh dấu, bạn có thể áp dụng quy tắc này cho vùng chứa:
.clearfix:sau .container:sau{
nội dung: ".";
hiển thị: khối;
chiều cao: 0;
rõ ràng: cả hai;
khả năng hiển thị: ẩn;
}

sửa chữa rõ ràng, .thùng đựng hàng( hiển thị: khối nội tuyến; )

/* Ẩn khỏi IE-mac \*/
*html.clearfix, *html.container(chiều cao: 1%;)
.clearfix, .thùng đựng hàng(hiển thị: khối;)
/* Kết thúc việc ẩn khỏi IE-mac */


Bây giờ chúng ta có thể bắt đầu với các cột của mình. Cột có thể rộng hai hoặc ba, v.v. Để làm điều này, chúng ta có thể áp dụng các quy tắc sau cho chúng:
.span-1 ( chiều rộng: 50px; )
.span-2 (chiều rộng: 110px; )
.span-3 (chiều rộng: 170px; )
.span-4 (chiều rộng: 230px; )
.span-5 (chiều rộng: 290px; )
.span-6 (chiều rộng: 350px; )
.span-7 (chiều rộng: 410px; )
.span-8 (chiều rộng: 470px; )
.span-9 (chiều rộng: 530px; )
.span-10 (chiều rộng: 590px; )
.span-11 (chiều rộng: 650px; )
.span-12 (chiều rộng: 710px; )
.span-13 (chiều rộng: 770px; )
.span-14 (chiều rộng: 830px; )
.span-15 (chiều rộng: 890px; )
.span-16 ( chiều rộng: 950px; lề phải: 0; )

Về nguyên tắc, đây là tất cả những gì cần thiết cho việc triển khai Lưới; bạn cũng có thể thêm trình bao bọc và lớp để xem Lưới bằng bố cục. Hãy tạo ra chính.css và thêm vào nó:
.vỏ bánh(
lề: 0 tự động;
chiều rộng: 990px;
}
.overlay(
nền: url trong suốt (overlay.png) lặp lại-y cuộn trên cùng bên trái;
}

Đây là cách bố trí có thể trông như thế nào:


Tôi nghĩ điều này là đủ cho một sự khởi đầu.
Bạn có thể xem ví dụ của tôi

Đặc biệt đối với người dùng trang web, chúng tôi cung cấp bài học thực tế về cách sử dụng hệ thống Lưới 960. Hãy tưởng tượng rằng chúng ta được giao một bản thiết kế bố cục. Đầu tiên, chúng ta phải phác thảo kế hoạch triển khai cấu trúc trang web và chỉ sau đó mới tiến hành viết mã trực tiếp. Sau khi nghiên cứu bài viết này, bạn sẽ có thể xử lý mọi kiểu tóc cổ điển trong thời gian ngắn nhất và màu tóc tự nhiên trong nhiều năm (không có tóc bạc). Vì vậy, đây là thiết kế của chúng tôi:

1. Tạo lưới

Như bạn đã biết, hệ thống 960 Grid sử dụng toàn bộ các lớp và có sẵn trong một số biến thể (phiên bản 12 cột và 16 cột). Vùng chứa chính, bất kể số lượng cột, sẽ luôn rộng 960px. Đối với thiết kế này, chúng tôi sẽ chọn hệ thống 12 cột. Mỗi khối trong hệ thống 960 Grid có lề(lề) 0 10px. Điều này đảm bảo cho chúng tôi phần đệm đồng đều, tỷ lệ 20px. Đối với những người đang bối rối bởi kích thước 960px, tôi khuyên bạn nên xem sơ đồ này. Kích thước này là tối ưu cho phần lớn độ phân giải màn hình. Vì vậy, chúng tôi có khả năng tạo các khối có chiều rộng này:

  • 140px
  • 220px
  • 300px
  • 380px
  • 460px
  • 540px
  • 620px
  • 700px
  • 780px
  • 860px
  • 940px

Mỗi kích thước có lớp riêng, tên của nó được đặt theo sơ đồ Grid_X, trong đó X là số cột. Nếu bạn cần khối 960px thì bạn nên chọn lớp Grid_12. Để kích hoạt hệ thống 960 Grid, bạn phải vùng chứa gốcđặt lớp container_12 hoặc container 16. Dưới đây là ví dụ nhỏ trang gồm 3 khối. Chiều rộng của cái đầu tiên bằng chiều rộng 960px, 2 cái còn lại lớn bằng một nửa:

Hãy nhớ rằng khi bạn lấp đầy một hàng bằng các khối có lớp Grid_X, hãy đảm bảo rằng tổng cộng chúng không quá 12. Ví dụ: như chúng ta có - hai khối Grid_6 + Grid_6 = 12. Có thể ít hơn: 6, 4 , 2, v.v. d. Bây giờ chúng ta đã xem qua các nguyên tắc cơ bản, chúng ta có thể bắt đầu bài tập thực tế:

2. Tạo một mô hình

Chúng ta hãy thử xây dựng một sơ đồ về những gì chúng ta cần tạo nên. Trước hết chúng ta cần 2 khối 960px. Một cho logo, một cho điều hướng. Tiếp theo là 2 khối (trên một dòng), dành cho áp phích và bản trình bày trang web, khối phân cách (toàn bộ chiều rộng), 4 cột (trên một dòng), lại là khối phân cách và chân trang. Một cái gì đó như thế này:

Tôi nghĩ sau khi xem hình ảnh bạn đã biết chúng tôi cần những lớp học nào. Hãy tự mình thử chúng, sau đó xem mã bên dưới để xem bạn có nghĩ đúng không:

Hãy nhớ rằng ở cuối mỗi dòng chúng ta cần chèn

để hiển thị bình thường trong tất cả các trình duyệt. Đừng quên đưa CSS 960 Grid vào trang của bạn trong phần đầu.

Vậy là bộ xương đã sẵn sàng, vì vậy đã đến lúc bắt đầu trang trí. Đặt chiều cao và màu nền bộ tách khối. Chiều cao của khối menu sẽ phụ thuộc vào chính menu đó. Ngoài ra, đừng quên thêm logo của bạn:

Div.spacer ( màu nền: #8FC73E; chiều cao: 1em; ) div#navbar ( màu nền: #8FC73E; phần đệm: 10px 0; )

Đây là những gì chúng ta sẽ nhận được:

Hiện tại chúng tôi không quan tâm đến thông tin chút nào nên bạn có thể chèn nội dung từ đây vào các cột trung tâm trang này. Trước khi bạn bắt đầu phần trên cùng, hãy chăm sóc phần dưới cùng. Trong thiết kế của chúng tôi, nền chân trang có màu màu xám. TRÊN khoảnh khắc này chúng tôi không thể thực hiện điều này bởi vì nếu bạn nhớ, có một số vết lõm giữa các khối sẽ không cho phép chúng tôi sơn hoàn toàn lên khu vực này. Để giải quyết vấn đề này chúng ta hãy di chuyển 3 khối liên quan đến footer thành các khối riêng biệt với id = footer. Một chi tiết nữa: khi chúng ta sử dụng các lớp trong các lớp, sẽ rất tốt nếu đặt các giá trị alpha (để cho biết khối nào sẽ là khối đầu tiên và omega - cho khối cuối cùng):

Div#footer ( màu nền: #e5e5e6; )

Hoàn hảo! Chân trang của chúng tôi bây giờ có màu nền. Thêm một số văn bản vào đó và chuyển sang khối điều hướng. Theo tất cả các luật nguyên tắc hiện đại bố cục, điều hướng là một danh sách không đánh số. Thêm mã và kiểu sau:

  • Bài viết
  • chủ đề
  • Về
  • biên tập viên
  • Liên hệ

Div#navbar ul ( kiểu danh sách: không; hiển thị: khối; lề: 0 10px; ) div#navbar ul li ( float: left; lề: 0 1.5em; phông chữ: đậm 1em Arial; )

Mát mẻ! Mọi thứ đang diễn ra tốt đẹp với chúng tôi. Tất cả những gì còn lại là một khối có áp phích và bản trình bày về trang web, nhưng trước khi chúng tôi bắt đầu triển khai chúng, tôi muốn nói vài lời về các khung CSS nói chung.

3. CSS framework sẽ không giải quyết được mọi vấn đề của bạn

Trước khi bắt đầu bố trí thiết kế của mình bằng khung CSS, bạn nên tính đến một số nhược điểm của các hệ thống này. Đọc bài viết này bạn không thể không chú ý rằng các quy tắc xây dựng trang rất nghiêm ngặt. Mọi thứ đều có kích thước cố định riêng. Khi bạn thay đổi độ rộng của một khối, bạn phải thay đổi các khối khác. Trong mọi trường hợp, một cái gì đó phải được hy sinh. Ví dụ: bạn sẽ làm gì nếu bạn có thiết kế 1000px và Lưới 960 cho phép bạn tạo chiều rộng tối đa là 960px... Và bạn muốn 1000px! Nếu không có sự thay đổi mã lớn thì điều này không thể thực hiện được. Ví dụ: khách hàng muốn có một trang web rộng hơn hoặc nhà thiết kế không đồng ý với cách triển khai của bạn. Có một vấn đề khác liên quan đến chiều cao của loa. Nếu ba cột có cùng màu nền (như phần chân trang của chúng ta) thì các cột này cần phải được cùng chiều cao. Một nhược điểm đáng kể khác: việc sử dụng thêm thụt lề và tạo khung dẫn đến phá hủy toàn bộ bố cục. Để thêm những gì cần thiết và không phá hủy bất cứ thứ gì, bạn cần phải bù đắp cho những kích thước đã thêm. Bây giờ tôi sẽ chỉ cho bạn cách. Hãy bắt đầu hoàn thiện phần trên cùng.

4. Phần trên

Trước tiên, hãy giải quyết vấn đề về chiều cao của cột - hãy sửa nó. Tiếp theo, hãy tạo các div trống trong khối này và khối khác. Chúng sẽ chứa một hình vẽ hoặc thông tin văn bản. Phần đệm Chúng tôi sẽ không cài đặt nó vì bạn có thể làm đảo lộn tỷ lệ chiều rộng lưới. Hãy tạo một thụt lề nhỏ bên ngoài cho thẻ p để văn bản trông đẹp mắt.

TRONG trong trường hợp nàyđối với kiểu dáng, tốt hơn là tạo một lớp thay vì ID, bởi vì chúng ta cần áp dụng nó cho một số khối. Nếu cần, điều này cũng sẽ cho phép chúng ta thay đổi chiều cao trong 2 lần đếm. Lớp học của chúng ta trông như thế này:

Div.topSection div ( viền: rắn 10px #e5e5e6; chiều cao: 280px; ) div.topSection div p ( lề: 10px; )

Mát mẻ! Hãy xem những gì chúng ta có:

Sẵn sàng để điền vào? Sau đó thêm một số văn bản vào khối bên trái, nhưng đừng lạm dụng nó để không vượt quá chiều cao. Trên thực tế, trong các dự án thực tế, người thiết kế phải tính toán tất cả những điều này (số lượng ký tự đáp ứng kích thước khối); Trước khi chèn một hình ảnh vào khối bên phải, bạn cần quyết định kích thước của nó, nếu bạn chưa làm như vậy. Điều này có thể được thực hiện sớm trong quá trình thiết kế hoặc thông qua FireBug. Nhấp vào Kiểm tra. Bấm vào div chúng ta cần. Chọn tab Bố cục. Sau này, bạn sẽ thấy tất cả thông tin bạn cần. Hình ảnh sau đây sẽ giúp bạn:

Trong ảnh chụp màn hình, áp phích có kích thước 360x280. Tìm một hình ảnh và tạo kiểu cho nó:

Img#poster ( chiều rộng: 360px; chiều cao: 280px; )

Đó là tất cả! Mẫu đã sẵn sàng. Bây giờ tất cả những gì còn lại là điền nội dung thực vào đó và đăng trực tuyến:

5. Biết các lựa chọn của bạn

Bây giờ mọi thứ đã sẵn sàng, hãy tóm tắt. Lưới 960 cho phép chúng tôi tán một mẫu trong 15 phút. Mát mẻ? Đúng! Chúng tôi đã thử nghiệm nó trong IE6, IE7 chưa? KHÔNG! Phải? KHÔNG. Điều này chỉ là khởi đầu! Vậy bây giờ là gì? Bây giờ bạn cần cho khách hàng xem và xem phản ứng. Nếu anh ấy hài lòng với điều này thì chúng tôi có thể bắt đầu thử nghiệm, nhưng nếu không, và khách hàng muốn thứ gì đó phức tạp hơn thì anh ấy sẽ phải tự viết mọi thứ lại từ đầu. Tôi sẽ lặp lại nó một lần nữa. Khung CSS không giải quyết được mọi vấn đề. Mặc dù vậy, hàng nghìn nhà phát triển vẫn sử dụng chúng như một công cụ phát triển web thông thường vì giống như bất kỳ công cụ nào, khung CSS có lĩnh vực riêng dành cho ứng dụng rộng rãi. Trong mọi trường hợp, nếu yêu cầu thiết kế không quá cụ thể (80% trường hợp), thì sử dụng 960 Grid bạn có thể tiết kiệm rất nhiều thời gian - và thời gian là tiền bạc!

Tôi nghĩ bạn đã biết rằng Grid vượt trội hơn Flexbox trong việc tạo bố cục. Nhưng còn bố cục đáp ứng thì sao? Nên sử dụng Flexbox hay Grid cái nào tốt hơn? Cả hai đều có thể hoạt động với bố cục đáp ứng. Rốt cuộc, bạn có thể nghĩ Flexbox phù hợp hơn - Các vật phẩm Flex có thể kéo dài, co lại, thay đổi hướng, v.v. Nhưng Grid thực sự có một số thủ thuật mới sẽ giúp bạn tiết kiệm rất nhiều thời gian và rắc rối cho các bố cục đáp ứng.

Hàm tối thiểu

Cái đầu tiên thật rực rỡ công cụ mới Lưới, một hàm minmax cho phép chúng ta xác định phạm vi cho các cột và hàng trong bố cục của mình. Trong ví dụ này chúng ta có màu cam bảng điều khiển bên và chúng tôi muốn chiều rộng tối thiểu là 100 pixel nhưng không quá 30% chiều rộng của vùng chứa. Chiều rộng của vùng chứa là 500 pixel, vì vậy thanh bên của chúng tôi vui vẻ chiếm 30% (150 pixel).

Đây là cùng một mã, nhưng chiều rộng vùng chứa nhỏ hơn 150px. Bây giờ của chúng tôi giá trị tối thiểu kích hoạt và đảm bảo rằng thanh bên màu cam không nhỏ hơn 100 pixel.

Cách hoạt động của hàm minmax thật tuyệt vời, trong hầu hết các trường hợp, bạn thậm chí không cần sử dụng truy vấn phương tiện.

Chúng ta có thể đạt được hiệu quả tương tự bằng cách sử dụng Flexbox, nhưng phải mất một chút thời gian làm việc nhiều hơn và mã. Chúng ta phải sử dụng kết hợp flex-grow, min-width, max-width:

Phương pháp Grid linh hoạt hơn và dễ thích ứng hơn. Mã ít hơn gần hai lần.

Một quy tắc cho tất cả các yếu tố

Nếu bạn vẫn cần truy vấn phương tiện, với Bố cục lưới, thật dễ dàng để làm. Giả sử chúng tôi muốn thay đổi bố cục này thành thiết bị di động trong một cột. Với Flexbox, chúng ta sẽ cần thay đổi mọi thành phần trong bố cục để ghi đè chiều rộng tối thiểu. Không cần ghi đè chiều rộng tối đa vì chiều rộng tối thiểu được ưu tiên.

Nếu bạn có bố cục đơn giản, phương pháp này hoạt động khá tốt. Nhưng bố cục của bạn càng phức tạp thì nhiều yếu tố hơn sẽ cần phải được ghi đè thông qua các truy vấn phương tiện. Với sự trợ giúp của Grid, vấn đề này sẽ được giải quyết dễ dàng hơn nhiều.