4 שלב המיומנויות

��יווט ומעברי עמודים — תנועה חלקה בכל האתר

הניווט הוא מערכת העצבים של האתר — הוא קובע איך המשתמש עובר בין עמודים, מוצא מה שהוא מחפש, ומרגיש שהכל זורם. בפרק הזה תלמדו לבנות 5+ סוגי ניווט מקצועיים עם פרומפטים מדויקים ל-AI, להוסיף View Transitions למעברי עמודים חלקים, וליצור חוויית ניווט שלמה שמרגישה כמו אפליקציה native.

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

לאורך הקורס אתם בונים את היכולת לתת ל-AI brief מדויק שמייצר אתר WOW. בפרק 1 בניתם את אוצר המילים, בפרק 2 למדתם לכתוב brief מובנה, ובפרק 3 בניתם Hero Section מרהיב. עכשיו בפרק 4 אתם בונים את מערכת הניווט שמעבירה את המשתמש מה-hero לשאר האתר — בצורה חלקה, מקצועית ומרשימה. בפרק 5 נבנה את סקציות התוכן שהניווט מוביל אליהן.

מילון מונחים — 13 מונחים מרכזיים בפרק
מונח (English)קטגוריההגדרה בשורה אחת
Sticky NavNavigationסרגל ניווט שנדבק לראש המסך בגלילה באמצעות position: sticky
Mega MenuNavigationתפריט נפתח רחב שמציג קטגוריות, תמונות וקישורים בפריסת grid
Hamburger MenuNavigationאייקון 3 קווים אופקיים שפותח/סוגר תפריט ניווט, בעיקר במובייל
Sidebar NavigationNavigationניווט צדדי שנגלל פנימה/החוצה, נפוץ באפליקציות ובמובייל
BreadcrumbsNavigationנתיב ניווט היררכי שמראה את המיקום הנוכחי באתר — דף הבית → קטגוריה → עמוד
View Transitions APIBrowser APIAPI של הדפדפן ליצירת אנימציות מעבר חלקות בין מצבי DOM או עמודים
Page MorphingAnimationאלמנט שנראה כאילו הוא עובר בין עמודים באנימציה — shared element transition
Scroll Progress IndicatorUXפס קידום בראש הדף שמראה את אחוז הגלילה — מ-0% ל-100%
Scroll SpyJavaScriptמנגנון שמזהה את הסקציה הנוכחית במסך ומדגיש את הלינק המתאים בניווט
Command PaletteUX Patternחלון חיפוש מהיר שנפתח ב-Ctrl+K ומאפשר ניווט מהיר וביצוע פעולות
Active Link IndicatorUXסימון ויזואלי (קו תחתון מונפש, רקע) שמסמן את הלינק הפעיל בניווט
IntersectionObserverJavaScript APIAPI שמזהה מתי אלמנט נכנס/יוצא מאזור הצפייה — הבסיס ל-Scroll Spy
Focus TrapAccessibilityטכניקה שמונעת מה-Tab לצאת ממודל/תפריט פתוח — חובה לנגישות

4.3 מתכון: Mega Menu — תפריט שמרשים בלי להציף

ה-Mega Menu הוא תפריט dropdown ענק שנפתח מהניווט ומציג קטגוריות, תמונות, אייקונים וקישורים בפריסת grid. תראו אותו באתרי eCommerce כמו KSP, באתרי חינוך כמו Coursera, ובאתרי enterprise כמו Microsoft.

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

Prompt Template — Mega Menu

