מזהה GRid

הפודקאסט בשירות CSS – 011: Grid

פריסה נפוצה מאוד בעיצוב אינטרנט היא פריסה של כותרת עליונה, סרגל צד, גוף וכותרת תחתונה.

כותרת עם לוגו וניווט, עם סרגל צד ואזור תוכן שכולל כתבה.

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

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

סקירה כללית

אז מה אפשר לעשות ברשת? לפריסות הרשת יש את התכונות הבאות. במדריך זה תכירו את כל הסוגים.

  1. ניתן להגדיר רשת באמצעות שורות ועמודות. אפשר לבחור את הגודל של הטראקים של השורות והעמודות, או שהם יכולים להגיב לגודל התוכן.
  2. צאצאים ישירים של מאגר הרשת ימוקמו באופן אוטומטי על הרשת הזו.
  3. לחלופין, אפשר למקם את הפריטים במיקום המדויק הרצוי.
  4. ניתן לתת שמות לקווים ולאזורים ברשת כדי להקל על המיקום.
  5. ניתן לפזר מקום פנוי במכל הרשת בין המסלולים.
  6. פריטי רשת יכולים להיות מיושרים בתוך האזור שלהם.

טרמינולוגיה של הרשת

הרשת כוללת הרבה מונחים חדשים, כי זו הפעם הראשונה שבה ל-CSS יש מערכת פריסה אמיתית.

קווי רשת

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

השורות ממוספרות החל מ-1, המספור מופיע אחרי מצב הכתיבה וכיוון הסקריפט של הרכיב. פירוש הדבר הוא ששורה 1 תהיה בצד שמאל בשפה משמאל לימין כמו אנגלית, מימין ומשמאל בשפה מימין לשמאל, כמו ערבית.

ייצוג דיאגרמה של קווי רשת

טראקים של רשת

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

ייצוג דיאגרמה של מסלול רשת

תא רשת

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

ייצוג דיאגרמה של תא רשת

אזור הרשת

כמה תאי רשת ביחד. אזורי רשת נוצרים על ידי לגרום לפריט להתפרס על פני מספר מסלולים.

ייצוג בדיאגרמה של שטח רשת

פערים

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

ייצוג דיאגרמה של רשת עם רווחים

מאגר רשת

רכיב ה-HTML שעליו הוחל display: grid, ולכן יוצרת הקשר חדש של עיצוב רשת עבור הצאצאים הישירים.

.container {
  display: grid;
}

פריט ברשת

פריט רשת הוא פריט שהוא צאצא ישיר של מאגר הרשת.

<div class="container">
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
</div>

שורות ועמודות

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

.container {
    display: grid;
    grid-template-columns: 5em 100px 30%;
    grid-template-rows: 200px auto;
    gap: 10px;
}

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

אם ברכיב עם הסיווג .container יש פריטי צאצא, הן יתפרסו מיד על הרשת הזו. אפשר לראות את זה בפעולה בהדגמה שלמטה.

שכבת-העל של הרשת בכלי הפיתוח ל-Chrome יכולה לעזור לכם להבין את החלקים השונים ברשת.

פותחים את ההדגמה ב-Chrome. יש לבדוק את הרכיב עם הרקע האפור, שהמזהה שלו הוא container. מדגישים את הרשת על ידי בחירה בתג הרשת ב-DOM, לצד הרכיב .container. בתוך הכרטיסייה 'פריסה', בוחרים באפשרות Display Line Numbers (הצגת מספרי שורות) בתפריט הנפתח כדי לראות את מספרי השורות ברשת.

כפי שמתואר בכיתוב ובהוראות
רשת שמודגשת בכלי הפיתוח ל-Chrome שמוצגים בה מספרי שורות, תאים ומסלולים.

מילות מפתח מהותיות למידות

