2.x версия


Төп куллану

Gridzy файлларын серверга йөкләгез һәм аларны вебсайтыгызга өстәгез (гадәттә баш бүлектә):

<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>

Төп вариантлар

Килешенгән кыйммәтТасвирлау
animatetrueЧелтәр үзгәргәндә анимацияләр кулланылырга тиешме-юкмы икәнен ачыклый (мәсәлән, браузер тәрәзәсен үзгәрткәндә яки фильтр куйганда).
layoutjustifiedКулланылган макетны билгели. Gridzy.js 2 ике төрле макетка ярдәм итә justified һәм waterfall . Аларның һәрберсенең үз өстәмә параметрлары бар, сез аларны бу таблицадан таба аласыз.
filter*Кайсы рәсемнәрне күрсәтергә кирәклеген билгели. Теләсә нинди CSS-селекторны монда кыйммәт итеп кулланырга мөмкин. Гадәттә filterControls аша автоматик рәвештә урнаштырыла (киләсе вариантны карагыз).
Фильтрларны карагыз
filterControlsРәсемнәрне фильтрлау өчен нинди форма элементларын кулланырга мөмкинлеген билгели. HTML формасы элементларын сайлаган теләсә нинди CSS селекторын монда кыйммәт итеп кулланырга мөмкин.
Фильтрларны карагыз
autoConsiderScrollBarstrueӘгәр әйләндерү барлары күренсә яки юкка чыкса, булган киңлекне фаразлау. Бу автоматизм проблемалар тудырмаса, аны һәрвакыт true итеп калдырырга киңәш ителә.

Justified урнаштыру вариантлары

Килешенгән кыйммәтТасвирлау
autoFontSizefalseBoxәрбер сандыкның шрифт зурлыгын оригиналь сандык зурлыгына карап автоматик рәвештә яңарталар. Килешү буенча шрифт зурлыгы милеге ачык куелмаган.
desiredHeight190Элемент рәтләренең кирәкле биеклеген билгели. Факттагы биеклек булган киңлеккә һәм рәт элементларына карап исәпләнәчәк.
hideOnMissingImagetrueЙөкләп булмый торган рәсемнәр булган тартмаларны яшерә.
spaceBetween4Пиксельдәге элементлар арасын билгели.
lastRowAlign
2.3.0 версиясеннән
justifiedСоңгы рәтнең тәртибен билгели. Рөхсәт ителгән кыйммәтләр left , center , right һәм justified .
singleRowAlign
2.3.0 версиясеннән
justifiedБер рәт булса, тәртипне билгели. Рөхсәт ителгән кыйммәтләр left , center , right һәм justified .
fillLastRow
2.1.0 версиясеннән
true2.4.0 версиясеннән алынды ( 2.3.0 версиясеннән төшкән)
Соңгы рәт гел тулы булсын өчен рәсемнәрне тәртипкә китерегез. Рәсемнәрне динамик рәвештә кушарга уйласагыз, моны туктату яхшы идея булырга мөмкин.
Бер рәткә бернинди тәэсир итми ( fillSingleRow карагыз).
fillSingleRow
2.1.0 версиясеннән
true2.4.0 версиясеннән алынды ( 2.3.0 версиясеннән төшкән)
Әгәр бер генә рәт булса, ул рәсемнәрне гел тулы итеп тутыра. Галереяда сезнең бер-ике рәсемегез генә булырга мөмкин икән, моны туктату яхшы идея булырга мөмкин.

Waterfall урнаштыру вариантлары

Килешенгән кыйммәтТасвирлау
autoFontSizefalseBoxәрбер сандыкның шрифт зурлыгын оригиналь сандык зурлыгына карап автоматик рәвештә яңарталар. Килешү буенча шрифт зурлыгы милеге ачык куелмаган.
desiredWidth250Колонналарның кирәкле киңлеген билгели. Факттагы киңлек булган киңлеккә һәм баганалар санына карап исәпләнәчәк.
hideOnMissingImagetrueЙөкләп булмый торган рәсемнәр булган тартмаларны яшерә.
horizontalOrderfalseЭлементларның һәр баганада сулдан уңга бер элемент урнаштырылганын билгели, аннары иң багана мөстәкыйль булган иң сул баганада яңадан башлана. Килешү буенча элементлар һәрвакыт иң кечкенә биеклек белән баганага урнаштырылачак.
spaceBetween4Пиксельдәге элементлар арасын билгели.
singleRowAlign
since version 2.7.0
justifiedDefines the behavior when not all columns can be filled due to too few images. Allowed values are left, center, right and justified.

