Сайт был автоматически переведен. Если что-то не понятно, посмотрите английскую документацию.
Базовое использование
Загрузите файлы 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 (обычно в разделе head):
<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 text-shadow |
gridzySkinFullOverlay
| Переменная | Значение по умолчанию | Информация |
|---|---|---|
--background | rgba(0, 0, 0, .7) | допускает любое значение фона CSS |
--color | rgb(255, 255, 255) | допускает любое значение цвета CSS |
--text-shadow | none | допускает любое значение CSS text-shadow |
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 text-shadow |
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 text-shadow |
gridzySkinCard
| Переменная | Значение по умолчанию | Информация |
|---|---|---|
--background | rgba(0, 0, 0, 1) | допускает любое значение фона CSS |
--color | rgb(255, 255, 255) | допускает любое значение цвета CSS |
--text-shadow | none | допускает любое значение CSS text-shadow |
Все предопределенные скины поддерживают только простые текстовые подписи. Вы можете создать свои собственные и более сложные скины. Пожалуйста, взгляните на 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 . Сам Gridzy не нуждается в этих классах. Они используются только для стилизации, поэтому вы можете удалить или переименовать их, если захотите.
Кроме того, вы найдете класс CSS gridzyItem . Gridzy автоматически устанавливает этот класс для всех прямых потомков основного элемента-контейнера. Таким образом, вы можете использовать этот класс для стилизации элементов вашей галереи.
Помните о важных вещах
- Содержимое элемента должно быть полностью адаптивным. Учтите, что размер элемента определенно изменится. Используйте процентные значения вместо пиксельных. И взгляните на опцию макета Gridzy
autoFontSize, которая привязывает размер шрифта к размеру поля элемента. - Каждый элемент должен иметь четко определенное соотношение сторон. Соотношение сторон элемента никогда не изменится и необходимо для расчета сетки. Поэтому, если элемент автоматически не имеет четко определенного соотношения сторон, задайте его вручную (например, через css).
В некоторых случаях может быть проще стилизовать содержимое элементов до инициализации Gridzy. Для этого просто временно удалите класс gridzy или файл Gridzy javascript.
Вот и все! Это все, что вам нужно для создания собственного скина. Большинство предопределенных скинов не используют больше этого.
Но их может быть больше, если хотите…
Расширенные скины
Gridzy использует больше классов CSS, чем только gridzyItem . Большинство из них будут установлены автоматически, и вы также можете использовать их для стилизации.
Основные классы контейнеров
| Имя класса | Описание |
|---|---|
gridzyустановить вручную | Gridzy автоматически находит элементы с этим классом и инициализирует их. |
gridzyAnimated | Будет установлено автоматически, если option animate имеет true . Если этот класс установлен вручную, option 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 быстрее построить сетку.
Предотвратить прыгающие изображения
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- attributes или через 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();