בנוסף למידות האורך והאחוז כפי שמתואר בקטע יחידות מידה, מסלולי רשת יכולים להשתמש במילות מפתח מהותיות לשינוי גודל. מילות המפתח האלה מוגדרות במפרט 'גודל התיבה'. ולהוסיף עוד שיטות לשינוי גודל ב-CSS, לא רק מסלולים של הרשת.

  • min-content
  • max-content
  • fit-content()

min-content מילת המפתח תהפוך את הרצועה לקטינה ככל שניתן, מבלי שתוכן הטראק יצבור. שינוי פריסת הרשת לדוגמה כך שתכלול שלושה מסלולים של עמודות בגודל min-content הם יהיו צרים כמו המילה הארוכה ביותר בטראק.

max-content למילת מפתח יש את ההשפעה ההפוך. הטראק יהיה רחב מספיק כדי שכל התוכן יוצג במחרוזת אחת ארוכה שאינה מנותקת. הדבר עלול לגרום לגלישה כי המחרוזת לא תיפרס.

fit-content() הפונקציה פועלת כמו max-content בהתחלה. עם זאת, ברגע שהטראק מגיע לגודל שמעבירים לפונקציה, התוכן מתחיל לגלוש. לכן, fit-content(10em) ייצור טראק שאורכו פחות מ-10em, אם הגודל של max-content קטן מ-10em, אבל אף פעם לא יותר מ-10em.

בהדגמה הבאה, נסו את מילות המפתח הבסיסיות של המידות על ידי שינוי המידות של מסלולי הרשת.

היחידה fr

יש לנו מאפייני אורך קיימים, אחוזים וגם מילות מפתח חדשות אלה. קיימת גם שיטה מיוחדת לשינוי גודל, שפועלת רק בפריסת רשת. זאת היחידה fr, אורך גמיש שמתאר את החלק של השטח הזמין בקונטיינר הרשת.

היחידה fr פועלת באותו אופן כמו השימוש בפונקציה flex: auto ב-Flexbox. היא תפנה מקום לאחר הכנת הפריטים. לכן, יש שלוש עמודות שמקבלות את אותו חלק של השטח הזמין:

.container {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
}

מאחר שהיחידה הארגונית חולקת את השטח הזמין, אפשר לשלב אותו עם פער גודל קבוע או עם מסלולים בגודל קבוע. כדי שרכיב עם רכיב בגודל קבוע והטראק השני יתפוס את המקום הפנוי שנותר, יכול לשמש כרשימת מעקב של grid-template-columns: 200px 1fr.

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

הפונקציה minmax()

תמיכה בדפדפן

  • Chrome: 57.
  • קצה: 16.
  • Firefox: 52.
  • Safari: 10.1.

מקור

הפונקציה הזו מאפשרת להגדיר גודל מינימלי ומקסימלי לטראק. זה יכול להיות די שימושי. אם ניקח לדוגמה את היחידה fr שמעליה מחלקת את השטח שנותר, אפשר לכתוב אותו באמצעות minmax() בתור minmax(auto, 1fr). היא בוחנת את הגודל הפנימי של התוכן, ואז מפזר את השטח הזמין לאחר מתן מספיק מקום לתוכן. כלומר, יכול להיות שלא יתקבלו טראקים שהחלק של כל אחד מהם זהה של כל השטח הזמין בקונטיינר הרשת.

כדי לאלץ מסלול לתפוס חלק שווה של השטח בקונטיינר הרשת פחות פערים, צריך להשתמש ב-minmax. מחליפים את 1fr כגודל הטראק ב-minmax(0, 1fr). כך הגודל המינימלי של הטראק הוא 0 ולא הגודל המינימלי של התוכן. כך הרשת תיקח את כל הגודל הזמין בקונטיינר. מנכים את הגודל הדרוש כדי ליצור את הפערים, ולשתף את השאר בהתאם ליחידות הארגוניות שלכם.

סימון repeat()