Build a mega menu dropdown with these specs:
- Trigger: hover on "שירותים" nav link (desktop), click on mobile
- Layout: full-width panel below nav, CSS Grid with 4 columns
- Column 1: "שיווק דיגיטלי" — 4 links with icons
- Column 2: "בניית אתרים" — 4 links with icons
- Column 3: "SEO" — 4 links with icons
- Column 4: Featured image card with CTA
- Entrance animation: opacity 0→1 + translateY(-10px→0) in 250ms ease-out
- Exit animation: reverse, 200ms
- Keyboard accessible: Tab navigates links, Escape closes menu, Arrow keys move between columns
- Click outside closes the menu
- Background: dark theme (#1e1e2e), links in #e2e8f0, hover highlight in #a855f7
- On mobile (below 768px): convert to vertical accordion inside hamburger menu
- RTL layout — first column on the right
- Max-height: 70vh with overflow-y: auto for very long menus
- Focus visible: 2px purple outline on focused links
טעות נפוצה: Mega Menu שמסתיר תוכן בלי דרך לסגור

אחת הטעויות הנפוצות ביותר: mega menu שנפתח ב-hover ואין דרך לסגור אותו. המשתמש מזיז את העכבר ופתאום תפריט ענק מכסה את הדף. הפתרון: תמיד הוסיפו 3 דרכי סגירה: (1) Escape במקלדת, (2) לחיצה מחוץ לתפריט, (3) כפתור X מפורש בפינה. בנוסף, הוסיפו aria-expanded="true/false" לכפתור שפותח את התפריט.

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

אם כבר בניתם mega menu — בדקו אותו עכשיו: לחצו Tab דרך כל הלינקים ואז Escape. האם הוא נסגר? האם ה-focus חוזר ללינק שפתח אותו? אם לא — זו בעיית נגישות שצריך לתקן.

נגישות ב-Mega Menu — לא אופציונלי

Mega menu שלא עובד עם מקלדת הוא mega menu שבור. הנה הכללים לפי WCAG 2.4.7:

מקשמה צריך לקרות
Tabעובר ללינק הבא בתוך התפריט
Escapeסוגר את התפריט ומחזיר focus ללינק שפתח אותו
Arrow Down/Upמנווט בתוך עמודה
Arrow Right/Leftעובר בין עמודות (ב-RTL: Right = הקודם, Left = הבא)
Home / Endקופץ ללינק הראשון/אחרון בעמודה
Enter / Spaceמפעיל את הלינק שב-focus

Israeli market note: אתרי eCommerce ישראליים כמו KSP ו-Zap משתמשים ב-mega menu עם עשרות קטגוריות. אם אתם בונים אתר עם מוצרים — mega menu הוא כמעט חובה. אבל גם שם, הגבילו ל-4-5 עמודות מקסימום ב-desktop.

Mega Menu — Do's and Don'ts

Do ✓Don't ✗
הגבילו ל-4-5 עמודות מקסימוםאל תדחסו 8+ עמודות — העין לא סורקת
הוסיפו תמונה או אייקון featured בעמודה אחתאל תמלאו רק טקסט — משעמם ומבלבל
אנימציית כניסה חלקה (opacity + translateY)אל תפתחו מיידית בלי transition — "קופץ" על המשתמש
סגירה ב-3 דרכים: Escape, click-outside, X buttonאל תשאירו תפריט פתוח בלי דרך ברורה לסגור
במובייל — accordion אנכיאל תציגו mega menu בפריסת grid במובייל — לא נכנס
hover delay של 100-150ms לפני פתיחהאל תפתחו ב-hover מיידי — המשתמש עובר עם העכבר בטעות

ה-hover delay trick: הוסיפו transition-delay: 100ms לפתיחת ה-mega menu. ככה אם המשתמש רק מעביר את העכבר מעל הלינק בדרך למקום אחר — התפריט לא נפתח. רק hover אמיתי (100ms+) פותח. זה מונע "הפתעות" מעצבנות.

תרגיל 1: Sticky Nav + Hamburger מלא (20 דקות)

מטרה: לבנות sticky nav רספונסיבי עם hamburger menu למובייל.

  1. העתיקו את prompt template מסעיף 4.2 ל-AI שלכם ובנו sticky nav עם blur
  2. הוסיפו לפרומפט: "Add hamburger icon for mobile (below 768px) that morphs to X with CSS transition 250ms"
  3. בדקו responsive: בדסקטופ צריך להיות full nav, במובייל — hamburger בלבד
  4. גללו ובדקו שה-blur עובד, שהצל מופיע, ושהמעבר חלק
  5. בדקו נגישות: Tab עובר דרך הלינקים, Escape סוגר את ה-hamburger menu

תוצאה מצופה: sticky nav שנראה כמו של Linear או Vercel — blur, צל, רספונסיבי, עם hamburger מונפש.

4.4 מתכון: Hamburger עם אנימציית Morphing

ה-Hamburger Menu הוא 3 קווים אופקיים שהופכים ל-X כשלוחצים. נשמע פשוט? ההבדל בין חובבני למקצועי הוא האנימציה. hamburger בלי אנימציה — שפשוט מחליף מ-3 קווים ל-X ברגע — נראה כמו אתר מ-2015.

הטכניקה: 3 אלמנטי <span> (או span אחד עם ::before ו-::after). ב-state הרגיל — 3 קווים מאוזנים. ב-state פתוח: הקו האמצעי נעלם (opacity: 0), העליון מסתובב 45° ויורד למרכז, התחתון מסתובב -45° ועולה למרכז. תוצאה: X חלק.

Prompt Template — Hamburger Morphing

Build an animated hamburger menu icon with these specs:
- Structure: button with 3 span elements for the lines
- Default state: 3 horizontal lines, 24px wide, 2px height, 6px gap, white (#e2e8f0)
- Active state (class "active"):
  - Middle line: opacity 0, scale 0
  - Top line: rotate(45deg) + translateY to center
  - Bottom line: rotate(-45deg) + translateY to center
  - Result: smooth X shape
- Transition: all 0.3s cubic-bezier(0.68, -0.55, 0.27, 1.55) — spring feel
- Button size: 44x44px minimum (touch target)
- aria-label: "תפריט ניווט"
- aria-expanded: toggles true/false
- Toggle class "active" on click with JavaScript
- Color: white lines, on hover: #a855f7
- Only visible below 768px (display: none on desktop)

שימו לב ל-cubic-bezier(0.68, -0.55, 0.27, 1.55) — זה easing עם spring effect קל. הקווים לא פשוט מסתובבים — הם "קופצים" קצת לפני שמתייצבים. זה מה שנותן תחושה מקצועית.

טעות נפוצה: Hamburger בלי אנימציה

Hamburger שמחליף מיידית מ-☰ ל-✕ בלי transition נראה חובבני. המשתמש לא מבין מה קרה — ה-icon פשוט "קפץ". תמיד הוסיפו transition של 250-300ms. המינימום: transition: transform 0.3s ease, opacity 0.3s ease;

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

העתיקו את הפרומפט וצרו hamburger icon מונפש. לחצו עליו 5 פעמים ברצף ובדקו: (1) האנימציה חלקה בכל פעם? (2) אין "קפיצה" בין המצבים? (3) ה-X מרוכז ומאוזן? אם הקווים לא נפגשים במרכז — צריך לכוון את ה-translateY.

SVG Path Morphing — הגרסה המתקדמת

אם רוצים אנימציה עוד יותר חלקה, אפשר לבנות את ה-hamburger מ-SVG paths ולהנפיש את ה-d attribute. ההבדל: במקום 3 קווים שמסתובבים, הצורה עצמה מתמורפת — כמו plasticine שמשנה צורה. זה דורש GSAP MorphSVG או CSS @property — מתקדם יותר, אבל התוצאה מרהיבה.

המלצה: התחילו עם גרסת ה-CSS (3 spans). אם הלקוח מבקש WOW נוסף — שדרגו ל-SVG morphing.

Hamburger Menu — מה קורה כשלוחצים?

ה-hamburger icon הוא רק הטריגר. מה שחשוב באמת: התפריט שנפתח. יש כמה סגנונות:

סגנוןתיאורPrompt Keyword
Slide-in from rightפאנל שנגלש מימין (RTL) עם overlay כהה מאחור"slide-in mobile menu from right, dark overlay"
Full-screen overlayתפריט שתופס את כל המסך עם רקע כהה ולינקים גדולים"full-screen mobile menu, centered large links, fade-in"
Drop-down panelתפריט שיורד מלמעלה כמו "וילון""dropdown mobile menu panel, slides down from nav"
Circular revealעיגול שמתרחב מה-hamburger וחושף את התפריט"circular clip-path reveal menu from hamburger position"

הסגנון הנפוץ ביותר: slide-in from right (ב-RTL) עם overlay. הוא פשוט, מוכר למשתמשים, ועובד טוב עם swipe gesture לסגירה. אם רוצים WOW — full-screen overlay עם אנימציית stagger על הלינקים (כל לינק נכנס עם 50ms delay אחרי הקודם) נראה מרהיב.

תמחור: בשוק הישראלי, hamburger menu מקצועי עם אנימציה (ללא AI) עולה כ-₪500-₪1,500 כחלק מפיתוח ניווט מלא. עם AI ופרומפט מדויק? חלק מהניווט שנבנה ב-5 דקות.

Accessibility reminder: ה-hamburger button חייב לכלול: aria-label="תפריט ניווט", aria-expanded="false" (שמתחלף ל-"true" כשהתפריט פתוח), ו-aria-controls="mobile-menu" שמצביע על ה-ID של התפריט. בלי אלה, screen readers לא יודעים שזה כפתור שפותח תפריט. ב-prompt: "hamburger button with aria-label, aria-expanded, aria-controls for accessibility".

Z-index trap: hamburger menu שנפתח צריך z-index גבוה מכל דבר אחר בדף — כולל ה-hero, כולל modals. טעות נפוצה: ה-hamburger menu נפתח אבל חלקים ממנו מוסתרים מתחת ל-hero section שיש לו z-index: 100. תמיד הגדירו z-index: 9999 על ה-mobile menu overlay ובדקו בכל הדפים.

4.6 View Transitions API — מעברי עמודים כמו אפליקציה

זה הרכיב שהופך אתר מ"אוסף דפים" ל"חוויה": View Transitions API. במקום שעמוד אחד נעלם ועמוד שני מופיע ברגע (ה-"בליק" הלבן שכולנו מכירים) — התוכן זורם, כותרות זזות למקום החדש, תמונות מתרחבות. כמו אפליקציה native.

תמיכת דפדפנים (אפריל 2026):

דפדפןSame-DocumentCross-Document (MPA)
Chrome111+ ✅126+ ✅
Edge111+ ✅126+ ✅
Safari18+ ✅בפיתוח ⏳
Firefox144+ ✅בפיתוח ⏳

Same-document transitions (SPA) נתמכות בכל הדפדפנים המודרניים ונכנסו ל-Baseline Newly Available בדצמבר 2025. Cross-document transitions (MPA — מעבר בין עמודי HTML שונים) עובדות כרגע רק ב-Chrome ו-Edge.

Page A מצב נוכחי startViewTransition () Snapshot צילום old + new ::view-transition-old/new Animate cross-fade / morph Page B מצב חדש הדפדפן מצלם את המצב הישן, מעדכן את ה-DOM, מצלם את המצב החדש, ומנפיש בין השניים הכל קורה אוטומטית — אתם רק מגדירים view-transition-name

איך משתמשים — הגרסה הפשוטה

הקוד הבסיסי ב-JavaScript:

// SPA: עוטפים את ה-DOM update ב-startViewTransition
document.startViewTransition(() => {
  // כאן מעדכנים את התוכן
  document.querySelector('.content').innerHTML = newContent;
});

// CSS: שם ייחודי לאלמנטים ש"עוברים" בין מצבים
.page-title {
  view-transition-name: page-title;
}
.hero-image {
  view-transition-name: hero-image;
}

// CSS: התאמה אישית של האנימציה
::view-transition-old(page-title) {
  animation: fade-out 0.25s ease-in;
}
::view-transition-new(page-title) {
  animation: fade-in 0.25s ease-out;
}

מה קורה כאן:

  1. אתם קוראים ל-startViewTransition() עם callback שמעדכן את ה-DOM
  2. הדפדפן מצלם snapshot של המצב הישן
  3. ה-callback רץ — ה-DOM מתעדכן
  4. הדפדפן מצלם snapshot של המצב החדש
  5. הדפדפן מנפיש בין שני ה-snapshots — cross-fade כברירת מחדל, או morphing אם יש view-transition-name תואם

Page Morphing — אלמנטים ש"עפים" בין עמודים

ה-WOW האמיתי הוא Page Morphing: אלמנט בעמוד A שנראה כאילו הוא עובר פיזית לעמוד B. תחשבו על תמונה בכרטיס שמתרחבת לתמונת header כשנכנסים לעמוד הפרטים — בדיוק כמו באפליקציית iOS.

כל מה שצריך: אותו view-transition-name על האלמנט בשני המצבים. הדפדפן עושה את השאר.

דוגמאות מעשיות ל-Page Morphing:

מהעמודלעמודמה מתמורפטהרגשה
רשימת מוצריםעמוד מוצרתמונת מוצר מתרחבת, כותרת זזה למעלהכמו אפליקציית חנות
רשימת בלוגמאמרכותרת וכותב "עפים" למקום בעמוד המאמרכמו Medium או Substack
גלריית פרויקטיםעמוד פרויקטתמונה ראשית מתרחבת ל-heroכמו Behance או Dribbble
DashboardDetail viewכרטיס נתון מתרחב לעמוד מלאכמו אפליקציית BI

הכלל: Page morphing עובד הכי טוב כשיש אלמנט ויזואלי ברור (תמונה, כותרת) ששני העמודים חולקים. אם אין אלמנט משותף — Cross-fade רגיל (ברירת המחדל) נראה מצוין.

Cross-Document Transitions (MPA)

אם האתר שלכם הוא MPA (Multi-Page Application — דפי HTML נפרדים, לא React/Vue), אפשר להפעיל View Transitions בין עמודים בלי JavaScript כמעט. מספיק להוסיף ב-CSS:

/* בשני העמודים — ב-CSS */
@view-transition {
  navigation: auto;
}

/* אלמנט משותף */
.page-title {
  view-transition-name: page-title;
}
.hero-image {
  view-transition-name: hero-image;
}

זה עובד רק ב-Chrome/Edge 126+. ב-Safari ו-Firefox — הדף פשוט נטען כרגיל, בלי אנימציה. זה בדיוק progressive enhancement — אין נזק, רק בונוס.

טעות נפוצה: View Transitions בלי fallback

Cross-document transitions עובדות רק ב-Chrome/Edge. אם לא מוסיפים fallback, הדף נשבר בדפדפנים אחרים. תמיד עטפו:

if (document.startViewTransition) {
  document.startViewTransition(() => updateDOM());
} else {
  updateDOM(); // פשוט מעדכנים בלי אנימציה
}

זה progressive enhancement — הדף עובד בכל מקום, האנימציה היא בונוס בדפדפנים שתומכים.

View Transitions ב-Frameworks: אם אתם עובדים עם React, Vue או Svelte — שילוב View Transitions קצת שונה. ב-React, למשל, עוטפים את ה-router change. ב-Next.js 14+ ו-Nuxt 3.4+ יש תמיכה built-in ב-View Transitions — לא צריך לכתוב את הקוד ידנית. בפרומפט ל-AI: "Add View Transitions support using the framework's built-in transition API".

Performance note: View Transitions לא פוגעות בביצועים — הדפדפן עושה את ה-animation על layer נפרד (compositor). אין layout recalculation, אין repaints. ה-DOM update קורה ברגע, והאנימציה היא רק ויזואלית. בגלל זה progressive enhancement עובד כל כך טוב — אם הדפדפן לא תומך, ה-DOM update פשוט קורה מיידית בלי עיכוב.

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

הוסיפו view-transition-name: hero-title; לכותרת ה-hero בדף אחד. צרו דף שני עם אותו class ואותו view-transition-name. עטפו את הניווט ב-startViewTransition(). צפו בכותרת "עפה" בין העמודים.

Prompt Template — View Transitions

Build a two-page demo with View Transitions API:
- Page 1: Grid of 3 product cards, each with image + title + price
- Page 2: Full product detail page with hero image + title + description
- When clicking a card, use document.startViewTransition() to navigate
- Shared elements: image (view-transition-name: product-image), title (view-transition-name: product-title)
- Image should morph from card size to full-width hero
- Title should slide from card position to page title position
- Default transition: cross-fade 0.3s for everything else
- Add fallback for browsers without View Transitions support
- Smooth back navigation with browser back button
- Dark theme: #1e1e2e background, #e2e8f0 text, #a855f7 accents
- RTL layout, Hebrew content
- Prices in NIS: ₪99, ₪149, ₪299
Framework — View Transitions: מתי כן ומתי לא
מצבהמלצהלמה
SPA (React, Vue, Svelte)כן — same-document transitionsתמיכה מלאה בכל הדפדפנים המודרניים
MPA פשוט (HTML pages)כן עם fallback — cross-documentChrome/Edge בלבד, אבל progressive enhancement
תוכן קריטי (checkout, forms)דלגו — מהירות > אנימציהאנימציות מאטות UX כשהמשתמש ממהר
תיק עבודות / showcaseבהחלט! — full morphingה-WOW factor הוא חלק מהמוצר
אתר ישן עם jQueryאפשרי — מתחילים עם cross-fadeProgressive enhancement, לא צריך refactor
תרגיל 3: View Transitions Demo (25 דקות)

מטרה: לבנות שני עמודים עם מעבר חלק ו-shared element transition.

  1. העתיקו את prompt template מסעיף 4.6 ל-AI שלכם
  2. בנו עמוד 1: grid של 3 כרטיסי מוצר עם תמונה, כותרת ומחיר (₪)
  3. בנו עמוד 2: עמוד פרטי מוצר עם תמונה גדולה ותיאור
  4. הגדירו view-transition-name על התמונה והכותרת בשני העמודים
  5. הוסיפו fallback: if (!document.startViewTransition)
  6. בדקו ב-Chrome: האם התמונה "עפה" מהכרטיס לעמוד המוצר?

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

4.7 Scroll Progress Indicator ו-Scroll Spy

שני רכיבים שמשדרגים כל אתר עם תוכן ארוך:

Scroll Progress Indicator — פס צבעוני בראש הדף שמתמלא ככל שגוללים למטה. כשאתם ב-50% של הדף — הפס ב-50%. פשוט, אלגנטי, ועוזר למשתמש להבין כמה נשאר. תראו אותו ב-Medium, ב-Dev.to, ובאתרי חדשות מודרניים.

Scroll Spy — מנגנון שמזהה את הסקציה הנוכחית שהמשתמש רואה ומדגיש את הלינק המתאים בניווט. כשגוללים לסעיף "שירותים" — הלינק "שירותים" בניווט מקבל highlight. זה עוזר למשתמש לדעת איפה הוא נמצא בדף.

Scroll Progress — שתי דרכים

דרך 1: JavaScript (עובד בכל מקום)

// HTML: <div class="progress-bar"></div>
const progressBar = document.querySelector('.progress-bar');

window.addEventListener('scroll', () => {
  const scrollTop = document.documentElement.scrollTop;
  const scrollHeight = document.documentElement.scrollHeight
                     - document.documentElement.clientHeight;
  const progress = (scrollTop / scrollHeight) * 100;
  progressBar.style.width = progress + '%';
});

דרך 2: CSS Pure (Chrome/Edge בלבד)

.progress-bar {
  position: fixed;
  top: 0;
  left: 0; /* RTL: right: 0 for fill from right */
  width: 100%;
  height: 3px;
  background: linear-gradient(90deg, #a855f7, #7c3aed);
  transform-origin: left;
  animation: grow-progress auto linear;
  animation-timeline: scroll();
}

@keyframes grow-progress {
  from { transform: scaleX(0); }
  to { transform: scaleX(1); }
}

גרסת ה-CSS משתמשת ב-animation-timeline: scroll() — נקייה ומבלי JavaScript, אבל נתמכת רק ב-Chrome/Edge (אפריל 2026). המלצה: השתמשו בגרסת JS כברירת מחדל, והוסיפו CSS כ-progressive enhancement.

עיצוב ה-Progress Bar — מעבר ל-Default

פס פשוט בגובה 3px עובד, אבל יש כמה שדרוגים שמוסיפים polish:

וריאציהCSSאפקט
Gradientbackground: linear-gradient(90deg, #a855f7, #ec4899);פס צבעוני שמשתנה מסגול לוורוד
Glowbox-shadow: 0 0 10px #a855f7, 0 0 20px rgba(168,85,247,0.3);זוהר סביב הפס — eye-catching
Rounded tipborder-radius: 0 0 4px 0; (RTL: left radius)קצה מעוגל נראה יותר organic
Under navtop: 64px; (גובה הניווט)הפס מתחת לניווט, לא מעליו

בפרומפט: "Scroll progress bar at top, 3px height, purple gradient (#a855f7 to #ec4899), subtle glow effect, positioned just below the sticky nav".

טעות נפוצה: Scroll Progress לא מדויק עם Lazy Loading

אם יש לכם תמונות עם lazy loading, גובה הדף משתנה תוך כדי גלילה — האינדיקטור קופץ. פתרון: הגדירו min-height או aspect-ratio על containers של תמונות, או השתמשו ב-ResizeObserver שמעדכן את החישוב כשגובה הדף משתנה.

Scroll Spy עם IntersectionObserver

בעבר, scroll spy דרש האזנה ל-scroll event + חישובים מסובכים. היום יש IntersectionObserver — API שמודיע לכם מתי אלמנט נכנס/יוצא מאזור הצפייה. הרבה יותר performant ופשוט:

const sections = document.querySelectorAll('section[id]');
const navLinks = document.querySelectorAll('.nav-link');

const observer = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      navLinks.forEach(link => link.classList.remove('active'));
      const activeLink = document.querySelector(
        `.nav-link[href="#${entry.target.id}"]`
      );
      if (activeLink) activeLink.classList.add('active');
    }
  });
}, { rootMargin: '-20% 0px -80% 0px' });

