Navbar
navbar אחד לכל האתרים. כל האפשרויות שלו בעמוד אחד: מה כל אחת, איך מפעילים אותה, ואיפה רואים אותה חיה.
איך הניווט בנוי, ממבט על:
nav-config.ts the menu as data, one file per site
└─ <UkNavbar config={…} /> the bar's look: glass, sticky, hideOnScroll…
├─ Topbar topbar: { start, end } phone, hours, address
├─ the bar
│ ├─ logo logo: { light, dark, alt, href }
│ ├─ items[] each one: link · dropdown · mega
│ │ └─ mega panel
│ │ ├─ groups[] titles and links (UkNavbarMegaGroups)
│ │ ├─ megaPanel a panel of your own
│ │ │ └─ 🏆 UkMegaMenuCard the card inside it
│ │ └─ megaPanelFooter the "see all" link
│ └─ actions[] cta · link · search · icon-link · lang-switch
└─ under 1024px: the phone menu (UkNavbarMobile)
├─ 🍔 Hamburger
├─ mobileMode overlay · drawer
├─ mobile accordion · drill-down (the sub-menus)
└─ mobileContent a menu of your own, instead of items[]מה שרואים מ-1024px ומעלה. שם הפס עובר מפריסת הטלפון (המבורגר, גובה 64px) לפריסת הדסקטופ (הקישורים, 80px), וזו נקודת השבירה של הפריסה שלו (uk-navbar.css). חוץ ממנה יש רק אחת: הריווח של floating מהקצוות גדל ב-768. אפשר לשלב: למשל Topbar עם שקוף מעל hero, או סימון העמוד הנוכחי עם קו תחתון.
| אפשרות | מה זה | איך מגדירים | איפה לראות |
|---|---|---|---|
| רגיל | לוגו בצד, הקישורים, כפתור בצד השני. | (ברירת מחדל) | יוגה |
| Topbar | פס דק מעל הפס הראשי: טלפון, שעות, כתובת. נגלל ונעלם, הפס הראשי נשאר. | topbar: { start: [...], end: [...] } // ב-nav-config | אתר למרפאה |
| Glass | פס מטושטש ושקוף שנשאר על המסך, והעמוד רץ מאחוריו. --uk-sticky-top הוא 0, אז כל אפקט סטיקי תופס את כל גובה המסך.לגלילה ארוכה עם אפקטים (סקיל scroll-chain). הירו מתחתיו מרחיק את עצמו עם --uk-navbar-h. הגוון: --uk-navbar-glass-bg. | <UkNavbar glass scrollBehavior="fixed" /> | - |
| Floating | הפס כגלולה צפה, עם מרווח מהקצוות.לא עובד יחד עם topbar. | <UkNavbar floating /> | - |
| סימון העמוד הנוכחי | קו מתחת לפריט של העמוד, שזז בין העמודים. | <UkNavbar indicator="underline" /> | אתר לכנס מקצועי |
| Bottom border | קו של פיקסל בתחתית הפס, בצבע הטקסט שלו בשקיפות, אז הוא נראה גם מעל hero כהה. | <UkNavbar bottomBorder /> | אתר למאפרתאתר למורה לנגינה |
| שקוף מעל hero | הפס שקוף וטקסט בהיר מעל תמונה כהה, ומתמלא בגלילה. | data-navbar-transparent data-navbar-light // על עוטף העמוד | אתר לסוכנות דיגיטלאתר לסיורים מודרכיםועוד 18 |
| התנהגות בגלילה | fixed: צף מעל התוכן (דף בית עם hero). sticky: בתוך הזרימה ונדבק למעלה (עמוד פנימי). static: נגלל עם הדף. auto-hide: כמו fixed, ונעלם בגלילה למטה. | <UkNavbar scrollBehavior="sticky" /> | אתר לסוכנות דיגיטלאתר לכנס מקצועיועוד 5 |
| נעלם בגלילה (headroom) | נעלם בגלילה למטה וחוזר בגלילה הראשונה למעלה, על fixed או sticky. על sticky הוא ממשיך לשמור את הגובה שלו, אז עמוד פנימי לא צריך spacer. | <UkNavbar hideOnScroll /> | אתר לחדר כושראתר למעצבת פניםועוד 2 |
| רוחב | הקונטיינר בתוך הפס, כדי שהלוגו יישב על אותו קו עם התוכן של הדף: default (1200), small (900), large (1400), expand. | <UkNavbar containerSize="large" /> | אתר לסוכנות דיגיטלאתר למספרהועוד 15 |
| כפתור מצב כהה | שמש/ירח (UkDarkMode) ליד הכפתורים, בדסקטופ בלבד. דלוק כברירת מחדל.כל הדמואים והסטודיו מעבירים false: אתר בלי ערכת צבעים כהה לא צריך אותו. | <UkNavbar showDarkMode={false} /> | - |
מה שנפתח מכפתור ההמבורגר, מתחת ל-1024px. שתי החלטות נפרדות: איך התפריט נפתח (מגירה או מסך מלא), ואיך נפתח תפריט משנה בתוכו (במקום או כמסך חדש). במחשב רואים את זה בתצוגת מובייל: F12 ואז Ctrl+Shift+M.
| אפשרות | מה זה | איך מגדירים | איפה לראות |
|---|---|---|---|
| מגירה | התפריט נכנס מהצד ומשאיר פס מהעמוד מאחוריו. | <UkNavbar mobileMode="drawer" /> | אתר לסוכנות דיגיטלאתר לסיורים מודרכיםועוד 21 |
| המבורגר ליד הלוגו | כפתור התפריט לפני הלוגו, והחיפוש לבד בקצה השני, בתוך עיגול. כך החיפוש לא מסתיר את ההמבורגר. כמו Google Workspace.drawerSide הוא צד פיזי: באתר בעברית right, כדי שהמגירה תיכנס מהצד של הכפתור. | <UkNavbar hamburgerPosition="start" drawerSide="right" /> | אתר הסטודיו |
| מסך מלא | התפריט מכסה את כל המסך, הפס הראשי נשאר מעליו. | <UkNavbar mobileMode="overlay" /> // ברירת המחדל | קוסמטיקה |
| תפריט משנה נפתח במקום (accordion) | פריט עם תפריט משנה נפתח מתחתיו, והשאר זזים למטה. | mobile: 'accordion' // ב-nav-config, ברירת מחדל | רוב הדמואים |
| תפריט משנה כמסך חדש (drill-down) | פריט עם תפריט משנה מחליף את כל הרשימה בילדים שלו, עם "חזרה" למעלה. כמו הגדרות באייפון. | mobile: 'drill-down' // ב-nav-config | אתר לקוסמטיקאיתאתר לבית ספר לגלישה |
| תפריט משלך (div חופשי) | המעטפת נשארת של ה-navbar (פתיחה, סגירה, X, אנימציה), ובתוכה קומפוננטה שלך עם כל עיצוב שתרצה. היא מקבלת isOpen, ו-navTo(href) שעובר לעמוד וסוגר את התפריט.זה הפתח הכללי: ארסנל לא יכול להכיל כל עיצוב, אז כשהתפריט צריך משהו אחר, כותבים אותו כאן. שתי השורות הבאות הן דוגמאות שלו, לא סוגים נוספים. | mobileContent: MyMenu // ב-nav-config | אתר לסוכנות דיגיטלאתר לכנס מקצועיועוד 1 |
| דוגמה: מגירה עם אייקונים | שורות עם אייקון וחץ, העמוד הנוכחי מודגש, כרטיס ספח עם התאריך והכפתור. נכנס בהחלקה.mobileContent של הכנס (_components/ConfMobileMenu.tsx). | mobileMenu: 'drawer' // שורת הגרסה ב-variants.ts | אתר לכנס מקצועי |
| דוגמה: מסך מלא ממוספר | שורות גדולות וממוספרות שעולות עם קפיצה קטנה, כרטיס פרטים וכפתור בתחתית.mobileContent של הכנס (_components/ConfMobileMenu.tsx). | mobileMenu: 'overlay' // שורת הגרסה ב-variants.ts | אתר לכנס מקצועי |
- Topbar כשיש פרט שהגולש מחפש מיד: טלפון של מרפאה, שעות, תאריך של אירוע.
- שקוף מעל hero בדף בית שנפתח בתמונה כהה, עם
scrollBehavior="fixed". בעמודים הפנימייםsticky. - drill-down כשלתפריטי המשנה יש הרבה פריטים. עם שניים או שלושה, accordion מספיק.
- תפריט מעוצב משלך כשהתפריט במובייל הוא חלק מהמותג, או כשיש בו יותר מקישורים (תאריך, כפתור, תמונות).
- לוגו באמצע אין כאן: מצב ה-split הוסר מהקומפוננטה, כי לוגו במרכז דורש כיוון של הלשוניות לכל אתר. ניווט כזה נבנה custom.
הפס העליון של כל אתר: לוגו, פריטים עם dropdown או mega-menu, כפתורים ותפריט מובייל. קומפוננטה אחת לכל הדמואים ולסטודיו, וההגדרות של כל אתר ב-nav-config שלו. הוא יושב ב-layout (בדמו עם כמה דפי בית: ב-layout של הגרסה). לא בונים header ביד לאתר חדש.
למטה ה-navbar האמיתי, עם scrollBehavior="static" כדי שיישב בתוך הדף. מ-1024px מעבר על "דוקס" פותח mega-menu, ו-"Navbar" מסומן כי זה העמוד הזה. מתחת ל-1024px רואים את ההמבורגר, והוא פותח מגירה עם כפתור סגירה משלה.
<UkNavbar
config={navConfig}
scrollBehavior="static" // this box only; a site: "fixed" or "sticky"
startActive
mobileMode="drawer"
drawerSide="left" // physical: the hamburger's side in RTL
/>Props
configSiteNavConfigחובה- הלוגו, הפריטים, הכפתורים, ה-topbar ותפריט המובייל. הצורה ב-
config/uk-nav-config.ts, וכל דמו מחזיק את שלו ב-nav-config. scrollBehavior"fixed" | "sticky" | "static" | "auto-hide" | "overlay"ברירת מחדל "fixed"overlay: שקוף מעל ה-hero, נגלל עם הדף ולא חוזר, כשתת-ניווט דביק תופס את הראש (דף הבית של הסטודיו).fixed: צף מעל התוכן, לדף בית עם hero מאחוריו.sticky: בתוך הזרימה ונדבק למעלה, ושומר את הגובה שלו (עמוד פנימי, בלי spacer).static: בזרימה ונגלל עם הדף, כשמשהו אחר תופס את הראש (תפריט משנה של עמוד).auto-hide: כמו fixed, ונעלם בגלילה למטה.hideOnScrollbooleanברירת מחדל false- נעלם בגלילה למטה, חוזר בגלילה הראשונה למעלה. על fixed או על sticky; על sticky הגובה נשמר. כשהוא דלוק
--uk-sticky-topהוא 0, אז דברים שנדבקים לא מחכים לפס. startActivebooleanברירת מחדל false- מלא (המצב "נגלל") מהציור הראשון, ומוסיף את האטריבוט
dark_global_navbar. scrollThresholdnumberברירת מחדל 20- כמה פיקסלים של גלילה עד שהפס מתמלא וה-topbar יוצא.
inverseColorbooleanברירת מחדל false- טקסט לבן (
.isInverse) עד הגלילה. אף אתר לא מעביר אותו: הדרך החיה היאdata-navbar-lightעל עוטף הדף. mobileMode"overlay" | "drawer"ברירת מחדל "overlay"- איך נפתח התפריט מתחת ל-1024px: מסך מלא, או מגירה מהצד.
drawerSide"left" | "right"ברירת מחדל "left"- הצד שממנו נכנסת המגירה. צד פיזי, לא לוגי: אתר בעברית שרוצה מגירה מימין כותב
right. hamburgerPosition"end" | "start"ברירת מחדל "end"end: ההמבורגר בקצה, עם החיפוש ואייקוני ה-topbar.start: לפני הלוגו, והחיפוש לבד בקצה השני בתוך עיגול של 40px. להצמידdrawerSideמאותו צד (בעברית right).swipeToClosebooleanברירת מחדל true- גרירה סוגרת את המגירה (ב-drawer בלבד). לכבות כשבתפריט יש משהו שנגלל לצד.
glassbooleanברירת מחדל false- מטושטש ושקוף, העמוד רץ מאחוריו ו---uk-sticky-top הוא 0. עם scrollBehavior="fixed".
floatingbooleanברירת מחדל false- גלולה צפה, 12px מהקצוות (20px מ-768px). לא יחד עם topbar.
showDarkModebooleanברירת מחדל true- כפתור שמש/ירח (
UkDarkMode) ליד הכפתורים, בדסקטופ בלבד. כל הדמואים והסטודיו מעביריםfalse. containerSize"default" | "small" | "large" | "expand"ברירת מחדל "default"- הקונטיינר בתוך הפס: 1200, 900, 1400 או כל הרוחב. אותו רוחב כמו הסקשנים של הדף, אחרת הלוגו והתוכן יושבים על שני קווים.
indicator"underline"- כבוי כשלא מעבירים. קו בתחתית הפס מתחת לפריט של העמוד, שזז בין העמודים. צבע
--uk-nav-indicator-color(ברירת מחדל: צבע הטקסט), עובי--uk-nav-indicator-h(3px). bottomBorderbooleanברירת מחדל false- קו של פיקסל בתחתית הפס (inset box-shadow, הגובה לא זז), בצבע הטקסט ב-10%. צבע
--uk-navbar-bottom-border. לא על floating. בטלפון הוא גם מרחיק את פירורי הלחם ל-16px מתחתיו במקום 10. defaultClassstringברירת מחדל ""- מוגדר בממשק, אבל הקומפוננטה לא משתמשת בו: אין לו השפעה.
כללים
- נקודת השבירה היא 1024px: מתחתיה המבורגר וגובה 64px, ממנה הקישורים וגובה 80px (
--uk-navbar-h). כל ה-media queries של ה-navbar וה-lg:בקומפוננטה הם אותה נקודה, חוץ מהריווח של floating (md:, 768). containerSizeכמו הקונטיינר של הסקשנים בדף: אתר שבנוי עלuk-container-largeמעבירlarge.hideOnScrollו-auto-hideלא עובדים עםstartActive: פס שמלא מההתחלה לא מגיב לגלילה (חוץ מה-topbar).
איפה זה חי: הסטודיו (start, drawer מימין, bottomBorder), חדר כושר (hideOnScroll), הכנס (indicator), סוכנות (static), עורך דין (containerSize large).
שני סימונים, ושניהם בלי קוד בעמוד: aria-current="page", שה-navbar שם על הפריט שלו בדסקטופ, ו-class is-current, שסקריפט גלובלי שם על כל קישור באתר שמוביל לעמוד הזה (תפריט המובייל, הפוטר, תוכן). עמוד נוכחי בפוטר או בתפריט משלך מעצבים דרך .is-current, ולא מחשבים אותו בקומפוננטה.
הקישור הראשון מוביל לעמוד הזה, אז הסקריפט סימן אותו is-current, והוא בצבע המותג.
/* uk-navbar-colors.css: the navbar's own */
.uk-nav-item[aria-current="page"],
.uk-nav-item.is-current,
.uk-mobile-nav a.is-current:not(.uk-button) {
color: var(--uk-nav-text-accent, var(--primary));
opacity: 1;
}
/* any other scope: a footer, a sidebar */
.my-footer a.is-current { color: var(--primary); }- aria-current (UkNavbar.tsx, בדסקטופ): התאמת תחילית, אז
/servicesמסומן גם ב-/services/x. התאמה מדויקת כשלאח יש href שיושב מתחתיו (דף בית/demos/xליד/demos/x/about). פריט בלי href מסומן כשאחד מה-children שלו מתאים.indicator="underline"קורא את אותו סימון. - is-current (
update_active_links()ב-es-scripts/_init/active_link_marker.js, ש-uk_global_init מריץ בכל טעינה ובכל מעבר עמוד): עובר על כלa[href]במסמך. התאמה מדויקת של ה-pathname (סלאש בסוף לא משנה), אז קישור ל-/servicesלא מסומן ב-/services/x. מדלג על#,mailto:,tel:ודומיין אחר. - הצבע הוא
--uk-nav-text-accent: המותג על פס בהיר, צבע הטקסט של הפס מעל hero כהה (data-navbar-light), ובתפריט המובייל תמיד--primary. כפתור (uk-button) שומר על הצבעים שלו.
איפה זה חי: כל navbar, למשל הסטודיו, הקו של indicator: הכנס.
ה-navbar יושב ב-layout פעם אחת. דף שנפתח ב-hero כהה ורוצה navbar שקוף עם טקסט בהיר מוסיף שני אטריבוטים על העוטף שלו, וה-CSS עושה את השאר דרך :has(). בלי JS, בלי import ובלי !important. לדף בית עם תמונה כהה מאחורי פס fixed; עמוד פנימי עם sticky לא צריך אותם.
/* no override */// a page with a dark hero: two attributes on its wrapper
export default function HomePage() {
return (
<div data-navbar-transparent data-navbar-light>
<section>...dark hero...</section>
</div>
);
}
// an inner page (about, services, terms): nothing, the defaultdata-navbar-transparent: הרקע שקוף (--uk-nav-bg: transparent).data-navbar-light: הטקסט בהיר (--uk-nav-text: var(--uk-navbar-is_inverse-color, #ffffff)), וסימון העמוד הנוכחי בצבע הטקסט ולא במותג.- השניים בלתי תלויים: אפשר אחד מהם או את שניהם. בלי אף אחד, הניווט במצב הרגיל.
איך זה עובד
ב-app/globals.css שני משתנים, --uk-nav-bg ו---uk-nav-text, והניווט רק קורא אותם. שלושה מקורות דורסים אותם, והאחרון מנצח כי הוא יושב על הניווט עצמו. הלשוניות יורשות (color: inherit), אז שינוי של המשתנה מגיע לכולן בלי סלקטור לכל פריט.
/* 1. :root, the default */
:root { --uk-nav-bg: hsl(0 0% 100% / 0.15); --uk-nav-text: var(--foreground); }
/* 2. per page: the attributes on the wrapper */
body:has([data-navbar-transparent]) { --uk-nav-bg: transparent; }
body:has([data-navbar-light]) { --uk-nav-text: var(--uk-navbar-is_inverse-color, #ffffff); }
/* 3. scrolled: on the nav itself, so it wins */
[uk_navbar].isActive { --uk-nav-bg: var(--background); --uk-nav-text: var(--foreground); }
/* the navbar only reads */
[uk_navbar] { background-color: var(--uk-nav-bg); color: var(--uk-nav-text); }
[uk_navbar] .uk-nav-item, [uk_navbar] a { color: inherit; }איפה זה חי: Lumiere, דף הבית.
#mobile-content
תפריט מובייל משלך (mobileContent)
ברירת המחדל בטלפון היא רשימה שנבנית מפריטי הניווט. mobileContent ב-SiteNavConfig מחליף את הרשימה (ואת ה-CTA שלה) בקומפוננטה חופשית: div רגיל, מעוצב כמו כל סקשן. ההדר של התפריט (לוגו וסגירה) נשאר, ומגירה עם תוכן משלה מתרחבת ל-min(440px, 92vw) במקום min(380px, 86vw), כדי שייכנסו שתי עמודות. כשמספיקה רשימה, accordion או drill-down ב-nav-config.
אין כאן תצוגה חיה: התפריט נפתח רק מתחת ל-1024px. לראות אותו: האתר של הסטודיו בטלפון (או F12 ואז Ctrl+Shift+M), כפתור התפריט.
// config/studio-nav-config.tsx
export const studioNavConfig: SiteNavConfig = {
...,
mobileContent: StudioMobileMenu, // replaces the generated list
};
// components/studio/StudioMobileMenu.tsx
export default function StudioMobileMenu({ isOpen, navTo }: UkMobileContentProps) {
// navTo(href) closes the menu, then routes
return <div>...anything...</div>;
}
// the navbar: no swipe-to-close when the content scrolls sideways
<UkNavbar config={studioNavConfig} mobileMode="drawer" swipeToClose={false} />Props של הקומפוננטה שלך
isOpenboolean- התפריט פתוח. לאנימציית כניסה משלך.
navTo(href: string) => void- סוגר את התפריט ועובר לעמוד (באותו עמוד: גולל למעלה). href שמתחיל ב-
#גולל לאלמנט, מתחת לפס.
- בלי
<li>בתוכן: ה-CSS של התפריט מסתיר כל li עד אנימציית הכניסה של הרשימה, שלא רצה כאן. - ניווט דרך
navTo(href)ולא Link בלבד, כדי שהתפריט ייסגר. התפריט נפתח תמיד מלמעלה (הגלילה שלו מתאפסת בפתיחה). - config שמחזיק
mobileContentנבנה פעם אחת (ברמת המודול או ב-useMemo): פונקציה חדשה בכל render טוענת את התפריט מחדש.
איפה זה חי: הסטודיו, כנס AI (מגירה), כנס תיירות (מסך מלא), צלם, סוכנות.
המראה של אתרי Awwwards: בדסקטופ הבר הוא רק לוגו ועיגול המבורגר, ובלחיצה נפתח מסך מלא עם הקישורים בכותרות ענק, הדף הנוכחי בצבע המותג, ושורת רשתות למטה. יפה ולא שימושי: כל מעבר דף הוא שתי לחיצות, בשביל שלושה פריטים. אף פעם לא ברירת מחדל, רק כשלקוח מבקש. ואחד מהשניים: או הפריטים בבר, או התפריט מאחורי ההמבורגר, אף פעם לא שניהם.
<UkNavbar config={navConfig} menuOnDesktop scrollBehavior="sticky" />
// nav-config: the row at the foot of the menu (optional)
menuSocial: [
{ label: 'Instagram', href: '…' },
{ label: 'LinkedIn', href: '…' },
],ההמבורגר תקוע במקום, וזה כל הסוד
אין בתפריט כפתור סגירה משלו. הבר יושב מעל התפריט (z-index 50 מול 49), ולכן ההמבורגר נשאר גלוי, מסתובב ל-✕ (האנימציה הקיימת של הטלפון), והוא הסגירה. הוא לא זז מילימטר: כשהבר sticky הוא נדבק למעלה, וכשהבר static הדף לא נגלל בזמן שהתפריט פתוח (Lenis עוצר). בשני המקרים ה-✕ נמצא בדיוק איפה שלחצת. בלי מדידה, בלי כפתור שני, בלי מלחמת z-index בין הבר לתפריט.
- הבר נדבק אבל לא צובע רקע: מצב ה-active בגלילה לא משנה לו צבע, והוא עובר את העכבר לדף שמתחתיו (רק הלוגו והעיגול לחיצים). ולכן הוא לא מכסה כלום:
--uk-sticky-topהוא 0, ואפקטים דביקים מקבלים את כל גובה המסך. - העיגול:
--uk-burger-size(64px),--uk-burger-bg,--uk-burger-fg(הפסים), ו---uk-burger-inset(20px אוויר מעליו ומתחתיו, שלא נדחף על הדף). - מגנטי: נמשך קצת אל העכבר וחוזר, ב-
mouse_move_on_elementשל ה-kit, בלי קוד תנועה חדש.
סוגי פתיחה: שתי צורות, והדפדפן עושה את השאר
התפריט הוא שכבה על כל המסך, ו-clip-path קובע איזה חלק ממנה רואים. סגור הוא צורה שלא מראה כלום, פתוח הוא צורה שמראה הכל, ו-transition מנגן ביניהן. הדפדפן מחשב לבד כל צורה שבאמצע. המחיר כמעט אפס: מאפיין CSS אחד שזז, בלי JavaScript בכל פריים, והתוכן מתחת לא נוגעים בו. סוג הפתיחה הוא רק איזה זוג צורות שמים, שתי שורות ב-CSS של האתר:
/* in the site's CSS, ON the menu itself (so --cx / --cy resolve) */
.uk-awwwards-menu {
/* grow out of the hamburger: the theme of the animation home */
--uk-awwwards-menu-from: circle(0px at var(--cx) var(--cy));
--uk-awwwards-menu-to: circle(var(--cr) at var(--cx) var(--cy));
--uk-awwwards-menu-duration: 0.9s;
}
/* the default, nothing to write: a wipe down from the top */
--uk-awwwards-menu-from: inset(0 0 100% 0);
--uk-awwwards-menu-to: inset(0);
/* a slit that opens from the middle, like an eye */
--uk-awwwards-menu-from: inset(50% 0 50% 0);
--uk-awwwards-menu-to: inset(0);- הכלל היחיד: שתי הצורות מאותו סוג (inset עם inset, circle עם circle, ופוליגון עם אותו מספר נקודות). אחרת אין מעבר, רק קפיצה. תריסים, למשל, הם פוליגון אחד של שמונה פסים, מרוחב 0 לרוחב מלא.
- הרכיב מודד ומפרסם:
--cxו---cy(מרכז ההמבורגר),--cr(המרחק לפינה הרחוקה). עיגול גדול מזה מבזבז חצי מהזמן מחוץ למסך ונראה כמו יריה. - יש טריליון סוגי פתיחה, ואף אחד לא שימושי יותר מאחר, ורוב הפתיחה מוסתרת ממילא מאחורי המילים שעולות. לכן אתר בוחר ב-CSS, ושום prop לא נוסף ל-kit לכל סוג.
- שלוש שכבות שלא תלויות זו בזו: הפתיחה של המסך (clip-path), הכניסה של התוכן (כל מילה עולה ממסכה משלה, בתורה), והכפתור (spin ל-✕).
מעבר דף מהתפריט
לחיצה על קישור לדף אחר לא סוגרת את התפריט. הוא נשאר מעל הדף הישן עד שהחדש נטען, ואז נסגר: הסגירה שלו היא מעבר הדף. אם לדף החדש יש לאודר או מעבר משלו, הוא נכנס מעליו באותו צבע (גם התפריט וגם UkPageLoader הם --foreground כברירת מחדל), בלי קפיצה. מי שמשנה את --uk-awwwards-menu-bg משנה גם את --uk-page-loader-bg.
- העור:
--uk-awwwards-menu-bg,-fg,-accent(הדף הנוכחי והמעבר מעל מילה),-size(גודל המילים). - מעבר עכבר הוא לכל מילה: רק המילה שמתחת לעכבר מקבלת את צבע המותג, השאר נשארות כמו שהן.
- דסקטופ בלבד (1024 ומעלה). בטלפון התפריט הרגיל של UkNavbarMobile, מנגנון אחר.
איפה זה חי: סוכנות (ניגוב מלמעלה), סטודיו לאנימציה (עיגול מההמבורגר).
#hamburger
Hamburger
<Component />האייקון של כפתור התפריט: שלושה פסים שהופכים ל-X. ויזואלי בלבד (div), הכפתור סביבו הוא של מי שמשתמש בו. בתוך UkNavbar הוא כבר שם (UkNavbarHamburger, עם spin); לבד, לכפתור תפריט משלך (sidebar, פאנל).
import Hamburger from '@/components/uikit/uk-navbar/Hamburger/Hamburger'
<button type="button" aria-expanded={isOpen} aria-label="תפריט" onClick={toggle}>
<Hamburger isOpen={isOpen} variant="squeeze" />
</button>isOpenbooleanחובה- פתוח:
w--openעל העוטף, והפסים הופכים ל-X. variant"spin" | "squeeze" | "elastic" | "boring" | …ברירת מחדל "spin"- האנימציה. רק לארבעת אלה יש CSS (ראו הכללים).
classNamestringברירת מחדל ""- על ה-
.hamburgerהפנימי.
- רק לארבעה variants יש CSS: spin, squeeze ו-elastic מונפשים, boring קופץ ל-X בלי אנימציה. ה-type מונה 31 שמות, ול-27 האחרים אין CSS ב-
uk-hamburger.css: הם מציירים שלושה פסים שרק משנים צבע בפתיחה. - הצבע מהמשתנים, לא מ-className: סגור
--hamburger_close_color(currentColor, בהיר מעל hero כהה), פתוח--hamburger_open_color(--foreground, כי התפריט הפתוח בהיר). - הגודל:
--hamburger-widthו---hamburger-height(24px),--hamburger-bar-height(1px),--hamburger-bar-spacing(6px), ו---hamburger-spacingלריפוד (5px).
איפה זה חי: כל UkNavbar מתחת ל-1024px, למשל הסטודיו.
לאיזה תוכןכרטיס בתוך תפריט נפתח: שירות או קטגוריה עם תמונה, שם ומשפט
השאלהפריט בתפריט צריך תמונה ומשפט, ולא רק שם?
הכרטיס שיושב בתוך פאנל של mega-menu. בסיס אחד לכל הדמואים, כך ששינוי במקום אחד משנה את כולם. ברירת מחדל שורה (תמונה בצד, מלל לצידה, בעברית התמונה מימין). דרך class אפשר להפוך ל-סטאק (תמונה מעל), כולל רספונסיבי.
hrefimgimgAltimgBasisimgRatioclassNameLayout: הפרופ layout
row שורה (ברירת מחדל) ·stack סטאק תמיד ·stack-md סטאק מ-768px ומעלה, שורה מתחת ·overlay-md הכותרת על התמונה מ-768px ומעלה; במגירה של הטלפון תמונה עגולה קטנה ליד שתי שורות. המבנה קבוע; דמו משנה רק את העור, בטוקנים --mmc-* (הרשימה בראש הקומפוננטה).
ברירת מחדל: row
כותרת הכרטיס
stack: תמיד תמונה מעל
כותרת הכרטיס
stack-md: הקטן/הגדל את החלון: מתחת ל-768px שורה, מעל סטאק.
components/uikit/uk-navbar/UkNavbar.tsxהקומפוננטה והממשק שלה (UkNavbarProps). לרוב ה-props יש הערה ליד ההגדרה; הטבלה בבלוק UkNavbar היא הרשימה המלאה.
components/uikit/uk-navbar/uk-navbar.cssנקודת השבירה (1024px), --uk-navbar-h, המגירה, הקו התחתון וה-indicator.
components/uikit/uk-navbar/uk-navbar-colors.cssצבע העמוד הנוכחי, צבעי ההמבורגר, וה-floating.
config/uk-nav-config.tsהצורה של nav-config: items, actions, topbar, mobile, mobileContent.
app/demos/<demo>/nav-config.tsההגדרות של כל דמו. כאן בוחרים topbar, accordion או drill-down, ותפריט משלך.
components/uikit/UkMegaMenuCard/UkMegaMenuCard.tsxהכרטיס בתוך פאנל של mega-menu, וה-classes של הפריסה שלו (uk-mmc-*) ב-styles/uk-components.css.
es-scripts/_init/active_link_marker.jsה-class is-current על כל קישור לעמוד הנוכחי, בכל מעבר עמוד.
.claude/skills/uikit-navbar/SKILL.mdההסבר המלא לכלי AI: פאנלים, שקיפות לפי עמוד, נגישות, אנימציות.