תמיכה בדפדפן

  • Chrome: 57.
  • קצה: 16.
  • Firefox: 76.
  • Safari: 10.1.

מקור

אם רוצים ליצור רשת נתיבים של 12 עמודות עם עמודות שוות, אפשר להשתמש בשירות ה-CSS הבא.

.container {
    display: grid;
    grid-template-columns:
      minmax(0,1fr),
      minmax(0,1fr),
      minmax(0,1fr),
      minmax(0,1fr),
      minmax(0,1fr),
      minmax(0,1fr),
      minmax(0,1fr),
      minmax(0,1fr),
      minmax(0,1fr),
      minmax(0,1fr),
      minmax(0,1fr),
      minmax(0,1fr);
}

אפשר גם לכתוב את זה באמצעות repeat():

.container {
    display: grid;
    grid-template-columns: repeat(12, minmax(0,1fr));
}

אפשר להשתמש בפונקציה repeat() כדי לחזור על כל קטע בדף פרטי הטראק. לדוגמה, אפשר לחזור על תבנית של טראקים. אפשר גם ליצור כמה טראקים קבועים וחלקים חוזרים.

.container {
    display: grid;
    grid-template-columns: 200px repeat(2, 1fr 2fr) 200px; /*creates 6 tracks*/
}

auto-fill וגם auto-fit

תוכלו לשלב את כל מה שלמדתם על שינוי גודל הטראקים, minmax(), וחוזרים על הפעולה, כדי ליצור תבנית שימושית בפריסת רשת. יכול להיות שלא תרצו לציין את מספר הטראקים של העמודה. אבל במקום זאת, אתם רוצים ליצור כמה שיותר פריטים שמתאימים למכל שלכם.

תוכל להשיג זאת באמצעות repeat() ומילות המפתח auto-fill או auto-fit. ברשת ההדגמה למטה אפשר ליצור כמה טראקים של 200 פיקסלים שמתאימים למאגר. אפשר לפתוח את ההדגמה בחלון חדש ולראות איך הרשת משתנה כשמשנים את גודל אזור התצוגה.

בהדגמה אנחנו מציגים כמה טראקים שמתאימים. עם זאת, המסלולים לא גמישים. יהיה פער בסוף עד שיהיה מספיק מקום לעוד טראק של 200 פיקסלים. אם מוסיפים את הפונקציה minmax(), ניתן לבקש כמה טראקים בהתאם לגודל המינימלי של 200 פיקסלים ולגודל מקסימלי של 1fr. לאחר מכן היא פורסת את המסלולים ב-200 פיקסלים, וכל השטח שנותר מתחלק ביניהם באופן שווה.

כך נוצרת פריסה רספונסיבית דו-ממדית ללא צורך בשאילתות מדיה.

יש הבדל קטן בין auto-fill לבין auto-fit. בהדגמה הבאה של פריסת הרשת עם התחביר שהוסבר למעלה, אבל הן מכילות רק שני פריטי רשת במכל הרשת. בעזרת מילת המפתח auto-fill אפשר לראות שנוצרו מסלולים ריקים. משנים את מילת המפתח ל-auto-fit והמסלולים מתכווצים ל-0. המשמעות היא שעכשיו המסלולים הגמישים מנצלים את כל נפח האחסון.

מלבד זאת, מילות המפתח auto-fill ו-auto-fit פועלות בדיוק באותו אופן. אין הבדל בין הנכסים ברגע שהטראק הראשון מתמלא.

מיקום אוטומטי

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

הצבת פריטים בעמודות

התנהגות ברירת המחדל של פריסת הרשת היא להציב פריטים לאורך השורות. אפשר במקום זאת להציב את הפריטים בעמודות באמצעות grid-auto-flow: column. עליך להגדיר מסלולי שורות, אחרת הפריטים ייצרו מסלולי עמודות מהותיים ולפרוס את כולן בשורה ארוכה אחת.

