Веб-сайт було автоматично перекладено. Якщо щось не зрозуміло, будь ласка, перегляньте документацію англійською мовою.
Основне використання
Завантажте файли Gridzy на свій сервер і додайте їх на свій веб-сайт (зазвичай у розділі head):
<link rel="stylesheet" href="gridzy/gridzy.min.css" />
<script src="gridzy/gridzy.min.js"></script>Додайте HTML-код (у будь-якому місці основного розділу):
<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>Ось і все! Це повністю функціональний приклад. Додаткова ініціалізація не потрібна.
Конфігурація
Найпростіший спосіб налаштувати Gridzy — просто використовувати атрибути HTML. Вам потрібно лише додати префікс data-gridzy- до імен опцій. Отже, щоб встановити параметр spaceBetween , просто додайте атрибут 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>Основні параметри
Justified Параметри макета
Waterfall Параметри макета
Додаткові параметри
Щоб отримати додаткові параметри, перегляньте API .
Семантичний HTML
Найпростіша HTML-структура Gridzy така:
<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>Однак Gridzy дуже гнучкий, і ви можете використовувати майже будь-яку іншу структуру HTML. Варто врахувати лише кілька моментів:
- Кожен дочірній елемент контейнерного елемента представляє один елемент у сітці.
- І контейнерний елемент, і його дочірні елементи можуть бути будь-якими типами тегів, наприклад
ulіli(просто подумайте про те, щоб скинути стандартні налаштування браузера). - Якщо елемент
imgне є прямим дочірнім елементом, йому потрібен класgridzyImage.
Отже, це також робоча структура HTML:
<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>Особливо, якщо ви хочете додати підписи, вам потрібна вдосконалена структура HTML. Щоб дізнатися більше про це, перегляньте підписи та скіни .
Підписи та скіни
Якщо ви хочете додати підписи до своєї галереї, вам потрібно визначити зовнішній вигляд. Тому доступні деякі попередньо визначені скіни. Кожна оболонка складається з файлу CSS. Вам потрібно додати цей файл на додаток до основних файлів Gridzy (зазвичай у головному розділі):
<link rel="stylesheet" href="gridzy/skins/gridzySkinClassic/style.min.css" />Крім того, вам потрібна вдосконалена структура HTML:
<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>Якщо вас цікавить структура HTML, подивіться на Semantic HTML .
Для підпису ви можете використовувати будь-який тип тегу, просто переконайтеся, що він має клас gridzyCaption . Елемент img потребує класу gridzyImage .
Наведений вище приклад демонструє скін gridzySkinClassic . Щоб використати інший, просто замініть назву скіна одним із таких:
Включені скіни
| Доступні заняття | |
|---|---|
| gridzySkinBlank хороша відправна точка для створення власної шкіри живий попередній перегляд | gridzySkinBlank |
| gridzySkinClassic живий попередній перегляд | gridzySkinClassic(ЗАСТАРЕЛО з версії 2.6.0) |
| gridzySkinFullOverlay живий попередній перегляд | gridzySkinFullOverlay(ЗАСТАРЕЛО з версії 2.6.0) |
| gridzySkinLift живий попередній перегляд | gridzySkinLift(ЗАСТАРЕЛО з версії 2.6.0) |
| gridzySkinMagnifier функція масштабування не включена живий попередній перегляд | gridzySkinMagnifier(ЗАСТАРЕЛО з версії 2.6.0) |
Для всіх наведених вище оболонок потрібен лише файл CSS, але є додаткові оболонки, для яких також потрібен файл JavaScript:
<link rel="stylesheet" href="gridzy/skins/gridzySkinBlur/style.min.css" />
<script src="gridzy/skins/gridzySkinBlur/script.min.js"></script>| Доступні заняття | |
|---|---|
| gridzySkinBlur не працює в IE живий попередній перегляд | gridzySkinBlur(ЗАСТАРЕЛО з версії 2.6.0) |
| gridzySkinCard живий попередній перегляд | gridzySkinCard(ЗАСТАРЕЛО з версії 2.6.0) |
Параметри шкіри
Починаючи з версії 2.6.0, є параметри для налаштування вбудованих оболонок. Залежно від конкретної шкіри ви можете встановити колір фону, колір тексту та тінь тексту. Вам просто потрібно використовувати власні властивості CSS, як ви можете бачити тут:
<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>Перегляньте підтримувані змінні та значення за замовчуванням для кожної оболонки тут:
gridzySkinClassic
| змінна | Значення за замовчуванням | Інформація |
|---|---|---|
--background | rgba(0, 0, 0, .7) | дозволяє будь-яке фонове значення CSS |
--color | rgb(255, 255, 255) | дозволяє будь-яке значення кольору CSS |
--text-shadow | none | дозволяє будь-яке значення текстової тіні CSS |
gridzySkinFullOverlay
| змінна | Значення за замовчуванням | Інформація |
|---|---|---|
--background | rgba(0, 0, 0, .7) | дозволяє будь-яке фонове значення CSS |
--color | rgb(255, 255, 255) | дозволяє будь-яке значення кольору CSS |
--text-shadow | none | дозволяє будь-яке значення текстової тіні CSS |
gridzySkinLift
| змінна | Значення за замовчуванням | Інформація |
|---|---|---|
--background | rgba(0, 0, 0, .7) | дозволяє будь-яке фонове значення CSS |
--color | rgb(255, 255, 255) | дозволяє будь-яке значення кольору CSS |
--text-shadow | 0 0 10px rgb(0, 0, 0), 0 0 20px rgb(0, 0, 0), 0 0 30px rgb(0, 0, 0) | дозволяє будь-яке значення текстової тіні CSS |
gridzySkinMagnifier
| змінна | Значення за замовчуванням | Інформація |
|---|---|---|
--background | rgba(0, 0, 0, .7) | дозволяє будь-яке фонове значення CSS |
--color | rgb(255, 255, 255) | дозволяє будь-яке значення кольору CSS |
Ця оболонка не підтримує --text-shadow
gridzySkinBlur
| змінна | Значення за замовчуванням | Інформація |
|---|---|---|
--background | rgba(0, 0, 0, .7) | дозволяє будь-яке фонове значення CSS |
--color | rgb(255, 255, 255) | дозволяє будь-яке значення кольору CSS |
--text-shadow | 0 0 10px rgb(0, 0, 0) | дозволяє будь-яке значення текстової тіні CSS |
gridzySkinCard
| змінна | Значення за замовчуванням | Інформація |
|---|---|---|
--background | rgba(0, 0, 0, 1) | дозволяє будь-яке фонове значення CSS |
--color | rgb(255, 255, 255) | дозволяє будь-яке значення кольору CSS |
--text-shadow | none | дозволяє будь-яке значення текстової тіні CSS |
Усі попередньо визначені скіни підтримують лише прості текстові підписи. Ви можете створювати власні та більш складні скіни. Будь ласка, подивіться на Style Gridzy .
Стиль Грідзи
Якщо жодна попередньо визначена оболонка не відповідає вашим потребам, ви можете створити власну.
Найпростіший спосіб — це спочатку скопіювати наявний скін і адаптувати його до власних потреб. Попередньо визначена оболонка gridzySkinBlank зазвичай забезпечує хорошу основу, а також гарну документацію у файлі 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;
}У файлі CSS ви знайдете класи gridzySkinBlank , gridzyImage та gridzyCaption . Самому Гридзі ці заняття не потрібні. Вони використовуються лише для стилізації, тому ви можете видалити або перейменувати їх, якщо хочете.
Крім того, ви знайдете клас CSS gridzyItem . Gridzy автоматично встановлює цей клас для всіх прямих дочірніх елементів основного контейнерного елемента. Отже, ви можете використовувати цей клас для стилізації елементів вашої галереї.
Пам’ятайте про важливі речі
- Вміст елемента має бути повністю адаптивним. Враховуйте, що розмір елемента обов'язково зміниться. Використовуйте значення у відсотках замість значень пікселів. І подивіться на опцію макета Gridzy
autoFontSize, яка прив’язує розмір шрифту до розміру вікна елемента. - Кожен предмет повинен мати чітко визначене співвідношення сторін. Співвідношення сторін елемента ніколи не зміниться, і воно потрібне для розрахунку сітки. Отже, якщо елемент не має автоматично чітко визначеного співвідношення сторін, попередньо визначте його вручну (наприклад, за допомогою css).
У деяких випадках може бути простіше стилізувати вміст елементів до ініціалізації Gridzy. Для цього просто тимчасово видаліть клас gridzy або файл JavaScript Gridzy.
Ось і все! Це все, що вам потрібно, щоб створити власну шкіру. Більшість попередньо визначених оболонок не використовують більше, ніж це.
Але їх може бути більше, якщо вам подобається...
Розширені скіни
Gridzy використовує більше класів CSS, ніж тільки gridzyItem . Більшість із них буде встановлено автоматично, і ви також можете використовувати їх для стилізації.
Основні класи контейнерів
| Назва класу | опис |
|---|---|
gridzyвстановити вручну | Gridzy автоматично знаходить елементи з цим класом та ініціалізує їх. |
gridzyAnimated | Буде встановлено автоматично, якщо параметр animate має true . Якщо цей клас встановлено вручну, параметр animate також автоматично отримає true (за винятком випадків, коли для нього явно встановлено значення false ). |
Класи предметів
| Назва класу | опис |
|---|---|
gridzyItem | Буде встановлено, щойно елемент розпочне процес ініціалізації. Ніколи не буде видалено. |
gridzyItemInitializing | Буде встановлено, щойно елемент розпочне процес ініціалізації. Буде замінено на gridzyItemReady , щойно елемент буде повністю ініціалізовано. Це означає не те, що зображення повністю завантажено (див. gridzyItemLoading ), але елемент готовий стати видимим. |
gridzyItemReady | Замінить gridzyItemInitializing , щойно елемент буде повністю ініціалізовано. Ніколи не буде видалено. Це означає не те, що зображення повністю завантажено (див. gridzyItemComplete ), але елемент готовий стати видимим. |
gridzyItemLoading | Буде встановлено, щойно елемент розпочне процес ініціалізації. Буде замінено на gridzyItemComplete , щойно всі зображення (зазвичай лише одне) будуть повністю завантажені. |
gridzyItemComplete | Замінить gridzyItemLoading , щойно всі зображення (зазвичай лише одне) будуть повністю завантажені. Ніколи не буде видалено. |
gridzyItemInitialToVisible | Буде встановлено, як тільки елемент почне з’являтися вперше. Буде видалено, щойно предмет стане повністю видимим. |
gridzyItemVisible | Буде встановлено, щойно елемент стане повністю видимим. Буде видалено, як тільки предмет почне зникати. |
gridzyItemVisibleToHidden | Буде встановлено, як тільки предмет почне зникати. Буде видалено, щойно елемент буде повністю приховано. |
gridzyItemHidden | Буде встановлено, щойно елемент буде повністю приховано. Буде видалено, щойно предмет почне з’являтися. |
gridzyItemHiddenToVisible | Буде встановлено, щойно елемент почне з’являтися (за винятком появи вперше – див. клас gridzyItemInitialToVisible ). Буде видалено, щойно предмет стане повністю видимим. |
gridzyItemVisibleToVisible | Буде встановлено, як тільки щось у сітці змінилося, але сам елемент був і залишається видимим. Буде видалено, щойно зміниться анімація. |
За замовчуванням індикатор процесу та анімація для зображень, що з’являються та зникають, попередньо визначені основним файлом CSS Gridzy.
За допомогою цих вищезгаданих класів CSS ви можете стилізувати свій власний індикатор процесу та анімацію. Загляньте в основний CSS-файл Gridzy, щоб зрозуміти, що вам доведеться змінити. Нічого страшного, там все добре задокументовано.
Оптимізуйте завантаження
Якщо ви використовуєте багато зображень, це може бути гарною ідеєю, щоб допомогти Грідзі швидше побудувати сітку.
Запобігання стрибкам зображень
Для обчислення сітки Gridzy абсолютно необхідне співвідношення сторін усіх зображень. Цей факт призводить до стрибків елементів, якщо одні зображення готові, а інші ні. Чим більше зображень, тим більше може дратувати цей ефект.
Щоб запобігти цьому, просто встановіть атрибути width та height для всіх елементів img . Важливо встановити правильні значення для кожного окремого зображення, інакше зображення будуть спотвореними. Правильними значеннями є вихідна ширина та висота відповідного зображення:
<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>Після цього Gridzy може негайно розрахувати сітку без необхідності знати фактичні розміри зображень.
Відкладене завантаження
Щоб завантажити лише зображення, які знаходяться у видимому вікні перегляду, просто виконайте такі дії:
- Вставте атрибути
widthтаheight, як описано вище (переконайтеся, що використовуєте правильні значення) - Замініть усі атрибути
srcнаdata-gridzylazysrcяк показано нижче (якщо у вас також є атрибутиsrcset, замініть їх наdata-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>Після цих кроків зображення завантажуватимуться, щойно вони будуть поряд із вікном перегляду або всередині нього.
Індикатор процесу
Індикатор процесу — це маленька анімована піктограма, яка з’являється під час завантаження зображення. Якщо ви використовуєте підписи та скіни , індикатор процесу буде показано автоматично. В іншому випадку вам знадобляться деякі коригування:
- Помістіть кожен елемент
imgв елементdiv
(або в будь-який інший елемент – див. семантичний HTML для отримання додаткової інформації) - Додайте клас
gridzyImageдо кожного елемента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>Після цього ви повинні побачити індикатори процесу, якщо зображення потребують часу для завантаження.
Фільтри
Фільтри в Gridzy досить прості, але потужні. Незалежно від того, який фільтр вам потрібен, дуже ймовірно, що це можливо. Все, що вам потрібно, це трохи CSS і кілька елементів форми HTML...
Ось функціональний приклад:
<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>Давайте будувати це крок за кроком
1. Спочатку нам потрібна звичайна HTML-структура Gridzy та встановлення назв класів для всіх елементів галереї, щоб потім ми могли їх фільтрувати
<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>У цьому прикладі ми використовуємо лише один клас для кожного елемента. Але ви також можете встановити кілька класів для одного елемента, якщо цей елемент потрібно знайти за допомогою кількох фільтрів.
2. Потім ми додаємо кілька кнопок, за допомогою яких ми можемо змінювати фільтри
<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>Замість кнопок ви також можете використовувати інші елементи форми, такі як прапорці, перемикачі, поля вибору тощо.
Як бачите, значення кнопок — звичайні CSS-селектори. Як тільки ми закінчимо, клацання такої кнопки відобразить зображення, які відповідають цьому CSS-селектору. Технічно він просто встановлює параметр filter на це значення.
Ви також можете використовувати набагато складніші селектори. Наприклад :not(.animals) також буде працювати, а також .animals.people і .animals, .people .
3. Нарешті, ми інкапсулюємо кнопки в контейнер div і прив’язуємо їх до галереї Gridzy, встановивши опцію 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>Як бачите, ми також використовуємо селектор CSS для параметра filterControls . Контейнер div з атрибутом id служить лише для полегшення вибору кнопок за допомогою селектора CSS.
Ось і все!
Якщо ви віддаєте перевагу рішенню JavaScript, ознайомтеся з API .
API
Хоча Gridzy має власний API, більшість речей можна зробити без нього, просто маніпулюючи DOM. Gridzy це помітить і відрегулює сітку. Але є також дуже потужний API …
Маніпулювання DOM
Для всіх маніпуляцій з об’єктною моделлю документа (DOM) нам спочатку потрібен елемент контейнера:
// get the container element
var gridzyElement = document.querySelector('.gridzy');Додайте зображення
Важливо повністю створити та заповнити новий дочірній елемент, перш ніж додати його до елемента-контейнера. Інакше Gridzy не зможе визначити правильні розміри.
// 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);Видалити зображення
// remove the first image
gridzyElement.removeChild(gridzyElement.firstElementChild);Змінити параметри
// 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');Більше про маніпулювання DOM ви можете знайти у веб-документах MDN . Також доступний Вступ до DOM .
Власний API
Щоб використовувати API, нам спочатку потрібен екземпляр Gridzy, який прив’язаний до елемента контейнера Gridzy:
// get the Gridzy instance
var gridzyInstance = document.querySelector('.gridzy').gridzy;Отримати варіант
// get the value of a single option
var currentLayout = gridzyInstance.getOption('layout');Отримати всі параметри
// get all option values as an object
var currentOptions = gridzyInstance.getOptions();Встановити параметри
// set specific option values
gridzyInstance.setOptions({
spaceBetween: 10,
layout: 'waterfall'
});
// or reset options to their default values
gridzyInstance.setOptions({
spaceBetween: null,
layout: null
});Застосувати фільтр
Застосування фільтра – це лише налаштування filter параметрів, яким може бути будь-який дійсний селектор CSS:
// 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'
});Додайте функції зворотного виклику
ЗАСТАРЕЛО з версії 2.4.0
Натомість використовуйте сучасні та більш гнучкі події . Подробиці див. у наступному розділі.
Gridzy.js 2 підтримує деякі параметри для функцій зворотного виклику. Їх можна налаштувати лише через фірмовий API, але як і інші параметри:
// 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.
}
});Використовуйте події
починаючи з версії 2.4.0
Ви можете використовувати події Gridzy так само, як і звичайні події JavaScript:
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.
});Деякі події запускаються в елементі контейнера Gridzy, а інші події запускаються в окремих елементах елемента всередині елемента контейнера.
Події, що запускаються на елементі контейнера Gridzy:
event.target надає контейнерний елемент Gridzy.
event.detail.instance надає екземпляр Gridzy.
Події, запущені для елементів елемента:
event.target надає відповідний елемент item.
event.detail.instance надає екземпляр Gridzy.
API – глобальний
Є деякі функції, які не залежать від екземплярів Gridzy. Тому нам не потрібно отримувати примірник раніше.
Отримати параметр за замовчуванням
// get the default value of a single option
var defaultLayout = Gridzy.getDefaultOption('layout');Отримати всі параметри за замовчуванням
// 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');Встановити параметри за замовчуванням
Це не встановлює параметри всіх уже ініціалізованих екземплярів Gridzy, але визначає основу для нових екземплярів. Однак, якщо параметр існуючого екземпляра буде скинуто за допомогою значення null , він використовуватиме нове значення за замовчуванням.
// set default option values
Gridzy.setDefaultOptions({
spaceBetween: 10,
layout: 'waterfall'
});Ви можете використовувати це, щоб установити параметри глобально, якщо викликати його до того, як DOM буде готовий. Тож вам більше не потрібно буде встановлювати параметри як атрибути.
Автоматизми
Поки всі автоматики Gridzy.js 2 активні, наведені нижче методи не потрібні. Але автоматизми можна вимкнути, щоб використовувати Gridzy більш традиційним способом:
// 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
});Деякі з цих параметрів не можна встановити через атрибути data-gridzy- або через setOptions() через логічні причини:
Ініціалізувати вручну
// initialize a new Gridzy instance
var gridzyInstance = new Gridzy(document.querySelector('.gridzy'), {
spaceBetween: 10,
layout: 'waterfall'
});Знищити екземпляр
Грубо кажучи, протилежність ініціалізації Gridzy.
gridzyInstance.destroy();
gridzyInstance = null;Синхронізувати дочірній список вручну
// after child elements (images) are added to or removed from the DOM.
gridzyInstance.syncChildList();Синхронізувати один дочірній елемент вручну
Зазвичай не потрібно, за винятком дуже рідкісних випадків.
// after child elements (images) are added to the DOM and only one of them should be synced to Gridzy.
gridzyInstance.syncChild(childElement);Синхронізувати атрибути вручну
Зауважте, що для цього параметр useOptionAttributes має бути true .
// after data-gridzy- attributes have changed
gridzyInstance.syncAttributes();Примусова візуалізація
Зазвичай не потрібно, навіть якщо всі автоматизми вимкнені
gridzyInstance.render();