גרסה 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קובע באילו רכיבי טופס ניתן להשתמש כדי לסנן את התמונות. כל בורר CSS, שבוחר רכיבי טופס HTML, יכול לשמש כערך כאן.
בדוק מסננים
autoConsiderScrollBarstrueכדי לחזות את הרוחב הזמין אם פסי גלילה יופיעו או ייעלמו. תמיד מומלץ להשאיר את זה במצב true אלא אם האוטומטיזם הזה גורם לבעיות.

Justified אפשרויות פריסה

ערך ברירת מחדלתֵאוּר
autoFontSizefalseעדכון אוטומטי של מאפיין גודל הגופן של כל תיבה בהתבסס על גודל התיבה המקורית. כברירת מחדל, המאפיין font-size אינו מוגדר במפורש.
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
trueהוסר מאז גרסה 2.4.0 (הוצא משימוש מאז גרסה 2.3.0 )
מסדר את התמונות כך שהשורה האחרונה תמיד מלאה לגמרי. אם אתה מתכנן להוסיף תמונות באופן דינמי, זה יכול להיות רעיון טוב לבטל את ההפעלה.
לא משפיע על שורות בודדות (ראה fillSingleRow ).
fillSingleRow
מאז גרסה 2.1.0
trueהוסר מאז גרסה 2.4.0 (הוצא משימוש מאז גרסה 2.3.0 )
אם יש רק שורה אחת, זה מסדר את התמונות כך שהשורה תמיד מלאה לגמרי. אם יכול לקרות שיש לך רק תמונה אחת או שתיים בגלריה, זה יכול להיות רעיון טוב לבטל זאת.

Waterfall אפשרויות פריסה

ערך ברירת מחדלתֵאוּר
autoFontSizefalseעדכון אוטומטי של מאפיין גודל הגופן של כל תיבה בהתבסס על גודל התיבה המקורית. כברירת מחדל, המאפיין font-size אינו מוגדר במפורש.
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 הפשוט ביותר של 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 אחר. יש רק כמה נקודות שצריך לקחת בחשבון:

  • כל צאצא של רכיב המכולה מייצג פריט אחד ברשת.
  • גם רכיב ה-container וגם הילדים שלו יכולים להיות כל סוג תג, כגון 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, עיין ב- HTML סמנטי .

עבור הכיתוב אתה יכול להשתמש בכל סוג של תג, רק ודא שיש לו את המחלקה gridzyCaption . האלמנט img צריך את המחלקה gridzyImage .

הדוגמה שלמעלה מראה לך את העור 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)

כל הסקינים הנ"ל צריכים רק קובץ 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>

בדוק את המשתנים הנתמכים וערכי ברירת המחדל עבור כל עור כאן:

gridzySkinClassic
מִשְׁתַנֶהערך ברירת מחדלמֵידָע
--backgroundrgba(0, 0, 0, .7)מאפשר כל ערך רקע CSS
--colorrgb(255, 255, 255)מאפשר כל ערך צבע CSS
--text-shadownoneמאפשר כל ערך צל של טקסט CSS
gridzySkinFullOverlay
מִשְׁתַנֶהערך ברירת מחדלמֵידָע
--backgroundrgba(0, 0, 0, .7)מאפשר כל ערך רקע CSS
--colorrgb(255, 255, 255)מאפשר כל ערך צבע CSS
--text-shadownoneמאפשר כל ערך צל של טקסט CSS
gridzySkinLift
מִשְׁתַנֶהערך ברירת מחדלמֵידָע
--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
מִשְׁתַנֶהערך ברירת מחדלמֵידָע
--backgroundrgba(0, 0, 0, .7)מאפשר כל ערך רקע CSS
--colorrgb(255, 255, 255)מאפשר כל ערך צבע CSS

עור זה אינו תומך --text-shadow

gridzySkinBlur
מִשְׁתַנֶהערך ברירת מחדלמֵידָע
--backgroundrgba(0, 0, 0, .7)מאפשר כל ערך רקע CSS
--colorrgb(255, 255, 255)מאפשר כל ערך צבע CSS
--text-shadow0 0 10px rgb(0, 0, 0)מאפשר כל ערך צל של טקסט CSS
gridzySkinCard
מִשְׁתַנֶהערך ברירת מחדלמֵידָע
--backgroundrgba(0, 0, 0, 1)מאפשר כל ערך רקע CSS
--colorrgb(255, 255, 255)מאפשר כל ערך צבע CSS
--text-shadownoneמאפשר כל ערך צל של טקסט 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 מגדיר את המחלקה הזו באופן אוטומטי לכל הילדים הישירים של אלמנט המכולה הראשי. אז אתה יכול להשתמש במחלקה הזו כדי לעצב את הפריטים בגלריה שלך.