הערכים האלה מתייחסים למצב הכתיבה של המסמך. שורה תמיד פועלת בכיוון שבו משפט רץ במצב הכתיבה של המסמך או הרכיב. בהדגמה הבאה אפשר לשנות את המצב של הערך של grid-auto-flow ושל הנכס writing-mode.

מסלולים מתרחבים

אפשר לגרום לכך שחלק מהפריטים או כולם בפריסה שממוקמת באופן אוטומטי יתפרשו על פני יותר מטראק אחד. יש להשתמש במילת המפתח span בתוספת מספר השורות שיש להרחיב כערך עבור grid-column-end או grid-row-end.

.item {
    grid-column-end: span 2; /* will span two lines, therefore covering two tracks */
}

מכיוון שלא ציינת grid-column-start, פעולה זו משתמשת בערך הראשוני של auto ומוצבת בהתאם לכללים של מיקום אוטומטי. אפשר גם לציין את אותו הדבר באמצעות הקיצור grid-column:

.item {
    grid-column: auto / span 2;
}

השלמת רווחים

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

בהדגמה הבאה מוצגת ההתנהגות הזו. תיבת הסימון תפעיל את מצב האריזה בצפיפות. כדי להפעיל את האפשרות הזו, צריך לתת ל-grid-auto-flow את הערך dense. אחרי שמגדירים את הערך הזה, היא תציג פריטים בשלב מאוחר יותר בפריסה וישתמש בהם כדי למלא את הפערים. כלומר, יכול להיות שהמסך יתנתק מהסדר הלוגי.

הצבת פריטים

כבר יש לך הרבה פונקציונליות מ-CSS Grid. עכשיו נראה איך אנחנו ממקמים פריטים ברשת שיצרנו.

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

המאפיינים שאפשר להשתמש בהם כדי למקם פריטים לפי מספר שורה הם:

הם כוללים קיצורי דרך שמאפשרים להגדיר שורות התחלה וסיום בו-זמנית:

כדי למקם את הפריט, צריך להגדיר את שורות ההתחלה והסיום של אזור הרשת שאליו הפריט ימוקם.

.container {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    grid-template-rows: repeat(2, 200px 100px);
}

.item {
    grid-column-start: 1; /* start at column line 1 */
    grid-column-end: 4; /* end at column line 4 */
    grid-row-start: 2; /*start at row line 2 */
    grid-row-end: 4; /* end at row line 4 */
}

כלי הפיתוח ל-Chrome יכולים לספק מדריך חזותי של השורות כדי לבדוק איפה הפריט ממוקם.

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

סידור פריטים במקבצים

בעזרת מיקום מבוסס-קווים אפשר למקם פריטים באותו תא ברשת. זה אומר שאתם יכולים לקבץ פריטים, או לגרום לחפיפה חלקית של פריט אחר. פריטים שמגיעים מאוחר יותר במקור יוצגו מעל פריטים קודמים. אפשר לשנות את סדר הערימה באמצעות z-index בדיוק כמו זה של פריטים מוצבים.

מספרי שורות שליליים

כשיוצרים רשת באמצעות grid-template-rows ו-grid-template-columns יוצרים את מה שמכונה רשת מפורשת. זוהי רשת שהגדרתם והגודל שלה מיועד לטראקים.

לפעמים יהיו לכם פריטים שמוצגים מחוץ לרשת המפורשת הזו. לדוגמה, אפשר להגדיר מסלולי עמודות ואז להוסיף כמה שורות של פריטי רשת בלי להגדיר בכלל מסלולי שורות. גודל המסלולים ייקבע באופן אוטומטי כברירת מחדל. אפשר גם להציב פריט באמצעות grid-column-end, שנמצא מחוץ לרשת המפורשת שהוגדרה. בשני המקרים האלה הרשת תיצור מסלולים כדי שהפריסה תפעל, והמסלולים האלה מכונים Implicit grid.