Күбрәк күрсәтелгән вариантлар

Алга киткән вариантлар өчен API-ны карагыз.

Семантик HTML

Гридзиның иң гади 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>

Ләкин, Гридзи бик сыгылучан һәм сез бүтән 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 структурасы кирәк. Бу турыда күбрәк белү өчен, Тапшырулар һәм тиреләрне карагыз.

Язулар һәм тиреләр

Галереягызга язулар өстәргә теләсәгез, тышкы кыяфәтне билгеләргә кирәк. Шуңа күрә кайбер алдан билгеләнгән тиреләр бар. Eachәрбер тире 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 структурасы турында уйлыйсыз икән, семантик HTML карагыз.

Язма өчен сез теләсә нинди тэг куллана аласыз, аның gridzyCaption класслы булуына инаныгыз. img элементына gridzyImage класс кирәк.

Aboveгарыдагы мисал сезгә gridzySkinClassic тиресен күрсәтә. Башкасын куллану өчен, тире исемен шуларның берсенә алыштырыгыз:

Тере

Мөмкин класслар
gridzySkinBlank
үз тиреңне булдыру өчен яхшы башлангыч
турыдан-туры карау
gridzySkinBlank
gridzySkinClassic
турыдан-туры карау
gridzySkinClassic
gridzySkinClassicLight(2.6.0 версиясеннән төшкән)
gridzySkinFullOverlay
турыдан-туры карау
gridzySkinFullOverlay
gridzySkinFullOverlayLight(2.6.0 версиясеннән төшкән)
gridzySkinLift
турыдан-туры карау
gridzySkinLift
gridzySkinLiftLight(2.6.0 версиясеннән төшкән)
gridzySkinMagnifier
зурайту функциясе кертелмәгән
турыдан-туры карау
gridzySkinMagnifier
gridzySkinMagnifierLight(2.6.0 версиясеннән төшкән)

Aboveгарыдагы барлык тиреләргә CSS файллары гына кирәк, ләкин JavaScript файлын таләп итүче өстәмә тиреләр бар:

