Trang web đã được dịch tự động. Nếu có điều gì không rõ ràng, vui lòng xem tài liệu tiếng Anh.
Cách sử dụng cơ bản
Tải các tệp Gridzy lên máy chủ của bạn và thêm chúng vào trang web của bạn (thường là ở phần đầu):
<link rel="stylesheet" href="gridzy/gridzy.min.css" />
<script src="gridzy/gridzy.min.js"></script>Thêm mã HTML (bất cứ nơi nào trong phần nội dung):
<div class="gridzy">
<img src="https://loremflickr.com/640/480?random=1" alt="a random image" />
<img src="https://loremflickr.com/480/640?random=2" alt="another random image" />
<img src="https://loremflickr.com/640/640?random=3" alt="yet another random image" />
<img src="https://loremflickr.com/640/480?random=4" alt="a random image again" />
<img src="https://loremflickr.com/640/480?random=5" alt="one last random image" />
</div>Vậy là xong! Đây là ví dụ đầy đủ chức năng. Không cần khởi tạo thêm.
Cấu hình
Cách dễ nhất để cấu hình Gridzy là chỉ sử dụng các thuộc tính HTML. Bạn chỉ cần thêm tiền tố data-gridzy- vào tên tùy chọn. Vì vậy, để thiết lập tùy chọn spaceBetween , chỉ cần thêm thuộc tính data-gridzy-spaceBetween .
<div class="gridzy" data-gridzy-spaceBetween="20" data-gridzy-desiredHeight="400">
<img src="https://loremflickr.com/640/480?random=1" alt="a random image" />
<img src="https://loremflickr.com/480/640?random=2" alt="another random image" />
<img src="https://loremflickr.com/640/640?random=3" alt="yet another random image" />
<img src="https://loremflickr.com/640/480?random=4" alt="a random image again" />
<img src="https://loremflickr.com/640/480?random=5" alt="one last random image" />
</div>Tùy chọn chính
Justified Tùy chọn bố trí
Waterfall Tùy chọn bố trí
Tùy chọn nâng cao hơn
Để biết thêm các tùy chọn nâng cao, hãy xem API .
HTML ngữ nghĩa
Cấu trúc HTML đơn giản nhất của Gridzy là:
<div class="gridzy">
<img src="https://loremflickr.com/640/480?random=1" alt="a random image" />
<img src="https://loremflickr.com/480/640?random=2" alt="another random image" />
<img src="https://loremflickr.com/640/640?random=3" alt="yet another random image" />
<img src="https://loremflickr.com/640/480?random=4" alt="a random image again" />
<img src="https://loremflickr.com/640/480?random=5" alt="one last random image" />
</div>Tuy nhiên, Gridzy rất linh hoạt và bạn có thể sử dụng hầu như bất kỳ cấu trúc HTML nào khác. Chỉ có một vài điểm cần cân nhắc:
- Mỗi phần tử con của phần tử chứa đại diện cho một mục trong lưới.
- Cả phần tử container và phần tử con của nó đều có thể là bất kỳ loại thẻ nào, chẳng hạn như
ulvàli(chỉ cần cân nhắc đặt lại mặc định của trình duyệt). - Nếu phần tử
imgkhông phải là phần tử con trực tiếp thì nó cần có lớpgridzyImage.
Vì vậy, đây cũng là một cấu trúc HTML đang hoạt động:
<ul class="gridzy">
<li>
<span>
<img class="gridzyImage" src="https://loremflickr.com/640/480?random=1" alt="a random image" />
</span>
</li>
<li>
<span>
<img class="gridzyImage" src="https://loremflickr.com/480/640?random=2" alt="another random image" />
</span>
</li>
<li>
<span>
<img class="gridzyImage" src="https://loremflickr.com/640/640?random=3" alt="yet another random image" />
</span>
</li>
<li>
<span>
<img class="gridzyImage" src="https://loremflickr.com/640/480?random=4" alt="a random image again" />
</span>
</li>
<li>
<span>
<img class="gridzyImage" src="https://loremflickr.com/640/480?random=5" alt="one last random image" />
</span>
</li>
</ul>Đặc biệt nếu bạn muốn thêm chú thích, bạn cần một cấu trúc HTML nâng cao. Để tìm hiểu thêm về nó, hãy xem Captions & Skins .
Chú thích & Giao diện
Nếu bạn muốn thêm chú thích vào thư viện của mình, bạn cần phải xác định giao diện. Do đó, một số giao diện được xác định trước có sẵn. Mỗi giao diện bao gồm một tệp CSS. Bạn cần thêm tệp này ngoài các tệp Gridzy chính (thường ở phần đầu):
<link rel="stylesheet" href="gridzy/skins/gridzySkinClassic/style.min.css" />Ngoài ra, bạn cần có cấu trúc HTML nâng cao:
<div class="gridzy gridzySkinClassic">
<figure>
<img class="gridzyImage" src="https://loremflickr.com/640/480?random=1" alt="a random image" />
<figcaption class="gridzyCaption">a caption text</figcaption>
</figure>
<figure>
<img class="gridzyImage" src="https://loremflickr.com/480/640?random=2" alt="another random image" />
<figcaption class="gridzyCaption">another caption text</figcaption>
</figure>
<figure>
<img class="gridzyImage" src="https://loremflickr.com/640/640?random=3" alt="yet another random image" />
<figcaption class="gridzyCaption">yet another caption text</figcaption>
</figure>
<figure>
<img class="gridzyImage" src="https://loremflickr.com/640/480?random=4" alt="a random image again" />
<figcaption class="gridzyCaption">a caption text again</figcaption>
</figure>
<figure>
<img class="gridzyImage" src="https://loremflickr.com/640/480?random=5" alt="one last random image" />
<figcaption class="gridzyCaption">one last caption text</figcaption>
</figure>
</div>Nếu bạn thắc mắc về cấu trúc HTML, hãy tham khảo Semantic HTML .
Đối với chú thích, bạn có thể sử dụng bất kỳ loại thẻ nào, chỉ cần đảm bảo nó có lớp gridzyCaption . Phần tử img cần có lớp gridzyImage .
Ví dụ trên cho bạn thấy skin gridzySkinClassic . Để sử dụng skin khác, chỉ cần thay thế tên skin bằng một trong những tên sau:
Bao gồm Skins
| Các lớp học có sẵn | |
|---|---|
| gridzySkinTrống một điểm khởi đầu tốt để tạo ra một làn da riêng xem trước trực tiếp | gridzySkinBlank |
| gridzySkinClassic xem trước trực tiếp | gridzySkinClassic(KHÔNG CÒN SỬ DỤNG kể từ phiên bản 2.6.0) |
| gridzySkinFullOverlay xem trước trực tiếp | gridzySkinFullOverlay(KHÔNG CÒN SỬ DỤNG kể từ phiên bản 2.6.0) |
| gridzySkinLift xem trước trực tiếp | gridzySkinLift(KHÔNG CÒN SỬ DỤNG kể từ phiên bản 2.6.0) |
| gridzySkinMagnifier chức năng thu phóng không được bao gồm xem trước trực tiếp | gridzySkinMagnifier(KHÔNG CÒN SỬ DỤNG kể từ phiên bản 2.6.0) |
Tất cả các giao diện trên chỉ cần một tệp CSS, nhưng có những giao diện bổ sung cũng yêu cầu một tệp JavaScript:
<link rel="stylesheet" href="gridzy/skins/gridzySkinBlur/style.min.css" />
<script src="gridzy/skins/gridzySkinBlur/script.min.js"></script>| Các lớp học có sẵn | |
|---|---|
| gridzySkinBlur không hoạt động trong IE xem trước trực tiếp | gridzySkinBlur(KHÔNG CÒN SỬ DỤNG kể từ phiên bản 2.6.0) |
| gridzySkinCard xem trước trực tiếp | gridzySkinCard(KHÔNG CÒN SỬ DỤNG kể từ phiên bản 2.6.0) |
Tùy chọn da
Từ phiên bản 2.6.0, có các Tùy chọn để cấu hình giao diện tích hợp. Tùy thuộc vào giao diện cụ thể, bạn có thể đặt màu nền, màu chữ và bóng chữ. Bạn chỉ cần sử dụng các thuộc tính tùy chỉnh CSS như bạn có thể thấy ở đây:
<div class="gridzy gridzySkinClassic" style="--background: rgba(0, 80, 117, .8); --color: rgb(238, 238, 238); ">
<figure>
<img class="gridzyImage" src="https://loremflickr.com/640/480?random=1" alt="a random image" />
<figcaption class="gridzyCaption">a caption text</figcaption>
</figure>
<figure>
<img class="gridzyImage" src="https://loremflickr.com/480/640?random=2" alt="another random image" />
<figcaption class="gridzyCaption">another caption text</figcaption>
</figure>
...
</div>Kiểm tra các biến được hỗ trợ và giá trị mặc định cho từng giao diện tại đây:
gridzySkinClassic
| Biến đổi | Giá trị mặc định | Thông tin |
|---|---|---|
--background | rgba(0, 0, 0, .7) | cho phép bất kỳ giá trị nền CSS nào |
--color | rgb(255, 255, 255) | cho phép bất kỳ giá trị màu CSS nào |
--text-shadow | none | cho phép bất kỳ giá trị bóng văn bản CSS nào |
gridzySkinFullOverlay
| Biến đổi | Giá trị mặc định | Thông tin |
|---|---|---|
--background | rgba(0, 0, 0, .7) | cho phép bất kỳ giá trị nền CSS nào |
--color | rgb(255, 255, 255) | cho phép bất kỳ giá trị màu CSS nào |
--text-shadow | none | cho phép bất kỳ giá trị bóng văn bản CSS nào |
gridzySkinLift
| Biến đổi | Giá trị mặc định | Thông tin |
|---|---|---|
--background | rgba(0, 0, 0, .7) | cho phép bất kỳ giá trị nền CSS nào |
--color | rgb(255, 255, 255) | cho phép bất kỳ giá trị màu CSS nào |
--text-shadow | 0 0 10px rgb(0, 0, 0), 0 0 20px rgb(0, 0, 0), 0 0 30px rgb(0, 0, 0) | cho phép bất kỳ giá trị bóng văn bản CSS nào |
gridzySkinMagnifier
| Biến đổi | Giá trị mặc định | Thông tin |
|---|---|---|
--background | rgba(0, 0, 0, .7) | cho phép bất kỳ giá trị nền CSS nào |
--color | rgb(255, 255, 255) | cho phép bất kỳ giá trị màu CSS nào |
Giao diện này không hỗ trợ --text-shadow
gridzySkinBlur
| Biến đổi | Giá trị mặc định | Thông tin |
|---|---|---|
--background | rgba(0, 0, 0, .7) | cho phép bất kỳ giá trị nền CSS nào |
--color | rgb(255, 255, 255) | cho phép bất kỳ giá trị màu CSS nào |
--text-shadow | 0 0 10px rgb(0, 0, 0) | cho phép bất kỳ giá trị bóng văn bản CSS nào |
gridzySkinCard
| Biến đổi | Giá trị mặc định | Thông tin |
|---|---|---|
--background | rgba(0, 0, 0, 1) | cho phép bất kỳ giá trị nền CSS nào |
--color | rgb(255, 255, 255) | cho phép bất kỳ giá trị màu CSS nào |
--text-shadow | none | cho phép bất kỳ giá trị bóng văn bản CSS nào |
Tất cả các giao diện được xác định trước chỉ hỗ trợ chú thích văn bản đơn giản. Bạn có thể tạo giao diện phức tạp hơn và riêng của mình. Vui lòng xem Style Gridzy .
Phong cách Gridzy
Nếu không có giao diện nào phù hợp với nhu cầu của bạn, bạn có thể tự tạo giao diện cho riêng mình.
Cách dễ nhất là trước tiên hãy sao chép một giao diện hiện có và điều chỉnh theo nhu cầu của riêng bạn. Giao diện được xác định trước gridzySkinBlank thường cung cấp một nền tảng tốt cũng như một tài liệu hướng dẫn tốt trong tệp CSS:
/** SKIN Blank **/
/* all gallery items (direct children of the main container element) */
.gridzySkinBlank > .gridzyItem {
overflow: hidden;
}
/* all gallery images (predefined in Gridzy's main CSS file, but can be overridden) */
.gridzySkinBlank .gridzyImage {
}
/* all gallery captions (just create your very own style) */
.gridzySkinBlank .gridzyCaption {
margin: 0;
padding: .5em;
opacity: 0;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
position: absolute;
z-index: 1;
top: 0;
left: 0;
width: 100%;
height: 100%;
box-sizing: border-box;
transition: opacity .5s;
overflow: auto;
background: rgba(0, 0, 0, .7);
color: rgb(255, 255, 255);
}
.gridzySkinBlank > .gridzyItem:hover .gridzyCaption {
opacity: 1;
}Trong tệp CSS, bạn sẽ tìm thấy các lớp gridzySkinBlank , gridzyImage và gridzyCaption . Bản thân Gridzy không cần các lớp này. Chúng chỉ được sử dụng để tạo kiểu và do đó bạn có thể xóa hoặc đổi tên chúng nếu muốn.
Ngoài ra, bạn sẽ tìm thấy lớp CSS gridzyItem . Gridzy tự động thiết lập lớp này cho tất cả các phần tử con trực tiếp của phần tử chứa chính. Vì vậy, bạn có thể sử dụng lớp này để định dạng các mục trong thư viện của mình.
Tâm trí những điều quan trọng
- Nội dung mục phải phản hồi đầy đủ. Hãy cân nhắc rằng kích thước phần tử chắc chắn sẽ thay đổi. Sử dụng giá trị phần trăm thay vì giá trị pixel. Và hãy xem tùy chọn bố cục Gridzy
autoFontSize, tùy chọn này liên kết kích thước phông chữ với kích thước hộp mục. - Mỗi mục phải có tỷ lệ khung hình được xác định rõ ràng. Tỷ lệ khung hình của mục sẽ không bao giờ thay đổi và cần thiết để tính toán lưới. Vì vậy, nếu một mục không tự động có tỷ lệ khung hình được xác định rõ ràng, hãy xác định trước theo cách thủ công (ví dụ thông qua css).
Trong một số trường hợp, có thể dễ dàng hơn khi định kiểu nội dung của các mục trước khi Gridzy khởi tạo. Chỉ cần xóa tạm thời lớp gridzy hoặc tệp javascript Gridzy cho mục đích này.
Vậy là xong! Đó là tất cả những gì bạn cần để tạo ra giao diện của riêng mình. Hầu hết các giao diện được xác định trước không sử dụng nhiều hơn thế này.
Nhưng có thể còn nhiều hơn nữa nếu bạn thích…
Skin nâng cao
Gridzy sử dụng nhiều lớp CSS hơn là chỉ gridzyItem . Hầu hết chúng sẽ được thiết lập tự động và bạn cũng có thể sử dụng chúng để tạo kiểu.
Các lớp Container chính
| Tên lớp | Sự miêu tả |
|---|---|
gridzyđể thiết lập thủ công | Gridzy tự động tìm các phần tử có lớp này và khởi tạo chúng. |
gridzyAnimated | Sẽ được thiết lập tự động nếu tùy chọn animate là true . Nếu lớp này được thiết lập thủ công, tùy chọn animate cũng sẽ tự động trở thành true (trừ khi nó được thiết lập rõ ràng là false ). |
Lớp vật phẩm
| Tên lớp | Sự miêu tả |
|---|---|
gridzyItem | Sẽ được thiết lập ngay khi mục bắt đầu quá trình khởi tạo. Sẽ không bao giờ bị xóa. |
gridzyItemInitializing | Sẽ được thiết lập ngay khi mục bắt đầu quá trình khởi tạo. Sẽ được thay thế bằng gridzyItemReady ngay khi mục được khởi tạo hoàn toàn. Không có nghĩa là hình ảnh được tải đầy đủ (xem gridzyItemLoading ), nhưng mục đã sẵn sàng để hiển thị. |
gridzyItemReady | Sẽ thay thế gridzyItemInitializing ngay khi mục được khởi tạo hoàn toàn. Sẽ không bao giờ bị xóa. Không có nghĩa là hình ảnh được tải đầy đủ (xem gridzyItemComplete ), nhưng mục đã sẵn sàng để hiển thị. |
gridzyItemLoading | Sẽ được thiết lập ngay khi mục bắt đầu quá trình khởi tạo. Sẽ được thay thế bằng gridzyItemComplete ngay khi các hình ảnh được chứa (thường chỉ có một) được tải đầy đủ. |
gridzyItemComplete | Sẽ thay thế gridzyItemLoading ngay khi các hình ảnh được chứa (thường chỉ có một) được tải đầy đủ. Sẽ không bao giờ bị xóa. |
gridzyItemInitialToVisible | Sẽ được thiết lập ngay khi mục bắt đầu xuất hiện lần đầu tiên. Sẽ bị xóa ngay khi mục hiển thị hoàn toàn. |
gridzyItemVisible | Sẽ được thiết lập ngay khi mục đó hiển thị đầy đủ. Sẽ được xóa ngay khi mục đó bắt đầu biến mất. |
gridzyItemVisibleToHidden | Sẽ được thiết lập ngay khi vật phẩm bắt đầu biến mất. Sẽ được xóa ngay khi vật phẩm bị ẩn hoàn toàn. |
gridzyItemHidden | Sẽ được thiết lập ngay khi mục được ẩn hoàn toàn. Sẽ được xóa ngay khi mục bắt đầu xuất hiện. |
gridzyItemHiddenToVisible | Sẽ được thiết lập ngay khi mục bắt đầu xuất hiện (trừ khi xuất hiện lần đầu tiên – xem lớp gridzyItemInitialToVisible ). Sẽ bị xóa ngay khi mục hiển thị hoàn toàn. |
gridzyItemVisibleToVisible | Sẽ được thiết lập ngay khi có thứ gì đó trong lưới thay đổi, nhưng bản thân mục đó vẫn hiển thị. Sẽ bị xóa ngay khi hoạt ảnh thay đổi hoàn tất. |
Theo mặc định, chỉ báo quy trình và hoạt ảnh để hiện và biến mất hình ảnh được xác định trước bởi tệp CSS chính của Gridzy.
Với các lớp CSS được đề cập ở trên, bạn có thể định dạng chỉ báo quy trình và hoạt ảnh của riêng mình. Hãy thử xem tệp CSS chính của Gridzy để hiểu những gì bạn phải ghi đè. Đừng lo, mọi thứ đều được ghi chép đầy đủ ở đó.
Tối ưu hóa tải
Nếu bạn sử dụng nhiều hình ảnh, bạn có thể giúp Gridzy xây dựng lưới nhanh hơn.
Ngăn chặn hình ảnh nhảy
Gridzy hoàn toàn cần tỷ lệ khung hình của tất cả các hình ảnh để tính toán lưới. Thực tế này dẫn đến các thành phần nhảy nếu một số hình ảnh đã sẵn sàng và một số khác thì chưa. Càng có nhiều hình ảnh, hiệu ứng này càng khó chịu.
Để ngăn chặn hành vi này, chỉ cần đặt thuộc tính width và height cho tất cả các phần tử img . Điều quan trọng là phải đặt đúng giá trị cho từng hình ảnh riêng lẻ, nếu không hình ảnh sẽ bị méo. Các giá trị đúng là chiều rộng và chiều cao ban đầu của từng hình ảnh:
<div class="gridzy">
<img src="https://loremflickr.com/640/480?random=1" width="640" height="480" alt="a random image" />
<img src="https://loremflickr.com/480/640?random=2" width="480" height="640" alt="another random image" />
<img src="https://loremflickr.com/640/640?random=3" width="640" height="640" alt="yet another random image" />
<img src="https://loremflickr.com/640/480?random=4" width="640" height="480" alt="a random image again" />
<img src="https://loremflickr.com/640/480?random=5" width="640" height="480" alt="one last random image" />
</div>Sau đó, Gridzy có thể tính toán lưới ngay lập tức mà không cần biết kích thước thực tế của hình ảnh.
Tải chậm
Để chỉ tải những hình ảnh có trong khung nhìn hiển thị, hãy làm theo các bước sau:
- Chèn các thuộc tính
widthvàheightnhư mô tả ở trên (đảm bảo sử dụng các giá trị chính xác) - Thay thế tất cả các thuộc tính
srcbằngdata-gridzylazysrcnhư hiển thị bên dưới (nếu bạn cũng có thuộc tínhsrcset, hãy thay thế chúng bằngdata-gridzylazysrcset).
<div class="gridzy">
<img data-gridzylazysrc="https://loremflickr.com/640/480?random=1" width="640" height="480" alt="a random image" />
<img data-gridzylazysrc="https://loremflickr.com/480/640?random=2" width="480" height="640" alt="another random image" />
<img data-gridzylazysrc="https://loremflickr.com/640/640?random=3" width="640" height="640" alt="yet another random image" />
<img data-gridzylazysrc="https://loremflickr.com/640/480?random=4" width="640" height="480" alt="a random image again" />
<img data-gridzylazysrc="https://loremflickr.com/640/480?random=5" width="640" height="480" alt="one last random image" />
</div>Sau các bước này, hình ảnh sẽ được tải ngay khi chúng ở gần hoặc bên trong khung nhìn.
Chỉ số quy trình
Chỉ báo quy trình là biểu tượng hoạt hình nhỏ xuất hiện khi hình ảnh đang tải. Nếu bạn sử dụng chú thích & giao diện , chỉ báo quy trình sẽ tự động hiển thị. Nếu không, bạn cần một số điều chỉnh:
- Đặt mỗi phần tử
imgvào một phần tửdiv
(hoặc vào bất kỳ phần tử nào khác – xem HTML ngữ nghĩa để biết thêm) - Thêm lớp
gridzyImagevào mỗi phần tửimg
<div class="gridzy">
<div><img src="https://loremflickr.com/640/480?random=1" class="gridzyImage" alt="a random image" /></div>
<div><img src="https://loremflickr.com/480/640?random=2" class="gridzyImage" alt="another random image" /></div>
<div><img src="https://loremflickr.com/640/640?random=3" class="gridzyImage" alt="yet another random image" /></div>
<div><img src="https://loremflickr.com/640/480?random=4" class="gridzyImage" alt="a random image again" /></div>
<div><img src="https://loremflickr.com/640/480?random=5" class="gridzyImage" alt="one last random image" /></div>
</div>Sau đó, bạn sẽ thấy các chỉ báo quá trình nếu hình ảnh mất nhiều thời gian để tải.
Bộ lọc
Bộ lọc trong Gridzy khá đơn giản nhưng mạnh mẽ. Bất kể bạn cần loại bộ lọc nào, rất có thể nó sẽ khả thi. Tất cả những gì bạn cần là một chút CSS và một vài thành phần biểu mẫu HTML …
Sau đây là một ví dụ thực tế:
<div id="myFilterControls">
<button value="*">All</button>
<button value=".animals">Animals</button>
<button value=".architecture">Architecture</button>
<button value=".people">People</button>
</div>
<div class="gridzy" data-gridzy-filterControls="#myFilterControls button">
<img class="animals" src="https://loremflickr.com/640/480/animals?random=1" alt="a random animal image" />
<img class="architecture" src="https://loremflickr.com/640/480/arch?random=1" alt="a random architecture image" />
<img class="people" src="https://loremflickr.com/640/480/people?random=1" alt="a random people image" />
<img class="animals" src="https://loremflickr.com/640/480/animals?random=2" alt="another random animal image" />
<img class="architecture" src="https://loremflickr.com/640/480/arch?random=2" alt="another random architecture image" />
<img class="people" src="https://loremflickr.com/640/480/people?random=2" alt="another random people image" />
<img class="animals" src="https://loremflickr.com/640/480/animals?random=3" alt="yet another random animal image" />
</div>Hãy xây dựng từng bước một
1. Đầu tiên, chúng ta cần cấu trúc HTML thông thường của Gridzy và đặt tên lớp cho tất cả các mục thư viện để chúng ta có thể lọc chúng sau đó
<div class="gridzy">
<img class="animals" src="https://loremflickr.com/640/480/animals?random=1" alt="a random animal image" />
<img class="architecture" src="https://loremflickr.com/640/480/arch?random=1" alt="a random architecture image" />
<img class="people" src="https://loremflickr.com/640/480/people?random=1" alt="a random people image" />
<img class="animals" src="https://loremflickr.com/640/480/animals?random=2" alt="another random animal image" />
<img class="architecture" src="https://loremflickr.com/640/480/arch?random=2" alt="another random architecture image" />
<img class="people" src="https://loremflickr.com/640/480/people?random=2" alt="another random people image" />
<img class="animals" src="https://loremflickr.com/640/480/animals?random=3" alt="yet another random animal image" />
</div>Trong ví dụ này, chúng ta chỉ sử dụng một lớp cho mỗi phần tử. Nhưng bạn cũng có thể thiết lập nhiều lớp cho một phần tử duy nhất, nếu phần tử đó có thể tìm thấy thông qua nhiều bộ lọc.
2. Sau đó chúng ta thêm một số nút để có thể thay đổi bộ lọc
<button value="*">All</button>
<button value=".animals">Animals</button>
<button value=".architecture">Architecture</button>
<button value=".people">People</button>
<div class="gridzy">
<img class="animals" src="https://loremflickr.com/640/480/animals?random=1" alt="a random animal image" />
<img class="architecture" src="https://loremflickr.com/640/480/arch?random=1" alt="a random architecture image" />
<img class="people" src="https://loremflickr.com/640/480/people?random=1" alt="a random people image" />
<img class="animals" src="https://loremflickr.com/640/480/animals?random=2" alt="another random animal image" />
<img class="architecture" src="https://loremflickr.com/640/480/arch?random=2" alt="another random architecture image" />
<img class="people" src="https://loremflickr.com/640/480/people?random=2" alt="another random people image" />
<img class="animals" src="https://loremflickr.com/640/480/animals?random=3" alt="yet another random animal image" />
</div>Thay vì các nút, bạn cũng có thể sử dụng các thành phần biểu mẫu khác như hộp kiểm, nút radio, trường chọn, v.v.
Như bạn có thể thấy, các giá trị của các nút là các bộ chọn CSS thông thường. Ngay sau khi chúng ta hoàn tất, nhấp vào nút như vậy sẽ hiển thị các hình ảnh khớp với bộ chọn CSS đó. Về mặt kỹ thuật, nó chỉ đơn giản là đặt tùy chọn filter thành giá trị này.
Bạn cũng có thể sử dụng các bộ chọn phức tạp hơn nhiều. Ví dụ :not(.animals) cũng có thể hoạt động, cũng như .animals.people và .animals, .people .
3. Cuối cùng, chúng ta đóng gói các nút trong một vùng chứa div và liên kết chúng với thư viện Gridzy bằng cách thiết lập tùy chọn filterControls :
<div id="myFilterControls">
<button value="*">All</button>
<button value=".animals">Animals</button>
<button value=".architecture">Architecture</button>
<button value=".people">People</button>
</div>
<div class="gridzy" data-gridzy-filterControls="#myFilterControls button">
<img class="animals" src="https://loremflickr.com/640/480/animals?random=1" alt="a random animal image" />
<img class="architecture" src="https://loremflickr.com/640/480/arch?random=1" alt="a random architecture image" />
<img class="people" src="https://loremflickr.com/640/480/people?random=1" alt="a random people image" />
<img class="animals" src="https://loremflickr.com/640/480/animals?random=2" alt="another random animal image" />
<img class="architecture" src="https://loremflickr.com/640/480/arch?random=2" alt="another random architecture image" />
<img class="people" src="https://loremflickr.com/640/480/people?random=2" alt="another random people image" />
<img class="animals" src="https://loremflickr.com/640/480/animals?random=3" alt="yet another random animal image" />
</div>Như bạn có thể thấy, chúng tôi cũng sử dụng một bộ chọn CSS cho tùy chọn filterControls . Bộ chứa div có thuộc tính id chỉ có tác dụng giúp các nút dễ chọn hơn thông qua bộ chọn CSS đó.
Vậy là xong!
Nếu bạn thích giải pháp JavaScript, hãy kiểm tra API .
Giao diện lập trình ứng dụng (API)
Mặc dù Gridzy có API riêng, hầu hết mọi thứ đều có thể thực hiện mà không cần nó, chỉ cần thao tác DOM. Gridzy sẽ nhận thấy điều đó và điều chỉnh lưới. Nhưng cũng có một API rất mạnh mẽ …
Thao tác DOM
Đối với tất cả các thao tác Mô hình đối tượng tài liệu (DOM), trước tiên chúng ta cần phần tử chứa:
// get the container element
var gridzyElement = document.querySelector('.gridzy');Thêm hình ảnh
Điều quan trọng là phải xây dựng và điền đầy đủ phần tử con mới trước khi bạn thêm nó vào phần tử chứa. Nếu không, Gridzy không thể phát hiện kích thước chính xác.
// create a new img element
var newImage = document.createElement('img');
// add src attribute (!! before you add it to the container element !!)
newImage.src = 'https://loremflickr.com/640/480';
// add it as last element to the container element
gridzyElement.appendChild(newImage);
// or as first element (or anywhere in between)
gridzyElement.insertBefore(newImage, gridzyElement.firstChild);Xóa hình ảnh
// remove the first image
gridzyElement.removeChild(gridzyElement.firstElementChild);Thay đổi Tùy chọn
// change the spaceBetween option to a specific value
gridzyElement.setAttribute('data-gridzy-spaceBetween', '10');
// change the layout option to a specific value
gridzyElement.setAttribute('data-gridzy-layout', 'waterfall');
// reset the spaceBetween option to its default value
gridzyElement.removeAttribute('data-gridzy-spaceBetween');Bạn có thể tìm hiểu thêm về cách thao tác DOM tại tài liệu web MDN . Ngoài ra còn có phần Giới thiệu về DOM .
API độc quyền
Để sử dụng API, trước tiên chúng ta cần có phiên bản Gridzy, được liên kết với phần tử chứa Gridzy:
// get the Gridzy instance
var gridzyInstance = document.querySelector('.gridzy').gridzy;Nhận Tùy chọn
// get the value of a single option
var currentLayout = gridzyInstance.getOption('layout');Nhận tất cả các tùy chọn
// get all option values as an object
var currentOptions = gridzyInstance.getOptions();Thiết lập tùy chọn
// set specific option values
gridzyInstance.setOptions({
spaceBetween: 10,
layout: 'waterfall'
});
// or reset options to their default values
gridzyInstance.setOptions({
spaceBetween: null,
layout: null
});Áp dụng bộ lọc
Áp dụng bộ lọc chỉ là thiết lập tùy chọn filter có thể là bất kỳ bộ chọn CSS hợp lệ nào:
// set the filter to match items with class "animals"
gridzyInstance.setOptions({
filter: '.animals'
});
// reset the filter to match all items again
gridzyInstance.setOptions({
filter: '*'
});
// set the filter to match items without class "animals"
gridzyInstance.setOptions({
filter: ':not(.animals)'
});
// set the filter to match items with class "animals" or "people"
gridzyInstance.setOptions({
filter: '.animals, .people'
});
// set the filter to match items that have both classes, "animals" and "people"
gridzyInstance.setOptions({
filter: '.animals.people'
});Thêm chức năng gọi lại
KHÔNG CÒN SỬ DỤNG kể từ phiên bản 2.4.0
Thay vào đó, hãy sử dụng Sự kiện hiện đại và linh hoạt hơn. Xem phần tiếp theo để biết chi tiết.
Gridzy.js 2 hỗ trợ một số tùy chọn cho hàm gọi lại. Chúng chỉ có thể được thiết lập thông qua API độc quyền, nhưng cũng giống như các tùy chọn khác:
// same as set other options
gridzyInstance.setOptions({
onOptionsChanged: function() {
// will be executed each time the options have changed.
},
onBeforeOptionsChanged: function() {
// will be executed, before new options take effect.
}
});Sử dụng Sự kiện
kể từ phiên bản 2.4.0
Bạn có thể sử dụng các sự kiện Gridzy giống hệt như các sự kiện JavaScript thông thường:
document.addEventListener('gridzyOptionsChanged', function(event) {
// will be executed each time the options have changed.
});
document.addEventListener('gridzyBeforeOptionsChanged', function(event) {
// will be executed, before new options take effect.
});Một số sự kiện được kích hoạt trên phần tử chứa Gridzy và một số sự kiện khác được kích hoạt trên từng phần tử mục riêng lẻ trong phần tử chứa.
Các sự kiện được kích hoạt trên phần tử chứa Gridzy:
event.target cung cấp phần tử chứa Gridzy.
event.detail.instance cung cấp phiên bản Gridzy.
Các sự kiện được kích hoạt trên các thành phần vật phẩm:
event.target cung cấp phần tử mục tương ứng.
event.detail.instance cung cấp phiên bản Gridzy.
API – Toàn cầu
Có một số hàm độc lập với các thể hiện của Gridzy. Vì vậy, chúng ta không cần phải có một thể hiện trước.
Nhận tùy chọn mặc định
// get the default value of a single option
var defaultLayout = Gridzy.getDefaultOption('layout');Nhận tất cả các tùy chọn mặc định
// get all default option values as an object, including the default layout options of the default layout
var defaultOptions = Gridzy.getDefaultOptions();
// or get all default option values, including the default layout options of a specific layout
var defaultOptions = Gridzy.getDefaultOptions('waterfall');Đặt tùy chọn mặc định
Điều này không thiết lập các tùy chọn của tất cả các phiên bản Gridzy đã khởi tạo, nhưng xác định cơ sở cho các phiên bản mới. Tuy nhiên, nếu một tùy chọn của phiên bản hiện có được đặt lại thông qua giá trị null , nó sẽ sử dụng giá trị mặc định mới.
// set default option values
Gridzy.setDefaultOptions({
spaceBetween: 10,
layout: 'waterfall'
});Bạn có thể sử dụng điều này để thiết lập tùy chọn toàn cục, nếu bạn gọi nó trước khi DOM sẵn sàng. Vì vậy, bạn không cần phải thiết lập tùy chọn dưới dạng thuộc tính nữa.
Tự động hóa
Miễn là tất cả các automatism của Gridzy.js 2 đều hoạt động, thì không cần các phương pháp dưới đây. Nhưng automatism có thể được tắt để sử dụng Gridzy theo cách truyền thống hơn:
// disable automatic initializations
Gridzy.setDefaultOptions({
autoInitOnDomReady: false,
autoInitOnDomMutation: false
});
// or switch off all mutation observers
Gridzy.setDefaultOptions({
autoInitOnDomMutation: false,
autoSyncChildListMutation: false,
autoSyncAttributesMutation: false,
autoSyncChildClassMutation: false,
autoSyncImageMutation: false
});Một số tùy chọn này không thể được thiết lập thông qua thuộc tính data-gridzy- hoặc thông qua setOptions() vì những lý do logic sau:
Khởi tạo thủ công
// initialize a new Gridzy instance
var gridzyInstance = new Gridzy(document.querySelector('.gridzy'), {
spaceBetween: 10,
layout: 'waterfall'
});Phá hủy phiên bản
Nói một cách đại khái thì ngược lại với việc khởi tạo Gridzy.
gridzyInstance.destroy();
gridzyInstance = null;Đồng bộ danh sách con theo cách thủ công
// after child elements (images) are added to or removed from the DOM.
gridzyInstance.syncChildList();Đồng bộ một phần tử con đơn lẻ theo cách thủ công
Thông thường không cần thiết, ngoại trừ trong những trường hợp rất hiếm.
// after child elements (images) are added to the DOM and only one of them should be synced to Gridzy.
gridzyInstance.syncChild(childElement);Đồng bộ hóa các thuộc tính theo cách thủ công
Lưu ý rằng tùy chọn useOptionAttributes phải true đối với trường hợp này.
// after data-gridzy- attributes have changed
gridzyInstance.syncAttributes();Buộc kết xuất
Thông thường không cần thiết, ngay cả khi tất cả các tính năng tự động đều bị tắt
gridzyInstance.render();