5 שלב בניית היכולות

Layout — Grid, Flexbox ואמנות הרווח הלבן

בפרק הזה תכירו את ההבדל החד בין CSS Grid ל-Flexbox ותדעו בדיוק מתי להשתמש בכל אחד. תבנו bento grid layout בסגנון Apple — הטרנד המרכזי של 2025-2026. תיישמו את מערכת ה-8px grid ליצירת spacing עקבי בכל האתר. תלמדו להשתמש ב-whitespace לא כ"מקום ריק" אלא ככלי עיצוב מכוון — עקרון ה-Gestalt proximity, confidence whitespace של מותגי יוקרה, ו-content-width vs full-bleed. בסוף יהיה לכם פרומפט ל-AI שמתאר layout בשפה של מעצבים — לא "תוסיף section" אלא "bento grid, 4×3, עם 7 תאים וספציפיקציית spacing 8-16-24-48".

מה יהיה לך בסוף הפרק הזה
מה תוכלו לעשות בסוף הפרק הזה
דרישות קדם
הפרויקט שלך

לאורך הקורס אתם בונים את היכולת להפוך אתר גנרי שAI בנה לאתר שנראה כמו עבודת סטודיו — ה-capstone בפרק 13. בפרקים 1-2 זיהיתם את הסימנים הגנריים והבנתם מה הופך אתר לפרימיום. בפרק 3 בניתם פלטת צבעים עם design tokens. בפרק 4 הוספתם שכבה שנייה — טיפוגרפיה עם typographic scale. בפרק הזה (5) מוסיפים את השכבה השלישית — Layout, spacing, ו-whitespace. צבע + טיפוגרפיה + layout = השלישייה שקובעת 80% מה-"professional feel" של האתר. בפרק הבא (6) נעבור ל-Modern CSS Superpowers — Container Queries, :has(), @layer, subgrid — הפיצ'רים של 2024-2026 שAI עדיין לא משתמש בהם בברירת-מחדל. פרק 5 הוא דרישת-קדם חובה לפרק 10 (Responsive Design), שם ניקח את ה-Grid וה-Flexbox שלנו ונלמד להתאים אותם לכל מסך.

מילון מונחים — 13 מושגים מרכזיים בפרק
מונח (English)תרגוםהגדרה בשורה אחת
CSS Gridרשת CSSמערכת layout דו-ממדית — שליטה בו-זמנית על שורות וגם על עמודות, ללא hacks
Flexboxתיבה גמישהמערכת layout חד-ממדית — שורה אחת או עמודה אחת, עם alignment ו-distribution אוטומטיים
grid-template-areasאזורי תבניתSyntax שמאפשר להגדיר layout באמצעות שמות ("header", "sidebar") — קריא כמו ASCII art
Bento Gridרשת בנטוLayout בהשראת קופסת ארוחת הצהריים היפנית — תאים בגדלים שונים ב-grid קבוע; טרנד מרכזי 2025-2026
8px Grid Systemמערכת 8 פיקסליםכל ה-spacing באתר הוא כפולה של 8 (8, 16, 24, 32, 48, 64, 96) — יוצר עקביות וקצב ויזואלי
Whitespaceרווח לבן / רווח שליליהמרחב הריק בין אלמנטים — לא בזבוז אלא כלי עיצוב שמנחה עין ויוצר היררכיה
Visual Groupingקיבוץ ויזואליהצורה שבה עין המשתמש קושרת אלמנטים יחד על בסיס קרבה פיזית
Gestalt Proximityעקרון הקרבהעקרון פסיכולוגיה: אלמנטים שקרובים זה לזה נתפסים כשייכים לאותה קבוצה
auto-fit / auto-fillהתאמה/מילוי אוטומטימילות מפתח ב-Grid ש"ממלאות" שורה עם כמה שיותר עמודות ברוחב מינימום — responsive בלי media queries
gapמרווחCSS property אחד שמחליף margin-hacks — עובד ב-Grid, Flexbox, ו-multi-column
Magazine LayoutLayout של מגזיןLayout א-סימטרי בהשראת דפוס עיתון — עמודות ברוחב משתנה, שבירה של עמודות שוות
Asymmetric LayoutLayout א-סימטרישבירה מכוונת של סימטריה 50/50 ל-60/40, 70/30, או 3-column-offset — יוצר עניין ויזואלי
Content-width vs Full-bleedרוחב-תוכן מול "עד הקצה"ההחלטה אם אלמנט תחום ל-680-720px לקריאות, או "פורץ" לרוחב מלא של ה-viewport ליצירת דרמה
מתחיל 8 דקות חינם מושג

5.1 למה Layout הוא הסיבה #1 שאתרי AI נראים גנריים

בפרק 1 רשמנו 12 סימנים שחושפים אתר כ-AI-generated. אם תסתכלו על הרשימה שוב — 4 מתוך 12 קשורים ישירות ל-layout ול-spacing: "identical padding" (סימן 4), "predictable layouts" (סימן 9), "חוסר visual hierarchy" (סימן 10), ו"חוסר עקביות בין sections" (סימן 12). זה לא במקרה. Layout הוא השכבה שבה AI חלש ביותר — ולכן זה הפרק שייתן לכם את המקפצה הגדולה.

הסיבה: כשאתם מבקשים מ-AI "תבנה לי landing page ל-SaaS", הוא מייצר את ה-layout הצפוי שראה עשרות אלפי פעמים ב-training data: Hero → 3 Feature cards → Testimonials → Pricing → CTA. כל הכרטיסים באותו גודל, אותו padding, אותו gap. זה ה-"3-column trap": כל דבר הופך ל-3 עמודות שוות כי זה הדיפולט הבטוח ביותר של AI.

מה מעצבים מקצועיים עושים אחרת

תסתכלו על הדף הראשי של Apple, Stripe, Linear, Vercel, או Raycast. מה משותף לכולם?

התובנה הגדולה

ההבדל בין אתר "בסדר" לאתר "פרימיום" הוא לרוב לא האלמנטים עצמם — אלא איך הם מסודרים ומה הרווח ביניהם. אתר עם הרבה spacing עקבי של 8/16/24/48, עם asymmetric breakdown של 60/40, ועם bento grid במקום 3 עמודות שוות — נראה מיידית מעוצב. גם אם כל השאר (טקסט, צבעים, תמונות) נשאר זהה.

למה AI לא עושה את זה לבד

התפקיד שלכם בפרק הזה: ללמוד איך ה-layout "נבנה נכון" — כדי שתדעו לבקש מ-AI בדיוק את זה, בשפה שהוא מבין.

עשו עכשיו 3 דקות

פתחו את apple.com/macbook-pro. גללו לסקשן Features. ספרו כמה תאים יש. בדקו את הגדלים היחסיים שלהם — האם כולם באותו גודל? האם יש תא גדול אחד ותאים קטנים סביבו? רשמו את המבנה (למשל: "2×2 עם תא אחד שתופס 2×1"). זה bento grid — נבנה אחד כזה בעצמכם בהמשך הפרק.

עשו עכשיו 4 דקות