<link rel="stylesheet" href="gridzy/skins/gridzySkinBlur/style.min.css" />
<script src="gridzy/skins/gridzySkinBlur/script.min.js"></script>
Мөмкин класслар
gridzySkinBlur
IE эшләми
турыдан-туры карау
gridzySkinBlur
gridzySkinBlurLight(2.6.0 версиясеннән төшкән)
gridzySkinCard
турыдан-туры карау
gridzySkinCard
gridzySkinCardLight(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>

Hereәрбер тире өчен ярдәмче үзгәрүчәннәрне һәм килешү кыйммәтләрен карагыз:

gridzySkinClassic
VariзгәрешлеКилешенгән кыйммәтМәгълүмат
--backgroundrgba(0, 0, 0, .7)теләсә нинди CSS фон кыйммәтен рөхсәт итә
--colorrgb(255, 255, 255)теләсә нинди CSS төс кыйммәтен рөхсәт итә
--text-shadownoneтеләсә нинди CSS текст-күләгә кыйммәтен рөхсәт итә
gridzySkinFullOverlay
VariзгәрешлеКилешенгән кыйммәтМәгълүмат
--backgroundrgba(0, 0, 0, .7)теләсә нинди CSS фон кыйммәтен рөхсәт итә
--colorrgb(255, 255, 255)теләсә нинди CSS төс кыйммәтен рөхсәт итә
--text-shadownoneтеләсә нинди CSS текст-күләгә кыйммәтен рөхсәт итә
gridzySkinLift
VariзгәрешлеКилешенгән кыйммәтМәгълүмат
--backgroundrgba(0, 0, 0, .7)теләсә нинди CSS фон кыйммәтен рөхсәт итә
--colorrgb(255, 255, 255)теләсә нинди CSS төс кыйммәтен рөхсәт итә
--text-shadow0 0 10px rgb(0, 0, 0), 0 0 20px rgb(0, 0, 0), 0 0 30px rgb(0, 0, 0)теләсә нинди CSS текст-күләгә кыйммәтен рөхсәт итә
gridzySkinMagnifier
VariзгәрешлеКилешенгән кыйммәтМәгълүмат
--backgroundrgba(0, 0, 0, .7)теләсә нинди CSS фон кыйммәтен рөхсәт итә
--colorrgb(255, 255, 255)теләсә нинди CSS төс кыйммәтен рөхсәт итә

Бу тире --text-shadow ярдәм итми

gridzySkinBlur
VariзгәрешлеКилешенгән кыйммәтМәгълүмат
--backgroundrgba(0, 0, 0, .7)теләсә нинди CSS фон кыйммәтен рөхсәт итә
--colorrgb(255, 255, 255)теләсә нинди CSS төс кыйммәтен рөхсәт итә
--text-shadow0 0 10px rgb(0, 0, 0)теләсә нинди CSS текст-күләгә кыйммәтен рөхсәт итә
gridzySkinCard
VariзгәрешлеКилешенгән кыйммәтМәгълүмат
--backgroundrgba(0, 0, 0, 1)теләсә нинди CSS фон кыйммәтен рөхсәт итә
--colorrgb(255, 255, 255)теләсә нинди CSS төс кыйммәтен рөхсәт итә
--text-shadownoneтеләсә нинди CSS текст-күләгә кыйммәтен рөхсәт итә

Алдан билгеләнгән тиреләр гади текст язуларын гына тәэмин итә. Сез үзегезнең һәм катлаулырак тирегезне булдыра аласыз. Зинһар, Стиль Гридзига игътибар итегез.

Стиль Гридзи

Әгәр дә алдан билгеләнгән тире сезнең ихтыяҗларыгызга туры килмәсә, сез үзегезнекен ясый аласыз.

Иң җиңел ысул - башта булган тирене күчереп алу һәм аны үз ихтыяҗларыгызга яраклаштыру. Алдан билгеләнгән тире 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 таба аласыз. Гридзи бу классны төп контейнер элементының барлык балаларына автоматик рәвештә куя. Шулай итеп, сез бу классны галерея әйберләрен стильләштерә аласыз.

Мөһим әйберләрне уйлагыз

  1. Предметның эчтәлеге тулысынча җаваплы булырга тиеш. Элемент күләме, әлбәттә, үзгәрәчәк дип уйлагыз. Пиксель кыйммәтләре урынына процент кыйммәтләрен кулланыгыз. Gridzy макетын карагыз autoFontSize , шрифт зурлыгын предмет тартмасы зурлыгына бәйли.
  2. Eachәрбер әйбер яхшы билгеләнгән аспектка ия булырга тиеш. Предметның аспект өлеше беркайчан да үзгәрмәячәк һәм челтәрне исәпләү өчен кирәк. Димәк, берәр әйбернең автоматик рәвештә яхшы билгеләнгән аспектлары булмаса, аны кул белән алдан билгеләгез (мәсәлән, css аша).

Кайбер очракларда, Гридзи башланганчы, әйберләрнең эчтәлеген стильләштерү җиңелрәк булырга мөмкин. Моның өчен вакытлыча класслы gridzy яки Gridzy javascript файлын бетерегез.

Бу! Бу сезнең үз тирегезне төзү өчен кирәк. Алдан билгеләнгән тиреләрнең күбесе моны күбрәк кулланмый.

Ләкин сез теләсәгез тагын да күбрәк булырга мөмкин ...

Алга киткән тиреләр

Gridzy gridzyItem тан гына күбрәк CSS классларын куллана. Аларның күбесе автоматик рәвештә урнаштырылачак, сез аларны стиллау өчен дә куллана аласыз.

Төп контейнер класслары

Класс исемеТасвирлау
gridzy
кул белән куярга
Гридзи автоматик рәвештә бу класс элементларын таба һәм аларны башлый.
gridzyAnimatedanimate варианты true булса, автоматик рәвештә куелачак. Әгәр дә бу класс кул белән куелса, animate варианты автоматик рәвештә дә true ашачак (ачыктан-ачык false булса).

Предмет класслары

Класс исемеТасвирлау
gridzyItemПредметны башлау процессы башлангач куелачак. Беркайчан да бетерелмәячәк.
gridzyItemInitializingПредметны башлау процессы башлангач куелачак. Бу әйбер тулысынча башлангач, gridzyItemReady белән алыштырылачак. Рәсемнәр тулысынча йөкләнгән дигән сүз түгел ( gridzyItemLoading карагыз), ләкин әйбер күренергә әзер.
gridzyItemReadygridzyItemInitializing предмет тулысынча башлангач алыштырылачак. Беркайчан да бетерелмәячәк. Рәсемнәр тулысынча йөкләнгән дигән сүз түгел ( gridzyItemComplete карагыз), ләкин әйбер күренергә әзер.
gridzyItemLoadingПредметны башлау процессы башлангач куелачак. gridzyItemComplete эчендәге рәсемнәр (гадәттә бер генә) тулы йөкләнгәч алыштырылачак.
gridzyItemCompletegridzyItemLoading эчендәге рәсемнәр (гадәттә бер генә) тулы йөкләнгәч алыштырылачак. Беркайчан да бетерелмәячәк.
gridzyItemInitialToVisibleПредмет беренче тапкыр чыга башлагач куелачак. Предмет бөтенләй күренгәч үк бетереләчәк.
gridzyItemVisibleПредмет тулысынча күренгәч үк куелачак. Предмет юкка чыга башлагач бетереләчәк.
gridzyItemVisibleToHiddenПредмет юкка чыга башлагач урнаштырылачак. Предмет тулысынча яшерелгәннән соң бетереләчәк.
gridzyItemHiddenПредмет тулысынча яшерелгәннән соң куелачак. Предмет барлыкка килә башлагач бетереләчәк.
gridzyItemHiddenToVisibleПредмет барлыкка килә башлагач урнаштырылачак (беренче тапкыр күренүдән кала - gridzyItemInitialToVisible классын карагыз). Предмет бөтенләй күренгәч үк бетереләчәк.
gridzyItemVisibleToVisibleЧелтәрдә нәрсәдер үзгәргәннән соң урнаштырылачак, ләкин әйбер үзе булган һәм күренеп торган. Changeзгәртү анимациясе беткәч бетереләчәк.

Килешү буенча процесс индикаторы һәм рәсемнәрнең барлыкка килүе һәм юкка чыгуы өчен анимацияләр Gridzy төп CSS файлында алдан билгеләнгән.

Aboveгарыда телгә алынган CSS класслары белән сез үзегезнең процесс индикаторын һәм анимацияләрне ясый аласыз. Gridzy төп CSS файлына карарга батырчылык итегез, сез нәрсәдән баш тартырга тиешлеген аңлау өчен. Курыкмый, анда барысы да яхшы документлаштырылган.

Йөкләү оптимизациясе

Әгәр дә сез күп рәсемнәр куллансагыз, Гридзига челтәрне тизрәк төзергә булышу яхшы идея булырга мөмкин.

Сикерү рәсемнәрен булдырмагыз

Челтәрне исәпләү өчен Гридзига барлык рәсемнәрнең аспект өлеше кирәк. Бу факт кайбер элементларга әзер булса, сикерү элементларына китерә. Рәсемнәр күбрәк булган саен, бу эффект шулкадәр күңелсезләнергә мөмкин.

Бу тәртипне булдырмас өчен, барлык img элементлары өчен width һәм height атрибутларын куегыз. Individualәрбер рәсем өчен дөрес кыйммәтләр кую мөһим, югыйсә сурәтләр бозылыр иде. Дөрес кыйммәтләр - тиешле рәсемнең оригиналь киңлеге һәм биеклеге:

<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>

Аннан соң Гридзи челтәрнең рәсемнәрнең зурлыкларын белмичә шунда ук исәпли ала.

Ялкау

Күренгән күренештә булган рәсемнәрне генә йөкләү өчен, бу адымнарны үтәгез:

  1. Aboveгарыда әйтелгәнчә width һәм height атрибутларын кертегез (дөрес кыйммәтләрне кулланыгыз)
  2. Барлык 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>

Бу адымнардан соң рәсемнәр визупорт янында яки эчендә йөкләнәчәк.

Процесс күрсәткече

Процесс индикаторы - рәсем йөкләнгән вакытта барлыкка килгән кечкенә анимация иконасы. Әгәр сез язуларны һәм тиреләрне куллансагыз, процесс индикаторы автоматик рәвештә күрсәтеләчәк. Otherwiseгыйсә сезгә кайбер үзгәрешләр кирәк:

  1. Imәрбер img элементын div элементына куегыз
    (яки бүтән элементка - семантик HTML карагыз)
  2. img элементына gridzyImage классын өстәгез
<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>

Аннан соң, процесс йөкләү өчен вакыт кирәк булса, процесс күрсәткечләрен күрергә кирәк.

Фильтрлар

Гридзидагы фильтрлар бик гади, ләкин көчле. Сезгә нинди фильтр кирәк булса да, аны тормышка ашыру бик ихтимал. Сезгә бары тик бераз 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 структурасы кирәк һәм барлык галерея әйберләре өчен класс исемнәрен куябыз, шуңа күрә аларны фильтрлый алабыз

<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 контейнерында туплыйбыз һәм 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>

Күргәнегезчә, без шулай ук filterControls параметры өчен CSS селекторын кулланабыз. id атрибуты булган div контейнеры шул CSS селекторы аша төймәләрне сайлау өчен хезмәт итә.

Бу!

JavaScript чишелешен өстен күрсәгез, API-ны карагыз.

API

Gridzy-ның үз API-ы булса да, күпчелек әйберләр ансыз, DOM-ны кулланып кына була. Гридзи моны сизәчәк һәм челтәрне көйләячәк. Ләкин шулай ук бик көчле API бар ...

DOM белән идарә итү

Барлык Документ объект моделе (DOM) манипуляцияләре өчен безгә башта контейнер элементы кирәк:

// get the container element
var gridzyElement = document.querySelector('.gridzy');

Рәсемнәр өстәгез

Контейнер элементына өстәгәнче, яңа бала элементын тулысынча төзү һәм тутыру мөһим. Otherwiseгыйсә Гридзи дөрес үлчәмнәрне таба алмый.

// 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
});

