Уеб сайтът е преведен автоматично. Ако нещо не е ясно, моля, погледнете документацията на английски.
Основна употреба
Качете 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 стойност на текстова сянка |
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 . Самият Gridzy не се нуждае от тези класове. Те се използват само за оформяне и можете да ги премахнете или преименувате, ако желаете.
Освен това ще намерите 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 да изгради мрежата по-бързо.
Предотвратяване на прескачащи изображения
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
За всички манипулации на Document Object Model (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();