פתחו את האתר הגנרי שAI בנה לכם (מ-Do Now #1 בפרק 1). לחצו F12, בדקו את ה-display של הקונטיינר הראשי של Features. האם זה display: flex או display: grid? מה ה-gap? רשמו. כעת בדקו את אחד ה-Feature cards — מה ה-padding? האם הוא כפולה של 8? אם לא — סימן ברור לבעיה שנתקן בהמשך.

מתחיל 10 דקות חינם מעשי

5.2 Flexbox — חד-ממדי: שורות או עמודות

Flexbox (קיצור ל-"Flexible Box Layout") הוא מנוע ה-layout של CSS שנועד לפתרון בעיה אחת: איך לסדר קבוצה של אלמנטים על ציר אחד — או אופקי (row) או אנכי (column) — עם alignment ו-distribution אוטומטיים.

המילה המרכזית פה היא חד-ממדי (1D). Flexbox עובד על ציר אחד בכל פעם. אם יש לכם שורה של אלמנטים — Flexbox מושלם. אם יש לכם עמודה של אלמנטים — Flexbox מושלם. אם יש לכם שורות וגם עמודות שצריכות להתיישר ביחס זו לזו — זה כבר 2D, ואז Grid עדיף.

Flexbox ב-4 שורות CSS

ה-syntax הבסיסי:

.container {
  display: flex;           /* הפעלת Flexbox */
  gap: 1rem;                /* רווח בין פריטים */
  justify-content: space-between; /* חלוקה על הציר הראשי */
  align-items: center;      /* יישור על הציר המשני */
}

זהו. ארבע שורות ויש לכם navbar, card row, או footer מסודר. בלי hacks, בלי clearfix, בלי float.

5 מקרי שימוש אידיאליים ל-Flexbox

  1. Navigation bar — לוגו בצד אחד, קישורים באמצע, CTA בצד השני. שורה אחת, ציר אופקי.
  2. כפתור עם אייקון — אייקון + טקסט יחד בתוך button, עם gap ביניהם ו-align-items: center.
  3. Form field עם label — תווית מעל/לצד שדה טקסט, עמודה עם flex-direction: column.
  4. Card footer עם כפתורים — שורה של 2-3 כפתורים בתחתית כרטיס, עם justify-content: flex-end.
  5. Centering perfectdisplay: flex; align-items: center; justify-content: center; מיישרים כל דבר למרכז. הפתרון שחיכינו לו 15 שנה.

Flexbox properties שכדאי לזכור

Propertyמה עושהערכים נפוצים
display: flexמפעיל Flexbox על הקונטיינרflex / inline-flex
flex-directionכיוון הציר הראשיrow / column / row-reverse
justify-contentחלוקה על הציר הראשיflex-start / center / space-between / space-around
align-itemsיישור על הציר המשניstretch / center / flex-start / flex-end
gapרווח בין פריטים1rem / 16px / var(--space-2)
flex-wrapהאם לעבור לשורה חדשהnowrap / wrap
flex: 1על הפריט — תופס את כל המקום הפנוי0 / 1 / auto / 1 1 0

הטעות שכולם עושים: Flexbox ל-gallery

האינטואיציה של רוב המפתחים: "יש לי 9 כרטיסים, אני רוצה grid של 3×3 — אשתמש ב-Flexbox עם flex-wrap: wrap". זה עובד — אבל זה הפתרון ה-גרוע. הנה למה:

הפתרון הנכון: Grid עם grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)) — שורה אחת, ואתם responsive אוטומטית. נלמד את זה בסעיף 5.7.

עשו עכשיו 3 דקות

פתחו codepen.io/pen או StackBlitz. בנו div עם 3 divs בתוכו: "לוגו", "תפריט", "כניסה". תפעילו Flexbox על ה-parent: display: flex; justify-content: space-between; align-items: center; gap: 1rem;. שנו את ה-justify-content ל-center, ל-flex-end, ל-space-around. תרגישו מיד מה כל ערך עושה. זו היסוד של כל navbar בעולם.

בינוני 12 דקות חינם מעשי

5.3 CSS Grid — דו-ממדי: שורות ועמודות בו-זמנית

CSS Grid היא מערכת ה-layout החזקה ביותר שאי פעם הגיעה לדפדפנים. היא נועדה לבעיה אחרת לגמרי מזו של Flexbox: איך לסדר אלמנטים על שני צירים בו-זמנית — אופקי וגם אנכי — כך ששורה 1 עמודה 2 מתיישרת בדיוק מול שורה 3 עמודה 2.

המילה המרכזית פה היא דו-ממדי (2D). Grid יודע את שני הצירים בו-זמנית. זה מה שמאפשר bento layouts, dashboards, magazine designs, ו-card galleries מקצועיות.

Grid ב-5 שורות CSS

.gallery {
  display: grid;
  grid-template-columns: repeat(3, 1fr);  /* 3 עמודות שוות */
  grid-template-rows: auto;                 /* שורות לפי תוכן */
  gap: 2rem;                                /* רווח 32px */
  padding: 4rem 2rem;                       /* 64px אנכי, 32px אופקי */
}

זהו. מערכת של 3 עמודות שכל הילדים של .gallery יסתדרו בה אוטומטית, עם gap של 32px, padding של 64/32 מסביב. בלי media queries (עדיין).

המילה החשובה: fr

fr = fraction = חלק מהמקום הפנוי. זה הדבר המהפכני ב-Grid.

5 מקרי שימוש אידיאליים ל-Grid

  1. Page layout כללי — Header / Sidebar / Main / Footer ב-grid-template-areas (בסעיף 5.6).
  2. Card gallery — 3×N תמונות שמיישרות זו לזו באופן מושלם, כולל responsive עם auto-fit.
  3. Dashboard — widgets בגדלים שונים (stat card קטן, chart גדול, table רחב) — Grid הוא היחיד שנותן שליטה מלאה.
  4. Bento grid — הטרנד של 2025-2026. תאים בגדלים שונים עם grid-column: span 2 ו-grid-row: span 2 על חלק מהם.
  5. Forms מורכבים — 2 שורות של שדות עם label מעל, כאשר חלק מהשדות תופסים את כל הרוחב (text-area) וחלק חצי רוחב (first-name, last-name).

Grid properties שכדאי לזכור

Propertyמה עושהדוגמה
display: gridמפעיל Grid על הקונטיינרdisplay: grid
grid-template-columnsהגדרת העמודותrepeat(4, 1fr)
grid-template-rowsהגדרת השורותauto 1fr auto
gapרווח בין תאים (גם row גם column)gap: 2rem
grid-column: span Nעל ילד — תופס N עמודותgrid-column: span 2
grid-row: span Nעל ילד — תופס N שורותgrid-row: span 2
grid-template-areasאזורים בשמותמוסבר בסעיף 5.6
place-items: centerקיצור ל-align + justify itemsplace-items: center
עשו עכשיו 4 דקות

ב-StackBlitz/CodePen צרו div עם 6 divs בתוכו (כל אחד עם רקע אחר). תפעילו display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem;. כעת שנו לערכים שונים: repeat(2, 1fr), 1fr 2fr, 200px 1fr 1fr. על ה-div הראשון הוסיפו grid-column: span 2. תראו איך המערכת כולה מסתדרת אוטומטית. זה הקסם של 2D layout.

מתחיל 6 דקות חינם Framework

5.4 Grid vs Flexbox — Decision Framework מלא

עכשיו הגענו לשאלה ששואלים אותה בכל ראיון עבודה frontend: מתי Flexbox ומתי Grid? יש תשובה חד-משמעית. הנה ה-Framework.

Framework #1: Grid vs Flexbox Decision Flowchart

שאלה 1: האם אני צריך לסדר אלמנטים על ציר אחד בלבד (שורה או עמודה), בלי חובה ליישור מול שורות אחרות?

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

שאלה 3: האם אני מדבר על מבנה עמוד כללי (header/sidebar/main/footer) או על רכיב פנימי (navbar, card)?

כלל אצבע: Grid ל-macro (מבנה הדף), Flexbox ל-micro (בתוך כרטיסים, navbars, כפתורים).

טבלת השוואה מלאה

קריטריוןFlexboxGrid
ממדיות1D — שורה או עמודה2D — שורות ועמודות
יישור בין שורותלא מובטחמובטח במדויק
גודל תאיםנקבע על פי התוכןנקבע על פי ה-grid (יותר שליטה)
Syntaxפשוט, 4-5 propertiesעשיר, 15+ properties
מתי נוצר2013 (old-school)2017 (modern)
Browser support99.5%+98%+
שימוש אופטימליnavbars, buttons, card innards, centeringpage layouts, galleries, dashboards, bento
Responsive בלי media queriesflex-wrap (מוגבל)auto-fit + minmax (מצוין)
תמיכה ב-gapמ-2020מההתחלה (2017)
Learning curveשעה3-4 שעות

אפשר להשתמש בשניהם יחד!

זו לא בחירה מחייבת. הדפוס המקצועי הוא:

לדוגמה: Grid מגדיר את ה-"דירה" (חדרים), ובתוך כל חדר Flexbox מסדר את הרהיטים.

טעות נפוצה #1: Flexbox לכל דבר כי זה מוכר