Фильтр кулланыгыз

Фильтр куллану - CSS селекторы булырга мөмкин булган опция filter кую.

// 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.
  }
});
Тасвирлау
onBeforeOptionsChangedВариантлар куйганчы турыдан-туры чакырылган шалтырату функциясе.
onOptionsChangedВариантларны куйганнан соң турыдан-туры чакырылган шалтырату функциясе.
onBeforeRenderТапшыру алдыннан турыдан-туры чакырылган шалтырату функциясе.
onRenderРендерингтан соң турыдан-туры чакырылган шалтырату функциясе.

Вакыйгаларны кулланыгыз

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 контейнер элементына, ә башка вакыйгалар контейнер элементындагы аерым элементларга атыла.

Гридзи контейнер элементында булган вакыйгалар:

Тасвирлау
gridzyBeforeInitГалерея башланыр алдыннан янгын.
gridzyInitГалерея инициализациясеннән соң янгын.
gridzyBeforeOptionsChangedВариантлар куйганчы янгын.
gridzyOptionsChangedВариантлар куйганнан соң янгын.
gridzyBeforeRenderКүрсәткәнче янгын.
gridzyRenderРендерингтан соң ут.
Әгәр сез мондагы вакыйгаларны сагынсагыз, зинһар, ярдәм соравын җибәрегез.