אם עובדים עם רשת מרומזת או מפורשת, לרוב לא תהיה השפעה על הרשת. עם זאת, במיקום שמבוסס על שורות אפשר לגלות את ההבדל העיקרי בין השניים.

מספרי שורות שליליים מאפשרים להציב פריטים משורת הסיום של הרשת המפורשת. האפשרות הזו שימושית אם רוצים שפריט יפרס על פני השורה הראשונה בשורה האחרונה של העמודה. במקרה הזה, אפשר להשתמש ב-grid-column: 1 / -1. הפריט יימתח ישר על פני הרשת המפורשת.

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

סרגל צד עם 8 פריטים ברשת אחות

יכול להיות שתהיה לך אפשרות לתת לפריט הזה grid-row: 1 / -1. בהדגמה שלמטה אפשר לראות שזה לא עובד. הטראקים נוצרים ברשת המשתמעת אין דרך להגיע לסוף הרשת באמצעות -1.

קביעת גודל של טראקים מרומזים

כברירת מחדל, הגודל של טראקים שנוצרו ברשת המשתמעת ייקבע באופן אוטומטי. עם זאת, אם אתם רוצים לשלוט בגודל השורות, להשתמש נכס grid-auto-rows, ולעמודות grid-auto-columns

כדי ליצור את כל השורות המשתמעות בגודל מינימלי של 10em ובגודל מקסימלי של auto:

.container {
    display: grid;
    grid-auto-rows: minmax(10em, auto);
}

כדי ליצור עמודות משתמעות עם תבנית של מסלולים ברוחב של 100 פיקסלים ו-200 פיקסלים. במקרה הזה העמודה המשתמעת הראשונה תהיה בגודל 100 פיקסלים, ב-200 הפיקסלים השניים, את 100 הפיקסלים השלישיים, וכן הלאה.

.container {
    display: grid;
    grid-auto-columns: 100px 200px;
}

קווי רשת בעלי שם

אם יש לשורות שם ולא מספר, קל יותר למקם פריטים בפריסה. אפשר לתת שם לכל קו ברשת על ידי הוספת שם לבחירתכם בין סוגריים מרובעים. אפשר להוסיף כמה שמות, שמופרדת באמצעות רווח בתוך אותם הסוגריים. אחרי שבוחרים שורות בשמות, אפשר להשתמש בהן במקום המספרים.

.container {
    display: grid;
    grid-template-columns:
      [main-start aside-start] 1fr
      [aside-end content-start] 2fr
      [content-end main-end]; /* a two column layout */
}

.sidebar {
    grid-column: aside-start / aside-end;
    /* placed between line 1 and 2*/
}

footer {
    grid-column: main-start / main-end;
    /* right across the layout from line 1 to line 3*/
}

אזורי תבנית של רשת

אפשר גם לתת שמות לאזורים ברשת ולמקם פריטים באותם אזורים. זוהי טכניקה נהדרת מכיוון שהיא מאפשרת לכם לראות איך הרכיב שלכם נראה ב-CSS.

כדי להתחיל, נותנים שם לצאצאים הישירים של מאגר הרשת באמצעות נכס grid-area:

header {
    grid-area: header;
}

.sidebar {
    grid-area: sidebar;
}

.content {
    grid-area: content;
}

footer {
    grid-area: footer;
}

השם יכול להיות כל דבר שתרצו, מלבד מילות המפתח auto ו-span. אחרי שנותנים לכל הפריטים את השמות, להשתמש grid-template-areas כדי להגדיר אילו תאי רשת יתפרסו כל פריט. כל שורה מוגדרת בין מירכאות.

.container {
    display: grid;
    grid-template-columns: repeat(4,1fr);
    grid-template-areas:
        "header header header header"
        "sidebar content content content"
        "sidebar footer footer footer";
}

יש כמה כללים לשימוש במאפיין grid-template-areas.

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