רוב ה-Vibe Coders (וגם AIs) משתמשים ב-Flexbox לכל מה שזז — כולל page layouts ו-galleries — כי Flexbox היה הראשון שלמדו. התוצאה: קוד שובה-לב כמו display: flex; flex-wrap: wrap; על gallery של 9 כרטיסים — שנשבר במובייל ברגע שיש 7 או 10 פריטים. הפתרון: כל פעם שאתם כותבים flex-wrap: wrap, תעצרו ותשאלו את עצמכם: האם אני בעצם רוצה Grid? התשובה 90% מהמקרים היא כן.

עשו עכשיו 5 דקות

רשמו 5 רכיבים באתר שלכם (או באתר מוכר). לכל אחד, ענו על 3 השאלות מ-Decision Flowchart. תרשמו: Flexbox או Grid. דוגמאות: navbar (Flex), hero section (Grid), feature cards gallery (Grid), button with icon (Flex), footer columns (Grid). מה מאתגר? בדרך כלל "feature cards" — רוב האנשים כותבים Flex, והתשובה הנכונה היא Grid.

מתחיל 5 דקות חינם מעשי

5.5 gap — ה-property שמחליף margin-hacks

לפני 2020, כדי להוסיף רווח בין פריטים ב-Flexbox או Grid, היינו חייבים להשתמש ב-margin. וזה היה סיוט. הסיוט הזה הסתיים — gap הוא ה-property היחיד שצריך.

הסיוט של ה"לפני"

/* הדרך הישנה — margin hacks */
.card {
  margin-right: 1rem;
}
.card:last-child {
  margin-right: 0;  /* כדי שלא יהיה רווח מיותר בסוף */
}

/* ולמובייל: */
@media (max-width: 768px) {
  .card {
    margin-right: 0;
    margin-bottom: 1rem;  /* בכיוון אנכי */
  }
}

ה-"אחרי"

/* הדרך המודרנית — gap */
.gallery {
  display: grid;  /* או flex */
  gap: 1rem;      /* זהו. זה הכל. */
}

gap עובד ב-Grid, Flexbox, ואפילו ב-multi-column layout. הוא מטפל אוטומטית ב:

Syntax מלא

.grid {
  gap: 1rem;              /* 16px בכל הכיוונים */
  gap: 1rem 2rem;         /* 16px אנכי, 32px אופקי */
  row-gap: 1rem;          /* רק אנכי */
  column-gap: 2rem;       /* רק אופקי */
}

עם design tokens — כך זה נראה באתר פרימיום

:root {
  --space-2: 1rem;        /* 16px */
  --space-3: 1.5rem;      /* 24px */
  --space-4: 2rem;        /* 32px */
  --space-6: 3rem;        /* 48px */
}

.hero-features {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-4);         /* 32px בין features */
}

.section {
  padding-block: var(--space-6); /* 48px אנכי לכל section */
}

שימו לב: אנחנו משתמשים בערכי ה-8px grid (1rem=16, 2rem=32, 3rem=48). זה לא מקרה. בסעיף 5.9 נבנה את המערכת במלואה.

עשו עכשיו 2 דקות

פתחו את האתר הגנרי שAI בנה. חפשו ב-CSS את כל המקומות שיש בהם margin-right, margin-left, margin-bottom בתוך children של Flex/Grid containers. החליפו את כולם ב-gap על ה-parent. תראו איך ה-CSS הופך קצר יותר ב-30-50%.

בינוני 10 דקות חינם מעשי

5.6 grid-template-areas — שמות אזורים לבקשה ל-AI

של כל הפיצ'רים של Grid, grid-template-areas הוא האהוב עליי ביותר — ולא רק בגלל שהוא חזק, אלא בגלל שהוא קריא. אפשר להראות אותו למעצב שלא כותב קוד והוא יבין מיד.

הרעיון

במקום לומר "ה-div הראשון יהיה בשורה 1 עמודה 1-2, ה-div השני בשורה 1 עמודה 3" — אנחנו נותנים שמות לאזורים ומציירים את ה-layout כמו ASCII art.

דוגמה: Dashboard Layout שלם

.dashboard {
  display: grid;
  grid-template-columns: 250px 1fr 300px;
  grid-template-rows: 80px 1fr 60px;
  grid-template-areas:
    "header  header  header"
    "sidebar main    aside"
    "footer  footer  footer";
  gap: 1rem;
  height: 100vh;
}

.header  { grid-area: header; }
.sidebar { grid-area: sidebar; }
.main    { grid-area: main; }
.aside   { grid-area: aside; }
.footer  { grid-area: footer; }

זהו. ה-ASCII art הוא ה-layout. Header רחב על כל 3 העמודות בשורה עליונה. Sidebar בצד שמאל עם 250px קבוע. Main באמצע עם 1fr (ממלא את הנותר). Aside בימין עם 300px קבוע. Footer רחב בתחתית.

למה זה פיצ'ר קריטי לעבודה עם AI

זה הסעיף הכי חשוב בפרק: grid-template-areas נותן לכם שפה להסביר layout ל-AI. במקום לכתוב פרומפט עמום כמו "תעשה dashboard", אפשר לכתוב:

Use grid-template-areas with regions named: "header" (top, full-width), "sidebar" (left, 250px fixed), "main" (center, fills remaining space), "aside" (right, 300px fixed), "footer" (bottom, full-width). Grid should be 250px 1fr 300px columns and 80px 1fr 60px rows.

ה-AI יבנה בדיוק את זה. בלי ניחושים. בלי "סבירות שיצליח".

Responsive עם grid-template-areas

הדבר הכי יפה: כדי לעשות responsive, פשוט מציירים מחדש את ה-ASCII art:

/* Desktop */
.dashboard {
  grid-template-columns: 250px 1fr 300px;
  grid-template-areas:
    "header  header  header"
    "sidebar main    aside"
    "footer  footer  footer";
}

/* Mobile */
@media (max-width: 768px) {
  .dashboard {
    grid-template-columns: 1fr;
    grid-template-areas:
      "header"
      "main"
      "sidebar"
      "aside"
      "footer";
  }
}

אותם grid-areas — רק המיקום שלהם השתנה. זה מהיר, ברור, ונוח לתחזוקה.

עשו עכשיו 5 דקות

ציירו על דף (או ב-comments בקוד) layout של הומפייג' של האתר שלכם כ-ASCII art. 3-4 אזורים. תנו שמות: "hero", "features", "social-proof", "cta". כתבו grid-template-areas שמייצג אותם. זה ה-layout שתבקשו מ-AI — והוא יבנה בדיוק מה שציירתם.

בינוני 8 דקות חינם מעשי

5.7 auto-fit vs auto-fill — grids שמתאימים את עצמם

הנה אחד הטריקים המקצועיים של CSS Grid: מערכת שבה לא צריך אף media query כדי להיות responsive. הסוד: auto-fit ו-auto-fill בשילוב עם minmax().

ה-syntax הקסום

.gallery {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 1.5rem;
}

מה זה אומר: "תחלק את המקום לעמודות. כל עמודה לפחות 250px רוחב, ולכל היותר 1fr (מלאה עד גבול המקום). תמלא כמה עמודות שנכנסות."

המשמעות המעשית:

בלי אף media query. הדפדפן מחליט כמה עמודות נכנסות לפי הרוחב הזמין.

auto-fit vs auto-fill — ההבדל הקריטי

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

שםמה קורה כשאין מספיק פריטיםמתי להשתמש
auto-fit העמודות הקיימות מתרחבות למלא את כל המקום רוב המקרים — gallery שרוצה להתמלא
auto-fill העמודות הקיימות לא מתרחבות — יוצרות "רפאים" של עמודות ריקות כשרוצים שהכרטיסים יישארו בגודל מינימום

הכלל: 90% מהזמן — auto-fit. הוא עושה את מה שרוב האנשים מצפים.

minmax() — הגדרת גודל עמודה ב-2 קצוות

minmax(MIN, MAX) = "תן לעמודה לפחות MIN ולכל היותר MAX".

דפוסי auto-fit שכדאי לזכור

/* Card gallery קלאסי */
.cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1.5rem;
}

/* Photo gallery רחב */
.photos {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 0.5rem;
}

/* Logo grid (לוגואים של לקוחות) */
.logos {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: 2rem;
  align-items: center;
}

שלושה קווי קוד לכל gallery. Responsive מלא. בלי breakpoints.

עשו עכשיו 3 דקות