שים לב לדברים חשובים

  1. תוכן הפריט צריך להיות תגובה מלאה. קחו בחשבון שגודל האלמנט בהחלט ישתנה. השתמש בערכי אחוזים במקום בערכי פיקסלים. ותסתכל על אפשרות הפריסה של Gridzy autoFontSize , הקושרת את גודל הגופן לגודל תיבת הפריט.
  2. לכל פריט צריך להיות יחס רוחב-גובה מוגדר היטב. יחס הגובה-רוחב של הפריט לעולם לא ישתנה והוא נחוץ כדי לחשב את הרשת. אז אם לפריט אין באופן אוטומטי יחס רוחב-גובה מוגדר היטב, הגדר אותו מראש באופן ידני (למשל באמצעות 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יוגדר ברגע שהפריט יתחיל להופיע (למעט הופעה בפעם הראשונה - ראה class 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 יכול לחשב את הרשת באופן מיידי ללא צורך לדעת את הגדלים בפועל של התמונות.

טעינה עצלנית

כדי לטעון רק תמונות שנמצאות בשדה התצוגה הגלוי, פשוט בצע את השלבים הבאים:

  1. הכנס תכונות 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>

לאחר שלבים אלה התמונות ייטענו ברגע שהן נמצאות ליד או בתוך יציאת התצוגה.

מחוון תהליך

מחוון התהליך הוא האייקון המונפש הקטן המופיע בזמן טעינת התמונה. אם אתה משתמש בכתוביות ובעורים , מחוון התהליך יוצג אוטומטית. אחרת אתה צריך כמה התאמות:

  1. הכניסו כל אלמנט img לאלמנט div
    (או לתוך כל אלמנט אחר - ראה HTML סמנטי למידע נוסף)
  2. הוסף את המחלקה 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 web docs . יש גם מבוא ל-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.
  }
});
תֵאוּר
onBeforeOptionsChangedפונקציית התקשרות חוזרת המופעלת ישירות לפני הגדרת אפשרויות.
onOptionsChangedפונקציית התקשרות חוזרת המופעלת ישירות לאחר הגדרת אפשרויות.
onBeforeRenderפונקציית Callback המופעלת ישירות לפני העיבוד.
onRenderפונקציית Callback המופעלת ישירות לאחר העיבוד.

השתמש באירועים

מאז גרסה 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:

תֵאוּר
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 פעיל, אין צורך בשיטות שלהלן. אבל ניתן לכבות את האוטומטיות כדי להשתמש ב-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() , בגלל סיבות הגיוניות:

ערך ברירת מחדלתֵאוּר
autoInitOnDomReadytrueמזהה אלמנטים עם class gridzy בעת טעינת העמוד ומאתחל אותם.

ניתן להגדרה באמצעות Gridzy.setDefaultOptions()
autoInitOnDomMutation
MutationObserver
trueמזהה אלמנטים חדשים עם class gridzy ברגע שהם מופיעים ב-DOM ומאתחל אותם. (למשל על שימוש במעברי דפים)

ניתן להגדרה באמצעות Gridzy.setDefaultOptions()
autoSyncChildListMutation
MutationObserver
trueמזהה אם אלמנטים צאצאים (תמונות) מתווספים או מוסרים, ומעדכן את הרשת באופן אוטומטי.

ניתן להגדרה באמצעות data-grizy- , new Gridzy() , setOptions() , Gridzy.setDefaultOptions()
useOptionAttributestrueמגדיר האם נעשה שימוש בדרך כלל בתכונות data-gridzy- או לא. אם זה false ניתן להגדיר אפשרויות רק באמצעות ה-API הקנייני.

ניתן להגדרה באמצעות new Gridzy() , setOptions() , Gridzy.setDefaultOptions()
autoSyncAttributesMutation
MutationObserver
trueמזהה שינויים של תכונות data-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מזהה שינויים ברוחב האלמנט. רלוונטי לגבי עיצוב רספונסיבי. (לפני גרסה 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'
});

להשמיד את המופע

בערך, ההפך מאתחול 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();