אם תפרו אחד מהכללים שלמעלה, המערכת תתייחס לערך הזה כלא חוקי והוא ייעלם.

כדי להשאיר רווח לבן ברשת, צריך להשתמש ב-. או בכפולות ללא רווח לבן ביניהן. לדוגמה, כדי להשאיר את התא הראשון ברשת ריק, אפשר להוסיף סדרה של . תווים:

.container {
    display: grid;
    grid-template-columns: repeat(4,1fr);
    grid-template-areas:
        "....... header header header"
        "sidebar content content content"
        "sidebar footer footer footer";
}

מכיוון שכל הפריסה שלכם מוגדרת במקום אחד, מאפשר להגדיר מחדש בקלות את הפריסה באמצעות שאילתות מדיה. בדוגמה הבאה יצרתי פריסת שתי עמודות שעוברת לשלוש עמודות על ידי הגדרה מחדש של הערך של grid-template-columns ושל grid-template-areas. כדי לשחק עם גודל אזור התצוגה ולראות את השינוי בפריסה, פותחים את הדוגמה בחלון חדש.

אפשר גם לראות איך הנכס grid-template-areas קשור ל-writing-mode ולכיוון, בדומה לשיטות רשת אחרות.

מאפיינים מקוצרים

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

grid-template

תמיכה בדפדפן

  • Chrome: 57.
  • קצה: 16.
  • Firefox: 52.
  • Safari: 10.1.

מקור

grid-template הוא קיצור של grid-template-rows, grid-template-columns ו-grid-template-areas. קודם מגדירים את השורות, וגם הערך של grid-template-areas. גודל העמודות נוסף אחרי /.

.container {
    display: grid;
    grid-template:
      "head head head" minmax(150px, auto)
      "sidebar content content" auto
      "sidebar footer footer" auto / 1fr 1fr 1fr;
}

מלון אחד (grid)

תמיכה בדפדפן

  • Chrome: 57.
  • קצה: 16.
  • Firefox: 52.
  • Safari: 10.1.

מקור

grid אפשר להשתמש בקיצור הדרך בדיוק כמו בקיצור grid-template. אם משתמשים בו בצורה הזו, היא תאפס את מאפייני הרשת האחרים שהיא מקבלת לערכים הראשוניים שלהם. הקבוצה המלאה היא:

  • grid-template-rows
  • grid-template-columns
  • grid-template-areas
  • grid-auto-rows
  • grid-auto-columns
  • grid-auto-flow

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

.container {
    display: grid;
    grid: repeat(2, 80px) / auto-flow  120px;
}

יישור

בפריסת הרשת נעשה שימוש באותם מאפייני יישור שלמדתם במדריך Flexiblebox. ברשת, המאפיינים שמתחילים ב-justify- תמיד משמשים בציר המוטבע. את הכיוון שבו המשפטים רצים במצב הכתיבה.

המאפיינים שמתחילים ב-align- משמשים בציר הבלוקים, את הכיוון שבו בלוקים פרוסים במצב הכתיבה.

  • justify-content וגם align-content: לפזר מקום נוסף בקונטיינר הרשת סביב נתיבים או בין נתיבים.
  • justify-self ו- align-self: מוחלות על פריט ברשת כדי להזיז אותו בתוך אזור הרשת שבו הוא ממוקם.
  • justify-items ו- align-items: מוחלות על מאגר הרשת כדי להגדיר את כל המאפיינים של justify-self בפריטים.

חלוקת שטח נוסף

בהדגמה הזו, הרשת גדולה יותר מהשטח הנדרש לפריסת קווים ברוחב קבוע. כלומר, יש מקום גם במידות של השורה וגם במידות הבלוק של הרשת. כדאי לנסות ערכים שונים של align-content ושל justify-content כדי לראות איך המסלולים פועלים.

חשוב לזכור איך הפערים גדלים כשמשתמשים בערכים כמו space-between, וכל פריט ברשת שחוצה שני מסלולים גדל גם הוא כדי לקלוט את השטח הנוסף שיתווסף לפער.