ב-StackBlitz, צרו 8 כרטיסים ב-div. תגדירו grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));. גררו את החלון קטן-גדול ותראו איך העמודות משתנות מאליהן. שנו ל-auto-fill וראו את ההבדל כשה-window גדול מהר — תראו עמודות ריקות. החליטו מה אתם מעדיפים.

בינוני 15 דקות חינם מעשי + טרנד

5.8 Bento Grid — הטרנד הלוהט של 2025-2026

אם יש layout אחד שיגדיר את 2025-2026, זה Bento Grid. ראיתם אותו ב-apple.com, ב-vercel.com, ב-raycast.com, ב-openai.com, וכמעט בכל landing page חדש של סטארטאפ. השם מגיע מהקופסה היפנית לארוחת-צהריים — "bento box" — שבה אוכל מוגש בתאים מרובעים בגדלים שונים.

מה הופך bento grid למיוחד

ה-Bento ב-CSS טהור — 7 תאים בסגנון Apple

.bento {
  display: grid;
  grid-template-columns: repeat(4, 1fr);   /* 4 עמודות שוות */
  grid-template-rows: repeat(3, 200px);     /* 3 שורות של 200px */
  gap: 1rem;                                 /* 16px בין תאים */
  padding: 2rem;
}

/* התא המרכזי: 2x2, תופס שליש מהמסך */
.bento-item-1 {
  grid-column: span 2;
  grid-row: span 2;
}

/* תא בינוני: 2x1 */
.bento-item-2 {
  grid-column: span 2;
  grid-row: span 1;
}

/* 5 תאים קטנים: 1x1 — לא צריך להגדיר כלום, זה ה-default */
.bento-item-3,
.bento-item-4,
.bento-item-5,
.bento-item-6,
.bento-item-7 {
  /* 1 column, 1 row — default */
}

ה-HTML המקביל

<div class="bento">
  <div class="bento-item-1">Feature Hero (2×2)</div>
  <div class="bento-item-2">Feature Medium (2×1)</div>
  <div class="bento-item-3">Feature Small A</div>
  <div class="bento-item-4">Feature Small B</div>
  <div class="bento-item-5">Feature Small C</div>
  <div class="bento-item-6">Feature Small D</div>
  <div class="bento-item-7">Feature Small E</div>
</div>

הפרומפט שיבנה bento עבורכם

Build a bento grid layout with 4 columns (repeat(4, 1fr)) and 3 rows of 200px. Create 7 cells:
- Cell 1: grid-column: span 2; grid-row: span 2 — this is the hero feature (largest)
- Cell 2: grid-column: span 2 — medium feature (2 cols wide, 1 row)
- Cells 3-7: default 1×1 — small features
Use gap: 1rem. Each cell should have background color, padding 1.5rem, rounded corners (0.75rem), and subtle border. Responsive: on mobile, stack all to single column.

Bento Decision Framework — מתי להשתמש

Framework #2: מתי Bento Grid נכון

Bento Grid מתאים כאשר:

Bento לא מתאים כאשר:

Bento שכיחים — 4 patterns לזכור

Patternמבנהמתי מתאים
Apple Classic1 גדול (2×2) + 2 בינוניים (2×1) + 3 קטנים (1×1)landing page עם hero feature אחד
Stripe Split1 רחב (4×1) בראש + 2 חצאים (2×2) מתחת + 2 קטניםdashboard או product overview
Vercel Stack3 עמודות שוות אבל עם 1 תא שתופס 2 שורותfeatures עם "star feature"
Raycast Mosaic6-8 תאים בגדלים משתנים ללא תא "גיבור"feature catalog (כל יכולת חשובה)
עשו עכשיו 6 דקות