sections.forEach(section => observer.observe(section));

ה-rootMargin: '-20% 0px -80% 0px' אומר: "חשב סקציה כ-active כשהיא ב-20% העליונים של המסך". זה נותן תחושה טבעית — הסקציה מסומנת כשמתחילים לקרוא אותה, לא כשמגיעים לסופה.

למה IntersectionObserver ולא scroll event?

בעבר, scroll spy נבנה עם window.addEventListener('scroll', ...) וחישוב ידני של getBoundingClientRect() לכל סקציה. הבעיה: scroll event מופעל עשרות פעמים בשנייה בכל pixel של גלילה, ו-getBoundingClientRect() גורם ל-layout recalculation (forced reflow) — שני הדברים הכי יקרים ביצועית.

IntersectionObserver הוא async — הדפדפן מחשב את ה-intersections בזמן שלו, מחוץ ל-main thread. הקוד קצר יותר, ביצועים טובים פי 5-10, ואין צורך ב-throttle/debounce.

שיטהביצועיםקודתמיכה
scroll event + getBoundingClientRectבינוני-נמוך (forces layout)~25 שורות + throttleכל הדפדפנים
IntersectionObserverגבוה (async, no layout force)~15 שורות, ללא throttleכל הדפדפנים המודרניים
CSS scroll-driven (עתידי)הכי גבוה (pure CSS)~5 שורות CSSChrome/Edge בלבד

