האתר תורגם אוטומטית. אם משהו לא ברור, אנא עיין בתיעוד באנגלית.
שימוש בסיסי
העלה את קבצי 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>אפשרויות עיקריות
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 אחר. יש רק כמה נקודות שצריך לקחת בחשבון:
- כל צאצא של רכיב המכולה מייצג פריט אחד ברשת.
- גם רכיב ה-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(הוצא משימוש מאז גרסה 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 | יוגדר ברגע שהפריט יתחיל להופיע (למעט הופעה בפעם הראשונה - ראה 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 יכול לחשב את הרשת באופן מיידי ללא צורך לדעת את הגדלים בפועל של התמונות.
טעינה עצלנית
כדי לטעון רק תמונות שנמצאות בשדה התצוגה הגלוי, פשוט בצע את השלבים הבאים:
- הכנס תכונות
widthheightכמתואר לעיל (הקפד להשתמש בערכים הנכונים) - החלף את כל תכונות
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 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.
}
});השתמש באירועים
מאז גרסה 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 מספק את רכיב הפריט המתאים.
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();