בעימודים או layouts מבוססי CSS Grid – ברירת המחדל להצבת אלמנטים בגריד עצמו היא על ידי הגדרת השורות, או בעצם הגדרת קווי הגריד לפיהם יתחילו ויסתיימו אלמנטים.
התכונה Grid Area היא אלטרנטיבה לקביעת קווי הגריד ומציעה דרך שֵׁמִית בה ניתן לתת שמות לאיזורים בגריד כך שהאלמנטים יתאימו עצמם בקלות לאיזורים לפי אותם שמות. זה אולי מעט מבלבל בתחילה אך מהר מאד תבינו כי לא ניתן להתעלם מהכח שהתכונה Grid Areas מאפשרת.
מתן שמות לאיזורים עם התכונה grid-area
הדבר הראשון שיש לעשות הוא להגדיר שמות (כראות עיניכם) לאלמנטים בגריד (Grid Items) באמצעות התכונה grid-area
:
.item-1 {
grid-area: head;
}
.item-2 {
grid-area: main;
}
.item-3 {
grid-area: side;
}
.item-4 {
grid-area: footer;
}
תיאור המתווה באמצעות grid-template-areas
לאחר מכן עליכם להשתמש בתכונה grid-template-areas
על הקונטיינר של הגריד בכדי להגדיר כיצד אותם איזורים להם סיפקתם שמות ייושמו:
.container {
display: grid;
grid-template-columns: 2fr 2fr 1fr 2fr;
grid-template-rows: 100px 200px 100px;
grid-template-areas:
"head head . side"
"main main . side"
"footer footer footer footer";
}
הגדרת ערך עבור grid-template-areas
מאפשר לכם להשתמש ב Ascii. כל סקשיין בתוך סוגריים כפולות מייצג שורה, וכל מילה מייצגת עמודה. הסימן נקודה ( . ) משמש עבור תא ריק בגריד ובאפשרותכם להשתמש במספר נקודות רציפות לטובת הנוחות.
רווחים אינם רלוונטים ובאפשרותכם לשחק עם הפורמט כפי שתרצו. הנה דוגמה הזהה בדיוק לדוגמה הקודמת שהצגתי:
.container {
/* ... */
grid-template-areas:
"head head ..... side"
"main main ..... side"
"footer footer footer footer";
}
התוצאה של קוד זה תהיה משהו בסגנון הבא:
כעת בואו נשחק עם הערך של grid-template-areas
בכדי לקבל תוצאה שונה לגמרי, וזאת בלי שנגענו כלל בתכונות של ה grid-items אותם קבענו בהתחלה. הדוגמה הבאה אולי אינה שימושית במיוחד, אך מתארת היטב את הכח של grid-template-areas
:
.container {
/* ... */
grid-template-areas:
"head head . side"
"main main main side"
". footer footer side";
/* ... */
}
מה לגבי רספונסיביות ו Grid Areas?
יותר פשוט משנדמה לכם. למעשה, אחד היתרונות המשמעותיים של Grid Areas היא כאשר משתמשים ב Media Queries. ניתן להגיע לעימודים רספונסיבים לחלוטין עם שינוי בתכונה אחת בלבד:
@media screen and (max-width: 40em) {
.container {
grid-template-areas:
"head head head head"
"main main main main"
"side side side side"
"footer footer footer footer";
}
}
שימו לב לשינוי במיקום האלמנטים ללא שום צורך לגעת במקור. אם אינכם צופים ממובייל – הקטינו את הדפדפן בכדי לראות את התוצאה שמתקבלת:
אפרופו Media Queries – תנו מבט בפוסט מגניב על עימוד רספונסיבי ללא Media Queries…
Thanks to Alligator.io for the post.
יופי של מדריך, תודה רבה לך. סתם לידע כללי (מכיוון שזו פעם ראשונה שאני מגיב באתר שלך), האתר שלך מגניב, אני גולש כבר הרבה זמן בבלוגים על פיתח ועיצוב אתרים והבלוג הכי מוצלח שנתקלתי בו עד עכשיו זה הבלוג שלך..
היי יאיר, כיף לשמוע! שמח שאתה נהנה מהתוכן… (ואתה מוזמן להמשיך להגיב, להעיר ולשאול שאלות) 🙂
אליפות הבלוג, הכל מוסבר יפה בצורה יוצאת דופן. תודה!
תענוג לשמוע קובי, תודה שביקרת 🙂