המלצה: תמיד השתמשו ב-IntersectionObserver ל-scroll spy. אין סיבה להשתמש ב-scroll event ב-2026 אלא אם צריכים את ה-pixel-level precision (כמו ב-progress bar).

Active Link Indicator — הנגיעה הסופית

כשה-scroll spy מזהה סקציה חדשה, הלינק בניווט מקבל .active class. ה-CSS שהופך את זה למרשים:

.nav-link {
  position: relative;
}
.nav-link.active::after {
  content: '';
  position: absolute;
  bottom: -4px;
  right: 0; /* RTL */
  width: 100%;
  height: 2px;
  background: #a855f7;
  animation: slide-in 0.3s ease-out;
}
@keyframes slide-in {
  from { transform: scaleX(0); }
  to { transform: scaleX(1); }
}
עשו עכשיו (4 דקות)

הוסיפו scroll progress bar לדף שלכם (העתיקו את קוד ה-JavaScript למעלה). גללו עד הסוף ובדקו: האם הרוחב מגיע ל-100%? אם לא — ייתכן שיש lazy loading שמשנה את גובה הדף. הוסיפו min-height על כל container של תמונה.

4.8 Command Palette (Ctrl+K) — חיפוש מהיר כמו מקצוענים

אם השתמשתם ב-VS Code, Notion, Figma, או GitHub — אתם מכירים את הפטרן: לוחצים Ctrl+K (או Cmd+K ב-Mac), נפתח חלון חיפוש, מקלידים מה שמחפשים, ומגיעים לשם בשנייה. זה Command Palette — ובשנתיים האחרונות הוא עבר מכלי למפתחים לסטנדרט ב-SaaS ואפילו באתרי eCommerce.