event.target Gridzy контейнер элементын тәкъдим итә.
event.detail.instance Gridzy мисалын китерә.

Вакыйгалар элементларга атылды:

Тасвирлау
gridzyItemBeforeInitПредметны башлап җибәргәнче янгын.
gridzyItemInitПредметны башлап җибәргәннән соң янгын.
gridzyItemLoadingПредмет йөкләнә башлагач янып тора.
gridzyItemReadyПредмет челтәрне исәпләүгә әзер булганда. Шуңа күрә аспект коэффициенты билгеле, ләкин рәсем әле дә йөкләнергә мөмкин.
gridzyItemCompleteПредмет рәсеме тулы йөкләнгәндә ут.
Әгәр сез мондагы вакыйгаларны сагынсагыз, зинһар, ярдәм соравын җибәрегез.

event.target тиешле элементны тәэмин итә.
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 барлык автоматизмнары актив булганда, түбәндәге ысулларга ихтыяҗ юк. Ләкин Гридзины традицион куллану өчен автоматизмны сүндерергә мөмкин:

// 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() аша урнаштырып булмый:

Килешенгән кыйммәтТасвирлау
autoInitOnDomReadytrueБитне йөкләүдә класслы gridzy элементларны ачыклый һәм аларны башлый.

Gridzy.setDefaultOptions() аша көйләнә
autoInitOnDomMutation
MutationObserver
trueКласс gridzy булган яңа элементларны DOMда барлыкка килү белән ачыклый һәм аларны башлый. (мәсәлән, бит күчешләрен кулланганда)