העתיקו את ה-CSS+HTML של ה-Bento Classic מלמעלה ל-CodePen. הוסיפו background colors שונים ל-7 התאים (אפשר פשוט צבעים רנדומליים כמו #ff6b6b, #4ecdc4, #ffd93d, #6c5ce7, #a8e6cf, #ff8b94, #95e1d3). תראו מיד את המבנה הקלאסי של Apple bento. עכשיו שנו את grid-column: span 3 על התא הראשון. תראו איך ה-layout משתנה — זה הכוח של Grid.

מתחיל 10 דקות חינם Deliverable מרכזי

5.9 מערכת ה-8px Grid — ה-spacing scale המקצועי

אם יש החלטה אחת ששווה 80% מהאפקט של "professional feel" — זו המערכת של ה-8px. כל ה-spacing באתר שלכם — padding, margin, gap, width, height — יהיה כפולה של 8. לא 20px, לא 25px, לא 15px — רק כפולות של 8: 8, 16, 24, 32, 40, 48, 64, 80, 96, 128, 160, 192.

למה דווקא 8?

שלוש סיבות מעשיות:

  1. חלוקה קלה. 8/2=4, 8/4=2, 8/8=1. כל ה"חצאים" נותנים מספר שלם. לעומת זאת, 10/3=3.33 — הדפדפן יעגל לא-עקבי.
  2. Hardware pixel density. רוב מסכי ה-high-DPI (Retina, 4K) פועלים במכפלות של 2 או 4. 8 הוא "נקי" על כל density. ערכים כמו 7, 13, 17 נראים "חדים אבל מטושטשים" על 2x, "חלק ולא חד" על 1x.
  3. Industry convention. Apple (Human Interface Guidelines), Google (Material Design), Microsoft (Fluent), Atlassian, IBM — כולם משתמשים במערכת 8px. תראו את זה ב-Figma: כל ה-default spacing בערכים של 8. זו שפה משותפת.

ה-Spacing Scale המלא (Deliverable)

:root {
  /* The 8px Grid Spacing System */
  --space-0: 0;
  --space-1: 0.5rem;   /*   8px — tight (inside buttons, between icon + text) */
  --space-2: 1rem;     /*  16px — default gap (between cards in a row) */
  --space-3: 1.5rem;   /*  24px — comfortable (between form fields) */
  --space-4: 2rem;     /*  32px — generous (between content blocks) */
  --space-5: 2.5rem;   /*  40px — spacious */
  --space-6: 3rem;     /*  48px — section padding (vertical) */
  --space-7: 4rem;     /*  64px — large section spacing */
  --space-8: 5rem;     /*  80px — hero padding */
  --space-9: 6rem;     /*  96px — very spacious (between major sections) */
  --space-10: 8rem;    /* 128px — dramatic section spacing */
  --space-11: 10rem;   /* 160px — ultra-spacious */
  --space-12: 12rem;   /* 192px — hero-to-content on landing pages */
}

טבלת שימושים מומלצים

שימושערך מומלץToken
רווח בין אייקון לטקסט בכפתור8px--space-1
Padding בתוך כפתור (vertical)8-16px--space-1 / --space-2
Padding בתוך כפתור (horizontal)16-24px--space-2 / --space-3
Gap בין cards בשורה16-24px--space-2 / --space-3
Padding בתוך card24-32px--space-3 / --space-4
Margin בין headings ל-body16-24px--space-2 / --space-3
Padding אנכי של section רגיל64-96px--space-7 / --space-9
Padding אנכי של hero section96-192px--space-9 / --space-12
Padding horizontal של ה-container הראשי16-32px mobile, 64-96px desktop--space-2 עד --space-9
הכלל שמשנה הכל

ברגע שאתם עוברים לעבודה עם ה-tokens האלה, אף פעם לא כותבים padding/margin בערך קבוע. תמיד var(--space-N). התוצאה: אתר שכל ה-spacing שלו עקבי, קל לשנות (משנים 1 משתנה ומשפיעים על הכל), וקל לבקש מ-AI ("use only var(--space-*) tokens, never raw px values").

טעות נפוצה #2: Spacing לא עקבי בין sections

הסימן המובהק ביותר לאתר "AI-generated" הוא spacing שונה בכל section — כאן padding: 20px, שם padding: 30px, במקום אחר padding: 25px. העין תופסת את זה גם בלי לדעת למה — האתר פשוט נראה "לא מסודר". הפתרון: לעבוד רק עם ה-tokens מלמעלה. לפני כל קוד חדש — שאלו את עצמכם: "האם הערך הזה כפולה של 8? אם לא — אני שובר את המערכת."

עשו עכשיו 4 דקות

העתיקו את ה-:root עם 12 ה-space tokens לאתר שלכם. בדקו ב-DevTools — הוסיפו את הכלל body { padding: var(--space-7); }. תראו איך ה-body מקבל 64px padding. נסו --space-3, --space-9. תרגישו את ההבדל של הקצב הוויזואלי. זה הקצב שפרימיום נשמע כמו.

בינוני 10 דקות חינם מושג

5.10 Whitespace — לא "מקום ריק" אלא כלי עיצוב

בישראל יש אמונה מוטעית שעובר מדור לדור: "רווח לבן הוא בזבוז — תמלא אותו במשהו". זו בדיוק הסיבה שאתרים ישראליים רבים נראים "עמוסים" בזמן שאתרי אפל, Stripe, ו-Linear נראים "נושמים". ה-whitespace הוא לא מה שחסר באתר שלכם — הוא מה שיש באתרים שאתם מנסים להידמות להם.

3 סוגי whitespace

סוגמה זהערכים טיפוסיים
Micro-whitespace רווח בתוך אלמנט — padding בכפתור, line-height בטקסט, gap בתוך card 8-24px
Macro-whitespace רווח בין אלמנטים/sections — padding אנכי של section, margin בין sections 64-128px
Confidence-whitespace רווח דרמטי סביב אלמנט מפתח — סביב hero CTA, סביב תמונה חשובה 96-192px

Confidence Whitespace — הסוד של מותגי יוקרה

פתחו את hermes.com, louis-vuitton.com, או apple.com/vision-pro. מה שמשותף לכולם: יש יותר רווח מתוכן. הכותרת בגודל ענקי עם הרבה אוויר מסביב. התמונה גדולה, אבל לא נדחסת. ה-CTA לבד במרכז השדה.

זה לא עצלנות. זה הצהרה: "אני לא חייב להיאבק על תשומת הלב שלך. אני בטוח מספיק שהמוצר שלי ידבר לבדו." ככל שיש יותר whitespace — ככל שהמותג נתפס יקר יותר.

להפך — אתרים עם פחות whitespace (הרבה פרסומות, הרבה טקסט, הרבה קריאות לפעולה) נתפסים כ"לוחצים למכור" — זול.

הנוסחה: ecommerce vs luxury

זה לא אומר שכל אתר צריך להיות כמו Apple. תלוי ב-archetype. אבל אם אתם רוצים שהאתר שלכם ייראה "פרימיום" — התשובה כמעט תמיד היא: יותר whitespace, לא יותר תוכן.

ערכים פרקטיים לכל archetype

ArchetypeHero section padding (top+bottom)Section spacingContent max-width
ecommerce48-64px48px1280-1440px
SaaS standard96-128px96px1200px
SaaS premium (Stripe/Linear)128-192px128px1200px + ~30% side padding
Portfolio128-192px160px960-1080px
Luxury/Editorial192-256px192px720-960px (narrow!)
Framework #3: Whitespace Calibration

כלל האצבע של מעצבים מקצועיים:

  1. לכל heading — margin-top לפחות פי 2 מה-margin-bottom (ה-heading "שייך" לתוכן שאחריו, לא לפני)
  2. לכל section — padding אנכי לפחות 1.5× מ-padding אופקי (הסקציה "נושמת" בכיוון הגלילה)
  3. לכל hero — הוסיפו עוד 30-50% whitespace ממה שאתם חושבים שצריך. אם אתם כותבים 96px, נסו 128px. סביר שיהיה נכון יותר.
  4. בין CTA לתוכן — לפחות 48px בכל כיוון. אל תצמידו כפתור לתוכן.
  5. Content-width לפסקאות — תחמו ל-680-720px (מקס 75 תווים לשורה). שורות ארוכות יותר הן סימן מובהק לאתר חובבני.
טעות נפוצה #3: פחד מ-whitespace

רוב ה-Vibe Coders (וכל ה-AIs) פשוט מפחדים מרווח לבן. הם מרגישים שצריך למלא אותו. מוסיפים עוד מילה, עוד אייקון, עוד feature, עוד testimonial. התוצאה: אתר "דחוס" שנראה זול. הפתרון: בכל section, לפני שמפרסמים — ערכו את ה"whitespace audit": האם יש לפחות 96px padding אנכי? האם ה-CTA יש לו 48px מסביב? האם ה-hero מרגיש נושם או דחוס? אם לא — תגדילו את ה-padding, לא תוסיפו תוכן.

עשו עכשיו 5 דקות

פתחו את האתר הגנרי שלכם. מדדו ב-DevTools את ה-padding האנכי של ה-hero section. סביר שזה 48-64px. עכשיו פתחו את apple.com/iphone. מדדו את אותו הדבר. תראו 96-192px. שאלו את עצמכם: האם יש סיבה שהאתר שלי יצטרך פחות whitespace מאפל? אם יש לכם archetype של "luxury" או "SaaS premium" — הוסיפו 50% ל-padding של ה-hero. רעננו. תראו את ההבדל.

בינוני 7 דקות חינם מושג

5.11 Gestalt Proximity — visual grouping באמצעות רווח

בשנות ה-20 של המאה הקודמת, פסיכולוגים גרמנים (Wertheimer, Koffka, Köhler) גילו עיקרון: המוח האנושי מקבץ דברים שקרובים זה לזה. אם יש 6 נקודות על דף — 3 קרובות מצד שמאל ו-3 קרובות מצד ימין — העין רואה 2 קבוצות. אם אותן 6 נקודות מפוזרות באופן אחיד — העין רואה 6 אובייקטים נפרדים.

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

דוגמה מעשית: form field

שני שדות טקסט — "שם פרטי" ו"שם משפחה" — עם ה-labels שלהם. נשווה 2 versions:

Version A — Labels זהים מרוחקים מהשדות:

שם פרטי
[_____________]      ← 16px margin

שם משפחה
[_____________]      ← 16px margin

Version B — Labels מוצמדים לשדה שלהם, רווח בין הזוגות:

שם פרטי       ← 4px margin
[_____________]

                      ← 24px margin

שם משפחה      ← 4px margin
[_____________]

ב-Version B — העין "רואה" מיד שה-label שייך לשדה שמתחתיו. אין ספק. ב-Version A — יכול להיות בלבול: ה-label מתייחס לשדה שמעליו או שמתחתיו? המשתמש צריך לחשוב. זה ה-friction שהורג conversion.

הכלל המרכזי

המרחק בין אלמנטים באותה קבוצה חייב להיות קטן משמעותית מהמרחק בין קבוצות שונות. היחס המקצועי: 1:3 או 1:4.

דוגמה: אם יש לכם כרטיסי features עם title + description + icon:

יחס של 1:4:12. זה הקצב שמרגיש "מקצועי".

Gestalt Proximity בפרקטיקה

רכיבמרחק בתוךמרחק ביןיחס
Label + input4-8px24-32px (בין שדות)1:4
Icon + text בכפתור8px
Card title + description8-12px32-48px (בין כרטיסים)1:4
Nav item + icon4-8px24-40px (בין nav items)1:5
Heading + body16-24px96-128px (בין sections)1:6
עשו עכשיו 4 דקות

פתחו את האתר הגנרי שלכם. מדדו את ה-margin-bottom של heading (H2 לדוגמה). מדדו את ה-margin-top של ה-section הבא. חשבו את היחס. אם זה 1:1 או 1:2 — ה-Gestalt שלכם שבור. אם זה 1:4 ומעלה — אתם עובדים נכון. תקנו: הגדילו את ה-margin-top של ה-section הבא.

בינוני 8 דקות חינם מעשי

5.12 Asymmetric Layouts — שבירת ה-50/50

הדיפולט של AI הוא סימטריה. 2 עמודות 50/50. 3 עמודות שוות. 4 כרטיסים באותו גודל. זה בטוח. זה משעמם. וזה המקור העיקרי ל-"AI slop" look.

מעצבים מקצועיים שוברים את הסימטריה ביודעין. הנה 3 patterns מוכחים:

Pattern 1: 60/40 — Hero Classic

Layout של 2 עמודות: טקסט בעמודה רחבה יותר (60%), תמונה/אייקון בעמודה צרה יותר (40%). זה יוצר משקל חזותי של הטקסט — מסר ראשון, ויזואל שני.

.hero {
  display: grid;
  grid-template-columns: 3fr 2fr;  /* 60/40 */
  gap: var(--space-7);              /* 64px */
  align-items: center;
}

Pattern 2: 70/30 — Editorial Focus

Layout של 2 עמודות: תוכן ראשי ב-70%, sidebar של 30%. נפוץ ב-blogs, magazines, ודפי product details. המרחב הצר "מושך את העין" בזכות הקונטרסט.

.article-layout {
  display: grid;
  grid-template-columns: 7fr 3fr;  /* 70/30 */
  gap: var(--space-6);              /* 48px */
  max-width: 1280px;
  margin-inline: auto;
}

Pattern 3: 3-column Offset — Magazine Style

3 עמודות שלא שוות: 1fr 2fr 1fr (עמודה אמצעית כפולה) או 2fr 3fr 2fr (אמצעית 1.5x). יוצר תחושה עיתונאית, נדירה באתרי SaaS, מיוחדת בblogs ו-editorials.

.magazine {
  display: grid;
  grid-template-columns: 1fr 2fr 1fr;  /* 25/50/25 */
  gap: var(--space-5);                   /* 40px */
}

איך לבחור: Asymmetric Layout Framework

אם המטרה היא...בחרו...דוגמאות אתרים
להדגיש טקסט (hero עם CTA)60/40 (טקסט רחב יותר)Stripe.com, Linear.app
להדגיש ויזואל (product shot)40/60 (תמונה רחבה יותר)Apple product pages
content + sidebar (blog/docs)70/30Medium, Notion docs
Editorial feel (long-form)1fr 2fr 1fr (אמצעית דומיננטית)The New York Times, NYT Cooking
חנות luxury30/70 (תמונה ענקית + טקסט צר)Hermes, Louis Vuitton
עשו עכשיו 3 דקות

פתחו את ה-hero של האתר שלכם. סביר שהוא 50/50 (טקסט + תמונה). שנו את ה-grid-template-columns ל-3fr 2fr (60/40). רעננו. תרגישו מיד שה-hero "מכוון" לעיניים אחרת — הטקסט מקבל משקל ראשי. נסו גם 2fr 3fr (40/60) — להדגיש את התמונה. בחרו את מה שמתאים ל-archetype שלכם.

בינוני 8 דקות חינם מעשי

5.13 Content-width vs Full-bleed — מתי לתחום ומתי לנשום

אחת ההחלטות הקריטיות ב-layout מודרני: מה נשאר תחום (680-720px לטקסט, 1200-1280px ל-container) ומה פורץ ל-full-bleed (100% מה-viewport)? ההחלטה הזו היא מה שמפריד בין אתר שנראה "פלקאט" לאתר שנראה "מעוצב".

הכלל הזהב

Implementation — CSS מקצועי

:root {
  --width-prose: 42rem;      /* 672px — לטקסט קריא */
  --width-content: 75rem;    /* 1200px — לתוכן רגיל (grids, cards) */
  --width-wide: 90rem;       /* 1440px — לתוכן רחב (galleries, dashboards) */
  --width-full: 100vw;       /* Full-bleed */
}

/* פסקאות — תמיד תחומות */
.prose {
  max-width: var(--width-prose);
  margin-inline: auto;
}

/* Container רגיל */
.container {
  max-width: var(--width-content);
  margin-inline: auto;
  padding-inline: var(--space-3); /* 24px side padding במובייל */
}

/* Full-bleed — לרוחב מלא */
.full-bleed {
  width: 100vw;
  margin-inline: calc(50% - 50vw);  /* ה-"trick" לשבירה מ-container */
}

דפוס מקצועי: Container עם full-bleed children

הדפוס המתקדם הוא container תחום שמכיל אלמנטים שיכולים "לפרוץ" לרוחב מלא. זו הדרך של Stripe, Linear, ואפל לבנות sections שבהם יש רקע רחב אבל תוכן צר באמצע:

.section {
  max-width: var(--width-content);  /* 1200px — container תחום */
  margin-inline: auto;
  padding-block: var(--space-7);     /* 64px vertical */
}

.section .hero-image {
  /* האימג' פורץ לרוחב מלא, למרות שהוא בתוך .section */
  width: 100vw;
  margin-inline: calc(50% - 50vw);
  height: 600px;
  object-fit: cover;
}

.section .hero-image + p {
  /* הפסקה אחרי — חוזרת לרוחב טקסט */
  max-width: var(--width-prose);
  margin-inline: auto;
}

Dynamic approach — CSS Grid מתקדם

הטריק המתקדם יותר (נפוץ ב-Stripe) הוא להשתמש ב-CSS Grid על ה-body/main, עם 3 עמודות — ה-"side gutters" וה-"content":

main {
  display: grid;
  grid-template-columns:
    [full-start] minmax(1rem, 1fr)
    [content-start] minmax(0, 72rem)
    [content-end] minmax(1rem, 1fr)
    [full-end];
}

main > * {
  grid-column: content;  /* default — content width */
}

main > .full-bleed {
  grid-column: full;     /* פורץ לרוחב מלא */
}

שיטה זו מאפשרת לכל child להחליט אם הוא "תחום" או "full-bleed" בלי טריקים של margin שליליים. זה ה-pattern המקצועי של 2026.

עשו עכשיו 4 דקות

פתחו 3 אתרים: stripe.com, linear.app, notion.so. על כל אחד — מדדו ב-DevTools את ה-max-width של פסקת טקסט (בדקו את ה-<p> של body text). כל אחד מהם יהיה בין 600 ל-720px. עכשיו מדדו את ה-max-width של hero image/video. יהיה 100vw או קרוב לזה. זה content-width vs full-bleed בפועל.

בינוני 12 דקות חינם תרגול

5.14 Layout Spec Prompt — פרומפט ל-AI

זה ה-deliverable המרכזי של הפרק: פרומפט מובנה שתוכלו להעתיק-להדביק לתחילת כל פרויקט AI, שמנחה את הכלי לבנות layout מקצועי מהרגע הראשון.

Layout Spec Template v1.0 (English for AI tools)

LAYOUT SPEC — Use these exactly, do not substitute:

Archetype: [SAAS_PREMIUM / SAAS_STANDARD / AGENCY_DARK / PORTFOLIO_MINIMAL / ECOMMERCE / LUXURY_EDITORIAL]

Page Structure:
- Overall: CSS Grid with grid-template-areas (named regions)
- Regions: "header" (full-width top), "main" (content), "footer" (full-width bottom)
- For dashboards: add "sidebar" (250px left) and optional "aside" (300px right)

Section Layout Types (pick one per section):
- Hero: [ASYMMETRIC_60_40 / ASYMMETRIC_70_30 / CENTERED_FULL_BLEED]
- Features: [BENTO_GRID_4x3 / CARD_GRID_AUTO_FIT / MAGAZINE_1fr_2fr_1fr]
- Testimonials: [3_COLUMN_EQUAL / ASYMMETRIC_OFFSET]
- Pricing: [3_COLUMN_WITH_HIGHLIGHTED_MIDDLE / 2_COLUMN_COMPARISON]

Spacing System (8px Grid — use CSS custom properties):
- --space-1: 0.5rem (8px) — tight
- --space-2: 1rem (16px) — default gap
- --space-3: 1.5rem (24px) — card padding
- --space-4: 2rem (32px) — between content blocks
- --space-6: 3rem (48px) — section padding vertical
- --space-7: 4rem (64px) — large section spacing
- --space-9: 6rem (96px) — hero padding
- --space-12: 12rem (192px) — dramatic whitespace on luxury archetypes
NEVER use raw px values for spacing. ONLY tokens.

Grid vs Flexbox Rules (MUST follow):
- Page-level layout (header/sidebar/main/footer): CSS Grid with grid-template-areas
- Card/feature galleries: CSS Grid with repeat(auto-fit, minmax(280px, 1fr))
- Dashboards and bento: CSS Grid with explicit grid-template-columns: repeat(4, 1fr)
- Navbars, buttons, card internals: Flexbox
- Form field with label: Flexbox column
- NEVER use flex-wrap: wrap for galleries — use Grid auto-fit

Bento Grid Spec (if features section is bento):
- grid-template-columns: repeat(4, 1fr)
- grid-template-rows: repeat(3, 200px)
- gap: var(--space-2) (16px)
- Cell 1: grid-column: span 2; grid-row: span 2 — hero feature
- Cell 2: grid-column: span 2 — medium feature
- Cells 3-7: default 1x1 — small features

Content Widths (MUST use):
- --width-prose: 42rem (672px) — text paragraphs ALWAYS constrained to this
- --width-content: 75rem (1200px) — cards, grids, main container
- --width-wide: 90rem (1440px) — galleries on large screens
- Hero images, videos, backgrounds: 100vw (full-bleed)

Whitespace Calibration:
- Hero section padding (top+bottom): [64-96px / 96-128px / 128-192px] based on archetype
- Between major sections: [48px / 96px / 128px] based on archetype
- Section side padding: 24px mobile, 64-96px desktop
- Around CTAs: minimum 48px on all sides
- Gestalt proximity ratio: elements in same group get 1x spacing, between groups 4x

DO NOT (anti-patterns):
- Do NOT use flex-wrap: wrap for galleries
- Do NOT use raw px values for margin/padding — only var(--space-*) tokens
- Do NOT make all feature cards identical size — use bento or asymmetric layout
- Do NOT let text paragraphs exceed 720px — constrain with max-width
- Do NOT use identical padding on all sections — vary based on importance
- Do NOT put CTA touching content — always 48px+ whitespace around

Responsive Breakpoints:
- Mobile: < 640px — single column, stack everything
- Tablet: 640-1024px — 2-column where appropriate
- Desktop: > 1024px — full layout (bento, asymmetric, etc.)
- Use CSS Grid auto-fit where possible to minimize media queries

QUALITY GATE:
Before delivery, audit: (1) Are page-level layouts using Grid? (2) Is every spacing value a var(--space-*) token? (3) Are text paragraphs max-width 720px? (4) Does the hero have at least 96px padding? (5) Are feature sections using bento or asymmetric layout (not 3 equal columns)? (6) Is there gap (no margin hacks)?

4 שלבי ההתאמה האישית

  1. Archetype: בחרו 1 מ-6 (SAAS_PREMIUM הוא הדיפולט הטוב לרוב הפרויקטים).
  2. Layout Types: לכל section, בחרו 1 מהאופציות המוצעות. אם אתם לא בטוחים — ASYMMETRIC_60_40 להירו, BENTO_GRID_4x3 לפיצ'רים — זה ייראה עכשווי.
  3. Whitespace: בחרו את הטווח המתאים ל-archetype. אם ספק — הלכו עם הטווח הגבוה יותר. קל "להוריד" אחר כך, קשה לשכנע AI "לנשום".
  4. Quality gate: תמיד להשאיר — זה מה שמאלץ את ה-AI לבדוק את עצמו.

איפה לשלב את הפרומפט הזה

קחו את ה-Anti-AI Starter Prompt מפרק 1, הוסיפו את Typography Spec מפרק 4, הוסיפו את Color Palette מפרק 3, והוסיפו את Layout Spec הזה. התוצאה: design brief מלא — צבעים + טיפוגרפיה + layout + anti-AI — שזה 80% מהדרך לאתר פרימיום מהפרומפט הראשון.

עשו עכשיו 8 דקות

העתיקו את ה-Layout Spec Template. התאימו אותו לפרויקט שלכם: בחרו archetype, בחרו layout type לכל section, התאימו את ה-whitespace. שמרו בקובץ בצד. זה הפרומפט האישי שלכם — תשתמשו בו בתרגיל האחרון של הפרק.

תרגיל 1: Grid vs Flexbox — Decision Cheat Sheet אישי 20 דקות
  1. פתחו דף ריק (Notion, Google Doc, או נייר). ציירו טבלה של 2 עמודות: "Flexbox" ו-"Grid".
  2. רשמו 5 מקרי שימוש לכל צד, עם דוגמה ויזואלית קצרה (ציור או ASCII).
  3. לכל מקרה, רשמו את ה-CSS המינימלי (3-5 שורות) שיוצר אותו.
  4. תחתיה, הכינו Decision Flowchart של 3 השאלות (מ-section 5.4).
  5. עכשיו פתחו אתר חדש (לא גנרי — Stripe, Linear, Apple). לחצו F12 על 5 רכיבים שונים. בכל אחד, בדקו ב-Computed mode האם הוא משתמש ב-Grid או Flexbox. האם ההחלטה שלהם תואמת את ה-framework שלכם?
  6. רשמו 2-3 "גילויים" — מקרים שבהם הם השתמשו בבחירה שחשבתם שונה, ונסו להסביר למה.

מה צריך להיות בסוף: מסמך של עמוד שלם עם: (א) טבלת 10 שימושים (5+5), (ב) decision flowchart, (ג) רשימת 5 אתרים שבדקתם עם התוצאות, (ד) 2-3 גילויים עם הסברים.

תרגיל 2: בניית Bento Grid בסגנון Apple 30 דקות
  1. פתחו StackBlitz/CodePen עם HTML+CSS.
  2. צרו div בקלאס .bento עם 7 divs ילדים (classes .bento-item-1 עד .bento-item-7).
  3. העתיקו את ה-CSS של Bento Classic מ-section 5.8 (4 cols × 3 rows של 200px).
  4. הוסיפו רקעים שונים ל-7 התאים — יכולים להיות צבעי gradient, תמונות מ-Unsplash, או פשוט צבעים מוצקים.
  5. בכל תא הוסיפו תוכן: כותרת + טקסט קצר + אייקון/תמונה.
  6. הוסיפו border-radius: 1rem, padding: 1.5rem, ו-box-shadow עדין לכל תא.
  7. בדקו responsive: ב-mobile הפכו ל-grid-template-columns: 1fr (עמודה אחת, stacked).
  8. נסו 2 variations: שנו את התא הראשון ל-grid-column: span 3 (במקום 2). שנו את התא 2 ל-grid-row: span 2. תראו איך ה-layout משתנה.

מה צריך להיות בסוף: קוד עובד של bento grid עם 7 תאים + 2 variations + mobile responsive, והשוואה ויזואלית בין 3 ה-versions.

תרגיל 3: 8px Spacing System Refactor 25 דקות
  1. קחו את האתר הגנרי שAI בנה לכם (מ-Do Now #1 בפרק 1).
  2. פתחו את ה-CSS ורשמו את כל ערכי ה-margin, padding, gap שאתם רואים. סביר שתראו ערכים כמו 15px, 20px, 25px, 30px — לא כפולות של 8.
  3. הוסיפו בראש ה-CSS את הבלוק של 12 ה---space-* tokens (מ-section 5.9).
  4. עברו על כל ערך שרשמתם. לכל אחד, בחרו את ה-token הקרוב ביותר. 15→16 (--space-2), 20→24 (--space-3), 30→32 (--space-4), 45→48 (--space-6).
  5. החליפו את כל הערכים בקוד מ-px raw ל-var(--space-*).
  6. רעננו את האתר. השוו לפני/אחרי. רוב האנשים מרגישים "משהו יותר טוב" גם בלי לדעת מה.
  7. הריצו Lighthouse — האתר לא צריך להיפגע (אולי אפילו להשתפר בגלל פחות ערכים ייחודיים).

מה צריך להיות בסוף: קוד "אחרי" עם 100% tokens, רשימת 10+ ערכים שהומרו (old → new), ו-2 screenshots לפני/אחרי להשוואה.

תרגיל 4: Whitespace Audit — מהאתר שלכם לפרימיום 30 דקות
  1. פתחו את האתר הגנרי שלכם ב-side-by-side עם apple.com או stripe.com.
  2. בדקו 5 מדדים על כל אתר ב-DevTools:
    • Padding אנכי של hero section (top + bottom)
    • Margin בין hero ל-section הבא
    • Padding של section רגיל (top + bottom)
    • Gap בין cards ב-features grid
    • Max-width של פסקת טקסט
  3. רשמו את הערכים בטבלה. חישבו את היחס: אתר שלכם vs אתר הייחוס.
  4. סביר שתראו יחסים של 1:2 עד 1:4 — כלומר האתר שלכם יש בו 50-75% פחות whitespace מהמקור.
  5. תקנו: הכפילו את ה-padding של ה-hero, הגדילו את ה-section padding ל-96px, הוסיפו max-width של 42rem לפסקאות.
  6. ריצו Whitespace Audit Framework (מ-section 5.10): 5 השאלות של היחסים (1:4, 1:6).
  7. אם archetype של luxury — הגדילו עוד 30-50%.

מה צריך להיות בסוף: טבלה של 5 מדדים × 3 versions (אתר שלכם "לפני" / אתר ייחוס / אתר שלכם "אחרי"), רשימת 5+ שינויים ספציפיים שביצעתם, ו-2 screenshots של hero לפני/אחרי.

תרגיל 5: כתיבת Layout Spec לפרויקט AI 35 דקות
  1. קחו את Layout Spec Template מ-section 5.14. התאימו אישית לפרויקט שלכם.
  2. שילבו אותו עם: Anti-AI Starter Prompt (פרק 1) + Color Palette (פרק 3) + Typography Spec (פרק 4). התוצאה: פרומפט מלא שהוא 80% מהדרך ל-design brief מקצועי.
  3. הריצו את הפרומפט בכלי AI (Bolt / Lovable / v0 / Cursor / Claude).
  4. שמרו screenshot של התוצאה. השוו לתוצאה שקיבלתם בלי הפרומפט.
  5. הריצו בדיקה ב-DevTools: (א) האם page-level layout הוא Grid? (ב) האם יש grid-template-areas? (ג) האם feature cards משתמשים ב-Grid auto-fit ולא flex-wrap? (ד) האם כל padding/margin הוא var(--space-*)? (ה) האם hero יש לו padding של 96px+? (ו) האם פסקאות תחומות ל-720px?
  6. אם שאלה אחת לא עברה — זהו את החלק בפרומפט שצריך חיזוק והוסיפו. שמרו את הפרומפט המעודכן כ-v1.1.
  7. בדקו responsive: הקטינו ל-375px. האם ה-bento הפך לעמודה יחידה? האם ה-whitespace נשמר? האם הטקסט קריא?

מה צריך להיות בסוף: 2 screenshots (לפני/אחרי הפרומפט), 6 תשובות לבדיקת DevTools, רשימת התיקונים שעשיתם לפרומפט, ו-Layout Spec v1.1 אישי שלכם — מוכן לשימוש חוזר בכל פרויקט חדש.

שגרת עבודה: חידוד העין ל-Layout ו-Spacing
תדירותמה לעשותכמה זמן
יומי גלשו ל-3 אתרים (SaaS, portfolio, ecommerce). על כל אחד: בדקו את ה-page layout (Grid/Flex), מדדו 3 ערכי padding/gap, וזהו אם הם מ-8px grid. 5 דקות. 5 דקות
שבועי בחרו אתר שבניתם עם AI בשבוע האחרון. הריצו את Whitespace Audit (5 המדדים מ-Framework #3). תקנו את 3 הנקודות הגרועות ביותר. 25 דקות
חודשי עדכנו את Layout Spec Template האישי שלכם. הוסיפו archetype חדש אם גיליתם, הוסיפו bento pattern חדש שראיתם. בחנו על 2 פרויקטים. 35 דקות
אם אתם עושים רק דבר אחד מהפרק הזה

הוסיפו את 12 ה---space-* tokens ל-CSS של הפרויקט שלכם, והחליפו כל ערך margin/padding/gap ב-var(--space-*). זו עבודה של 20-30 דקות, והיא תעשה ל-"professional feel" של האתר יותר ממה ש-3 שעות של עיצוב אייקונים או אנימציות יכולות. ה-Rhythm הוויזואלי שנוצר מ-spacing עקבי ב-8px grid הוא ההבדל העיקרי בין אתר "בסדר" לאתר שנראה "כמו שסטודיו בנה אותו". אם תעשו רק את זה — זכיתם.

בדקו את עצמכם — 5 שאלות
  1. מתי Flexbox ומתי Grid? הסבירו ב-3 שאלות. (רמז: חד-ממדי/דו-ממדי; יישור בין שורות; macro/micro)
  2. מה מיוחד ב-bento grid? למה הוא עובד יותר מ-3 עמודות שוות? (רמז: היררכיה, focal point, הבדלים בגדלים)
  3. למה דווקא 8px ולא 5 או 10? תנו 3 סיבות. (רמז: חלוקה, hardware, industry convention)
  4. מה היחס הנכון של מרחקים בין אלמנטים באותה קבוצה לבין קבוצות שונות? למה? (רמז: Gestalt proximity, 1:4)
  5. מתי משתמשים ב-content-width ומתי ב-full-bleed? תנו 3 דוגמאות לכל אחד. (רמז: טקסט תחום 720px, תמונות hero 100vw)
סיכום הפרק

בפרק הזה בניתם את אחת היכולות הקשות והחיוניות ביותר של Vibe Coder: השליטה ב-layout, spacing, ו-whitespace כמעצבים מקצועיים. עברתם על ההבדל היסודי בין Flexbox (חד-ממדי, micro) ל-CSS Grid (דו-ממדי, macro), עם decision framework של 3 שאלות שיעזור לכם לבחור נכון בכל מצב. למדתם לבנות Bento Grid בסגנון Apple — הטרנד המרכזי של 2025-2026 — עם קוד מלא של 7 תאים וgrid-template-columns מוכן להעתיק.

בניתם את המערכת שמקפיצה 80% מה-"professional feel" של כל אתר: 12 ה---space-* tokens של ה-8px grid. מ---space-1 (8px) עד --space-12 (192px), עם טבלה מלאה של שימושים מומלצים. למדתם למה דווקא 8 (חלוקה קלה, hardware pixel density, industry convention), ואיך ה-tokens האלה הופכים את ה-CSS שלכם מ"מסודר" ל"מקצועי".

בחלק השני של הפרק גיליתם ש-whitespace הוא לא בזבוז אלא כלי עיצוב. עברתם על 3 סוגי whitespace (micro, macro, confidence), על עקרון ה-Gestalt proximity (יחס 1:4 בין קבוצות), ועל ההבדל בין content-width (680-720px לטקסט) ל-full-bleed (100vw לתמונות). הבנתם למה מותגי יוקרה משתמשים ב-יותר whitespace ולא בפחות — ואיך זה מתורגם לערכים מספריים ב-CSS.

למדתם גם איך להימנע מ-3 טעויות קטסטרופליות של Vibe Coders ו-AI: שימוש ב-Flexbox לכל דבר כולל galleries (הפתרון: Grid auto-fit), spacing לא עקבי בין sections (הפתרון: tokens בלבד), ופחד מ-whitespace (הפתרון: Whitespace Audit Framework של 5 שאלות).

יש לכם עכשיו 3 deliverables מוחשיים מהפרק הזה: (1) Grid vs Flexbox Cheat Sheet עם 10 מקרי שימוש ו-decision flowchart, (2) Bento Grid Layout מלא בסגנון Apple, ו-(3) מערכת Spacing מלאה עם 12 CSS custom properties. Plus — Layout Spec Prompt Template באנגלית שמוכן להשתלב עם הפרומפטים של פרקים 1, 3, ו-4 לקבלת "design brief" מלא.

הגשר לפרק הבא: בפרק 5 למדתם איך לסדר מבנה של אתר. בפרק 6 — "Modern CSS Superpowers — היכולות של 2024-2026 שמשנות הכל" — תכירו את הפיצ'רים של CSS שAI עדיין לא משתמש בהם בברירת-מחדל: Container Queries (רכיבים שמגיבים לגודל הקונטיינר ולא למסך), :has() selector (ה-"parent selector" שחיכינו לו 20 שנה), @layer (cascade layers לסוף ה-specificity wars), subgrid (ירושת tracks מ-parent grid), Native CSS Nesting, ו-Masonry layout native. ה-Grid שבניתם בפרק 5 הוא הבסיס לכל הפיצ'רים המתקדמים של פרק 6 — subgrid למשל לא עובד בלי הבנת Grid. כשתסיימו את פרק 6, תדעו לבקש מ-AI קוד שנראה ומתנהג כמו שכתבו אותו ב-2026, לא ב-2018.

צ'קליסט — מה צריך להיות מוכן לפני שממשיכים לפרק 6