הזזת תוכן

נראה שפריטים עם צבע רקע ממלאים באופן מלא את אזור הרשת שבו הם ממוקמים, כי הערך הראשוני של justify-self ושל align-self הוא stretch.

בהדגמה, משנים את הערכים של justify-items ושל align-items כדי לראות איך הפעולה הזו משנה את הפריסה. הגודל של שטח הרשת לא משתנה, במקום זאת, הפריטים מועברים בתוך האזור המוגדר.

בדיקת ההבנה

בחינת הידע שלכם על רשת

אילו מהמונחים הבאים הם מונחי רשת של CSS?

שורות
הרשת מחולקת באמצעות המפרידים האופקיים והאנכיים האלה.
מעגלים
מצטערים, אין מושגים של מעגלים ברשת CSS.
תאים
הצטלבות אחת של שורה ועמודה יוצרת תא רשת.
אזורים
תאים מרובים.
רכבות
מצטערים, אין רעיונות לגבי רכבות ברשת CSS.
פערים
הרווח בין התאים.
רצועות
שורה אחת או עמודה מסוימת היא טראק ברשת.
main {
  display: grid;
}

מהו כיוון ברירת המחדל של פריסת הרשת?

שורות
אם לא הוגדרו עמודות, הילדים נפרסו בכיוון הבלוקים כרגיל.
עמודות
אם הפרמטר grid-auto-flow: column קיים, המשבצות יופיעו כעמודות.

מה ההבדל בין auto-fit לבין auto-fill?

הפונקציה auto-fit תמתח את התאים כך שיתאימו למאגר, בעוד ש-auto-fill לא ימתח אותה.
auto-fill יכניס כמה שיותר פריטים לתבנית, בלי למתוח. Fit מתאימה את העיצוב.
הפונקציה auto-fit תמתח מכל כדי להתאים לילדים, כאשר auto-fill מתאים את הילדים למכל.
זה לא אופן הפעולה של הנכסים האלה.

מה זה min-content?

בדיוק כמו 0%
0% הוא הערך היחסי של תיבת ההורה, ואילו min-content הוא ביחס למילים ולתמונות שבתיבה.
האות הקטנה ביותר
יש אות קטנה ביותר, אבל אותיות הן לא מה שmin-content מתייחס אליה.
המילה או התמונה הארוכה ביותר.
בביטוי 'CSS זה מגניב', המילה 'גדולים' היא min-content.

מה זה max-content?

המשפט הארוך ביותר או התמונה הגדולה ביותר.
זהו הגודל המקסימלי שתוכן התיבה מבקש או מציין. זהו משפט ברוחב שלו או תמונה ברוחב שלו.
המכתב הארוך ביותר.
אמנם יש אות ארוכה ביותר, אבל האותיות הן לא מה שmax-content מתייחס אליה.
המילה הארוכה ביותר.
המילה הארוכה ביותר היא min-content.

מה זה מיקום אוטומטי?

כשהרשת מקבלת את פריטי הצאצא ומציבה אותם בסדר הטוב ביותר על סמך היוריסטיקה בדפדפן.
אף דפדפן לא ישנה את סדר התוכן שלך, רק הסגנונות שלך יכולים לשנות אותו.
כשפריטי הצאצא ברשת קיבלו את הפרמטר grid-area והם ממוקמים בתא הזה.
זהו מיקום מפורש ולא מיקום אוטומטי.
כשפריטי רשת שלא הוקצו ממוקמים לידו בתבנית פריסה.
פריטי רשת ללא אזור מפורש ימוקמו בתא הרשת הזמין הבא

משאבים

המדריך הזה מספק סקירה כללית על החלקים השונים במפרט של פריסת הרשת. כדי לקבל מידע נוסף, אפשר לעיין במקורות המידע הבאים.