Gridzy.setDefaultOptions() аша көйләнә
autoSyncChildListMutation
MutationObserver
trueБала элементлары (рәсемнәр) өстәлгән яки бетерелгәнен ачыклый, челтәрне автоматик рәвештә яңарта.

data-grizy- , new Gridzy() , setOptions() , Gridzy.setDefaultOptions() аша көйләнә.
useOptionAttributestruedata-gridzy- атрибутлары гадәттә кулланыламы, юкмы икәнен билгели. Бу false вариантлар булса, бары тик милек API аша гына урнаштырырга мөмкин.

new Gridzy() , setOptions() , Gridzy.setDefaultOptions() аша көйләнә.
autoSyncAttributesMutation
MutationObserver
truedata-gridzy- атрибутларның үзгәрүен ачыклый, челтәрне автоматик рәвештә яңарта. Шулай ук gridzyAnimated класс өстәлгәнме яки бетерелгәнме, style атрибутик үзгәреше бармы-юкмы икәнен ачыклый. useOptionAttributes false булса, ул style атрибутик үзгәрешләрен генә ачыклый.

data-grizy- , new Gridzy() , setOptions() , Gridzy.setDefaultOptions() аша көйләнә.
autoSyncChildClassMutation
MutationObserver
trueБарлык балалар элементларының (атрибутларның) class атрибутларының үзгәрүен ачыклый. Фильтрларга кагылышлы.

data-grizy- , new Gridzy() , setOptions() , Gridzy.setDefaultOptions() аша көйләнә.
autoSyncImageMutation
MutationObserver

2.5.0 версиясеннән
trueБарлык рәсемнәрнең src атрибутларының үзгәрүен ачыклый. React яки охшаш китапханәләр белән кулланганда актуаль.

data-grizy- , new Gridzy() , setOptions() , Gridzy.setDefaultOptions() аша көйләнә.
autoRenderOnResize
ResizeObserver

2.6.0 версиясеннән
trueЭлемент киңлегенең үзгәрүен ачыклый. Respаваплы дизайнга кагылышлы. (2.6.0 версиясенә кадәр тәрәзә размерын тыңлаучы кулланылган)

data-grizy- , new Gridzy() , setOptions() , Gridzy.setDefaultOptions() аша көйләнә.

Кул белән башлау

// initialize a new Gridzy instance
var gridzyInstance = new Gridzy(document.querySelector('.gridzy'), {
  spaceBetween: 10,
  layout: 'waterfall'
});

Инстанцияне җимерегез

Төгәл әйтелде, Гридзи башлау киресе.

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();