למה הוא כל כך טוב?

Prompt Template — Command Palette

Build a command palette (Ctrl+K) with these specs:
- Trigger: Ctrl+K (Windows) / Cmd+K (Mac), or click on search icon in nav
- UI: centered dialog, 500px wide, dark theme (#1e1e2e bg, #2a2a3e input bg)
- Search input at top with "חפש עמודים, פעולות..." placeholder
- Results list below with max 8 visible items, scrollable
- Categories: "עמודים" (pages), "פעולות" (actions), "לאחרונה" (recent)
- Each result: icon + title (Hebrew) + optional keyboard shortcut badge
- Keyboard navigation: Arrow up/down to select, Enter to activate, Escape to close
- Fuzzy search: typing "שיר" finds "שירותים" and "שיווק"
- Backdrop: semi-transparent overlay behind palette
- Entrance: scale(0.95)→scale(1) + opacity 0→1, 200ms ease-out
- Exit: reverse, 150ms
- Focus: auto-focus on input when opened
- Highlight: selected item has #a855f7 left border + darker bg
- RTL layout, Hebrew labels
- Show "אין תוצאות" when no matches found
- Close on click outside or Escape
עשו עכשיו (3 דקות)

לפני שבונים — לכו לבדוק את המקור: לחצו Ctrl+K באתרים האלה: GitHub, Vercel, Notion. שימו לב: מה משותף? (רמז: dark background, search input at top, keyboard navigation, fuzzy search). זה ה-pattern שאנחנו מייצרים.

מתי כן ומתי לא

Command palette הוא לא לכל אתר:

תמחור בשוק הישראלי: הוספת command palette לאתר קיים = בערך 3-5 שעות עבודה (₪1,500-₪3,000 אם מזמינים ממפתח). עם AI ופרומפט טוב? 30 דקות.

האנטומיה של Command Palette מצוין

כל command palette מצוין מורכב מ-6 רכיבים:

רכיבתפקידחובה / אופציונלי
Backdropשכבת overlay כהה שממקדת תשומת לב בחלון החיפושחובה — בלי backdrop הפלטה "צפה" בלי הקשר
Search Inputשדה חיפוש עם auto-focus ו-placeholder מנחהחובה — הלב של הפלטה
Results Listרשימת תוצאות מסוננות עם highlight על הפריט הנבחרחובה
Categoriesסיווג תוצאות: "עמודים", "פעולות", "לאחרונה"אופציונלי — אבל מומלץ מאוד
Shortcut Badgesתגי keyboard shortcut ליד כל פעולה (כמו Ctrl+N)אופציונלי — מלמד power users
Empty State"אין תוצאות" עם הצעה לחיפוש אחרחובה — חייב להיות ברור שאין תוצאות, לא שהחיפוש נתקע

Fuzzy Search — חובה בעברית: חיפוש מדויק בעברית בעייתי — אנשים מקלידים "שרות" במקום "שירות" או "srvs" במקום "services". Fuzzy search מוצא תוצאות גם עם שגיאות. בפרומפט: "Add fuzzy search that finds partial matches in Hebrew and English".

ספריות מומלצות: אם אתם בונים ב-React, cmdk (מ-Rauno Freiberg, היוצר של Vercel's design) ו-kbar הן שתי הספריות הפופולריות ביותר. הן composable, unstyled (אתם מעצבים), ותומכות ב-keyboard navigation מלא. לפרויקטים בלי React — vanilla JS עם הפרומפט שלמעלה עובד מצוין.

Accessibility בפלטה: Command palette חייבת לעמוד ב-WCAG:

בפרומפט: "Command palette must be fully accessible with ARIA roles: dialog, combobox, listbox, option". ה-AI יוסיף את כל ה-attributes הנכונים.

תרגיל 4: Command Palette (20 דקות)

מטרה: לבנות command palette עובד עם חיפוש ומקלדת.

  1. העתיקו את prompt template למעלה ל-AI שלכם
  2. הוסיפו 10 פריטי ניווט: 5 עמודים + 3 פעולות + 2 "לאחרונה"
  3. בדקו: Ctrl+K פותח, Escape סוגר, Arrow keys מנווטים, Enter מפעיל
  4. הקלידו חיפוש — האם ה-fuzzy search עובד? (חיפוש חלקי מוצא תוצאות?)
  5. עצבו dark theme שמתאים לאתר שלכם

תוצאה מצופה: command palette שנפתח ב-Ctrl+K, מחפש בעברית, ומנווט עם מקלדת — בדיוק כמו ב-Notion.

4.9 הקומבו המנצח — Sticky + Progress + Blur + Spy

למדנו כל רכיב בנפרד. עכשיו מגיע הרגע ששווה את כל הפרק: חיבור הכל ביחד.

הקומבו הנפוץ ביותר ב-2025 לאתרים עם תוכן:

  1. Sticky Nav עם Blur — הבסיס, תמיד שם
  2. Scroll Progress Bar — מעל הניווט, מראה כמה נשאר
  3. Scroll Spy — מדגיש את הסקציה הנוכחית בניווט
  4. Active Link Indicator — קו תחתון שזז בין הלינקים

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

דוגמאות מהשטח — מי עושה את זה טוב?

בואו נראה איך אתרים אמיתיים משלבים את הקומבו:

אתרSticky + BlurProgressSpyTransitionsתוצאה
Linear.app✅ blur מושלם✅ סקציות✅ SPA routesמרגיש כמו אפליקציה desktop
Stripe.com✅ שקוף → solid✅ page morphclean ומקצועי
Dev.to✅ hide on scroll down✅ top barfocus על תוכן
MDN Web Docs✅ sticky sidebar✅ TOC sidebarתיעוד קל לניווט
Vercel.com✅ blur + shrink✅ Cmd+K palettepower user paradise

שימו לב: אף אחד מהאתרים הללו לא משתמש בכל הרכיבים ביחד. כל אחד בוחר את הקומבינציה שמתאימה לסוג התוכן שלו. הכלל: sticky + blur הוא בסיס חובה. הוסיפו 1-2 רכיבים נוספים לפי הצורך — לא יותר.

אם אתם בונים אתר עם תוכן ארוך (בלוג, תיעוד, קורס) — הקומבו שעובד הכי טוב: sticky blur + progress bar + scroll spy. שלושת אלה ביחד נותנים למשתמש תחושה של שליטה ומיקום בלי להכביד על הממשק.

אם אתם בונים SaaS או פלטפורמה — הקומבו: sticky blur + command palette (Ctrl+K) + View Transitions. Power users אוהבים keyboard shortcuts, והמעברים החלקים עושים הבדל עצום בתחושת ה-UX.

Prompt Template — הקומבו המלא

Build a complete navigation experience:

1. STICKY NAV:
   - position: sticky, top: 0, z-index: 1000
   - backdrop-filter: blur(12px) when scrolled
   - 5 section links with smooth scroll behavior

2. SCROLL PROGRESS BAR:
   - Fixed at very top (above nav), 3px height
   - Gradient: #a855f7 to #7c3aed
   - Width updates on scroll from 0% to 100%

3. SCROLL SPY:
   - IntersectionObserver watches all sections
   - Adds .active class to matching nav link
   - rootMargin: '-20% 0px -80% 0px'

4. ACTIVE LINK INDICATOR:
   - Animated underline on .active nav link
   - 2px purple line with slide-in animation

5. RESPONSIVE:
   - Desktop: full horizontal nav
   - Mobile (below 768px): hamburger menu

RTL layout, Hebrew content, dark theme
Smooth scroll: scroll-behavior: smooth on html
Performance: single scroll listener with requestAnimationFrame

Performance — בלי לשבור את הדף

כשמשלבים scroll listener + IntersectionObserver + backdrop-filter — צריך לשים לב לביצועים:

רכיבעלות ביצועיםאופטימיזציה
Scroll listenerבינונית — מופעל בכל pixel של גלילההשתמשו ב-requestAnimationFrame, אל תקראו layout properties
IntersectionObserverנמוכה — async, לא חוסםאין צורך באופטימיזציה — כבר performant
backdrop-filterבינונית-גבוהה — GPU intensivewill-change: backdrop-filter רק על הניווט
Progress bar widthנמוכה — compositor propertyהשתמשו ב-transform: scaleX() במקום width

טריק מפתח: במקום לעדכן width של progress bar, השתמשו ב-transform: scaleX(progress). ל-transform יש ביצועים הרבה יותר טובים כי הוא רץ על ה-GPU (compositor thread) ולא גורם ל-layout recalculation.

איך לוודא שהקומבו עובד ב-RTL

כשמשלבים את כל הרכיבים ביחד, RTL יכול לשבור דברים. הנה רשימת בדיקות:

רכיבבדיקת RTLמה לתקן אם שבור
Sticky Navלוגו בימין, CTA בשמאל?הוסיפו direction: rtl ל-nav container
Hamburgerהכפתור בצד שמאל (RTL standard)?שימו ב-flex: order: -1 על ה-hamburger
Progress Barממלא מימין לשמאל?transform-origin: right במקום left
Scroll SpyActive indicator בצד הנכון?שנו left ל-right ב-::after
Sidebarנגלש מימין?right: 0; translateX(100%) במקום left
Breadcrumbsחיצים בכיוון הנכון?השתמשו ב- (שמאלה) לא ב-

Pro tip: בפרומפט ל-AI, תמיד ציינו "RTL layout, Hebrew content" בהתחלה. זה חוסך 80% מבעיות ה-RTL כי ה-AI מתחשב בזה מההתחלה. אם שוכחים ומוסיפים RTL אחרי — צריך לתקן הרבה דברים.

Smooth Scroll — הבסיס ששוכחים

לפני שכל הרכיבים המתקדמים עובדים, צריך דבר אחד בסיסי: smooth scrolling. בלי זה, לחיצה על לינק בניווט שמפנה ל-anchor ("שירותים" → #services) קופצת לסקציה ברגע. עם smooth scroll, הדף גולל בצורה חלקה:

/* CSS — שורה אחת שמשנה הכל */
html {
  scroll-behavior: smooth;
}

/* עם offset לניווט sticky */
html {
  scroll-behavior: smooth;
  scroll-padding-top: 80px; /* גובה הניווט */
}

ה-scroll-padding-top חשוב: בלי זה, הסקציה שגוללים אליה תיחתך מתחת לניווט ה-sticky. הערך צריך להיות לפחות כגובה הניווט שלכם (בדרך כלל 60-80px).

שימו לב: scroll-behavior: smooth מכובד גם על ידי prefers-reduced-motion. אם למשתמש יש הגדרה שמבקשת פחות אנימציה, הדפדפן יתעלם מ-smooth ויקפוץ ישירות. זה בדיוק הנכון — נגישות מובנית.

בפרומפט ל-AI, הוסיפו תמיד: "html { scroll-behavior: smooth; scroll-padding-top: 80px; }" — זה מבטיח שניווט anchor-based עובד חלק עם sticky nav.

JavaScript alternative: אם צריכים שליטה מדויקת יותר (למשל, easing שונה), אפשר להשתמש ב-JavaScript:

document.querySelector('#services').scrollIntoView({
  behavior: 'smooth',
  block: 'start'
});

היתרון: אפשר להוסיף callback אחרי שהגלילה נגמרת, לשלוט ב-timing, ולשלב עם View Transitions. החיסרון: יותר קוד ותלות ב-JavaScript.

ביצועים — Benchmark לניווט

אחרי שבניתם את הקומבו, הריצו את הבדיקות הבאות:

מטריקהיעדכלימה לתקן אם נכשל
TBT (Total Blocking Time)< 200msLighthouseהסירו scroll listeners כבדים, השתמשו ב-IntersectionObserver
CLS (Cumulative Layout Shift)< 0.1Lighthouseהגדירו fixed height לניווט, אל תשנו גובה dynamically
FPS בגלילה58+ fpsChrome Performance tabהוסיפו will-change ל-backdrop-filter, השתמשו ב-transform במקום width
Accessibility Score95+Lighthouseהוסיפו aria-labels, focus visible, keyboard navigation

דוגמאות מייצגות מהשוק הישראלי: אתרי SaaS ישראליים כמו Monday.com ו-Fiverr משקיעים הרבה בניווט. Monday.com משתמשים ב-sticky nav עם command palette (Ctrl+K), sidebar navigation ב-dashboard, ו-breadcrumbs בעמודים פנימיים. Fiverr משתמשים ב-mega menu עם קטגוריות ותמונות. שניהם דוגמאות מצוינות לחקות.

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

העתיקו את prompt הקומבו ל-AI ובנו אותו. אחר כך פתחו Lighthouse ב-Chrome DevTools וריצו performance audit. בדקו: האם ה-TBT (Total Blocking Time) מתחת ל-200ms? אם לא — ייתכן שה-scroll listener כבד מדי. הוסיפו requestAnimationFrame.

תרגיל 5 (מסכם): ניווט מלא — הכל ביחד (30 דקות)

מטרה: לבנות חוויית ניווט מלאה שמשלבת את כל מה שלמדנו.

  1. שלבו: sticky nav + blur + hamburger mobile + scroll progress + scroll spy + active indicator
  2. הוסיפו View Transitions בין 2 עמודים (מעמוד ראשי לעמוד פנימי)
  3. בדקו responsive: desktop = full nav + progress, mobile = hamburger + progress
  4. בדקו ביצועים: Lighthouse performance score > 90, TBT < 200ms
  5. בדקו נגישות: כל הניווט עובד עם מקלדת, focus visible, Escape סוגר
  6. בדקו RTL: הכל מיושר נכון, breadcrumbs בכיוון הנכון

תוצאה מצופה: אתר עם חוויית ניווט ברמה של Linear, Vercel, או Stripe — חלק, מקצועי, עם מעברים שמרגישים כמו magic.

4.10 סיכום ו-Navigation Checklist

סיכום הפרק

עברנו דרך ארוכה: מ-sticky nav בסיסי, דרך mega menu נגיש ו-hamburger מונפש, ועד View Transitions שהופכות מעבר בין עמודים לחוויה קולנועית. הנה מה שבניתם:

  • 5 Prompt Templates — לכל סוג ניווט: sticky, mega menu, hamburger, sidebar, command palette
  • דמו View Transitions — שני עמודים עם page morphing ו-fallback
  • Scroll Progress + Spy — אינדיקטורים שעוזרים למשתמש לדעת איפה הוא
  • הקומבו המנצח — sticky + blur + progress + spy = חוויה שלמה
  • 2 Frameworks — בחירת ניווט לפי סוג אתר, ומתי להשתמש ב-View Transitions

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

מה למדתם:

  • כל ניווט מתחיל עם sticky nav + blur — זה הבסיס שנותן תחושה מקצועית מיידית
  • Mega menu חייב להיות נגיש: Tab, Escape, Arrow keys — בלי מקלדת = שבור
  • Hamburger חייב אנימציית morphing — instant toggle נראה חובבני
  • View Transitions API הופכת מעבר בין עמודים לחוויה — ו-progressive enhancement אומר שאין סיכון
  • Scroll spy + progress ביחד נותנים למשתמש תחושת שליטה ומיקום
  • Command palette הוא pattern שהולך ומתפשט — הוסיפו אותו לכל SaaS או אתר עם הרבה עמודים
  • RTL חייב להיות בפרומפט מההתחלה — לא "נתקן אחר כך"

מה הלאה: בפרק 5 נבנה את סקציות התוכן והכרטיסים — הגוף של האתר שהניווט שלכם מוביל אליו. כל bento grid, pricing table ו-FAQ accordion ייקבלו prompt template מדויק.

שגרת עבודה — ניווט

בכל אתר חדש (יומי):

  • התחילו עם sticky nav + blur — זה הבסיס
  • השתמשו ב-framework לבחירת סוג ניווט לפי סוג האתר
  • בדקו keyboard navigation לפני שמציגים ללקוח

פעם בשבוע:

  • בדקו אתרים חדשים שנוצרו עם AI — האם View Transitions נתמכות כבר?
  • בדקו caniuse.com לעדכונים ב-View Transitions ו-scroll-driven animations

פעם בחודש:

  • עדכנו את ה-prompt templates שלכם לפי שינויים בתמיכת דפדפנים
  • בדקו ספריות command palette חדשות (cmdk, kbar) — האם יש גרסה טובה יותר?

5 Prompt Templates — סיכום מהיר

הנה כל 5 ה-prompt templates שלמדנו, בקיצור. שמרו את הטבלה הזו — היא השליף שלכם:

#סוג ניווטPrompt Core Phraseסעיף
1Sticky Nav + Blur"sticky nav, backdrop-filter blur(12px) when scrolled, transparent at top"4.2
2Mega Menu"mega menu dropdown, 4-column grid, keyboard accessible, Escape closes"4.3
3Hamburger Morphing"animated hamburger icon, 3 spans morph to X, cubic-bezier spring"4.4
4Sidebar + Breadcrumbs"sidebar nav from right (RTL), overlay backdrop, focus trap, swipe close"4.5
5Command Palette"Ctrl+K command palette, fuzzy search, arrow key navigation, dark dialog"4.8

איך להשתמש: קחו את ה-Core Phrase, הוסיפו "RTL layout, Hebrew content, dark theme (#1e1e2e), responsive" — ויש לכם prompt בסיסי שעובד. לפרטים מלאים, חזרו לסעיף הרלוונטי והעתיקו את ה-prompt המלא.

שמרו את הטבלה הזו. היא תשמש אתכם בכל פרויקט חדש. כשלקוח מבקש "ניווט מקצועי" — אתם יודעים בדיוק איזה prompt להעתיק לפי סוג האתר (ראו את ה-framework בסעיף 4.1). עם 5 ה-prompts האלה, אתם מכסים את כל סוגי הניווט ש-90% מהאתרים צריכים.

אם אתם לוקחים דבר אחד מהפרק הזה

תמיד תוסיפו sticky nav עם blur לכל אתר. זה שינוי של שורה אחת בפרומפט ל-AI — "Add sticky nav with backdrop-filter blur on scroll" — והתוצאה היא ניווט שנראה מקצועי מיידית. זה הבסיס שעליו כל השאר נבנה.

בדקו את עצמכם — 5 שאלות
  1. מה ההבדל בין position: sticky ל-position: fixed? ומתי להשתמש בכל אחד?
  2. אילו 3 מקשי מקלדת חייבים לעבוד ב-mega menu נגיש? (רמז: Tab, Escape, ו...?)
  3. מה עושה view-transition-name? ומה קורה אם אותו שם מופיע בשני אלמנטים בשני מצבים?
  4. למה עדיף transform: scaleX() על width לאנימציית progress bar?
  5. מתי כן ומתי לא להוסיף command palette לאתר? תנו 2 דוגמאות לכל צד.

Navigation Quality Checklist

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

#קטגוריהבדיקהעבר?
1Stickyהניווט נשאר למעלה בגלילה עם blur effect?
2z-indexהניווט מעל כל תוכן אחר (כולל hero, modals)?
3Mobileבמובייל — hamburger menu עם אנימציית morphing?
4Touchכל אלמנט לחיץ לפחות 44x44px?
5KeyboardTab עובר דרך כל הלינקים, Escape סוגר תפריטים?
6Focusיש focus visible indicator על כל אלמנט אינטראקטיבי?
7RTLכל הפריסה מיושרת RTL — לוגו ימין, CTA שמאל?
8ProgressScroll progress bar מגיע ל-100% בדיוק בתחתית?
9SpyScroll spy מדגיש את הסקציה הנכונה בגלילה?
10TransitionsView Transitions עובדות + fallback לדפדפנים ישנים?
11PerformanceLighthouse performance > 90, TBT < 200ms?
12Reduced Motionprefers-reduced-motion מכובד — אנימציות מצומצמות?
עשו עכשיו (3 דקות)

עברו על ה-Navigation Checklist ובדקו את הניווט שבניתם לאורך הפרק: כמה פריטים מסומנים? אם פחות מ-9 מתוך 12 — חזרו לסעיף הרלוונטי ותקנו. מטרה: 10+ מתוך 12 לפני שעוברים לפרק 5.