איך יוצרים header ב-HTML
עטפו את החלק העליון של העמוד (לוגו, שם האתר, תפריט ראשי) באלמנט <header>. זו תיבת בלוק בלי מראה ברירת מחדל, כך שכמה שורות CSS הופכות אותה לפס:
margin-inline-end: auto על הלוגו דוחף את התפריט ואת הכפתור לקצה השני של הפס. הסירו את האלמנט <style> ועדיין יהיה לכם header: התגית היא מה שהופך אותו ל-header, לא הרקע הכהה.
header מול head מול h1
שלושה שמות שנשמעים דומים ועושים עבודות שונות:
| אלמנט | איפה | גלוי | כמה |
|---|---|---|---|
<head> | ישירות בתוך <html>, לפני <body> | לא: מכיל <title>, <meta>, <link> | בדיוק אחד |
<header> | בתוך <body> | כן: תוכן פתיחה של עמוד או קטע | כל מספר |
<h1> עד <h6> | בכל מקום ב-<body> | כן: כותרת | כל מספר |
ה-<head> שלמטה קובע את כותרת העמוד שהדפדפן מציג בלשונית. כל מה שאפשר לראות בתצוגה המקדימה מגיע מ-<body>:
header מכיל לעיתים קרובות כותרת, אבל הוא לא חייב, וכותרת לא צריכה header סביבה.
header בתוך מאמרים
<header> פותח את המאמר או הקטע הקרוב ביותר אליו, לא רק את העמוד. רשימת פוסטים בבלוג שבה לכל פוסט יש header משלו היא תקינה ונפוצה:
עבור קוראי מסך, רק ה-header ברמת העמוד (כזה שלא נמצא בתוך article, aside, main, nav או section) הופך ל-landmark מסוג banner. ה-header של המאמרים הם קבוצות רגילות, כך שלא יוצא שיש כמה banners.
header דביק
position: sticky משאיר את ה-header למעלה בזמן שהתוכן מתחתיו נגלל. גללו בתוך התיבה שלמטה:
שלושה פרטים גורמים לזה לעבוד: top: 0 (sticky לא עושה כלום בלי היסט), צבע רקע (אחרת השורות נראות דרכו), ו-z-index כדי שתוכן ממוקם לא יצויר מעליו. בעמוד אמיתי תיבת הגלילה היא העמוד עצמו, ולכן ה-header יושב ישירות ב-<body>.
גם header עם position: fixed נשאר במקום, אבל הוא יוצא מזרימת העמוד, כך שהתוכן מחליק מתחתיו וצריך ריפוד למעלה. sticky שומר על המקום שלו בפריסה.
מה יכול להיכנס ל-header
header יכול להכיל כמעט כל תוכן: כותרות, תמונת לוגו, <nav>, טופס חיפוש, כפתור. הוא לא יכול להכיל <header> נוסף או <footer>, והוא לא יכול לשבת בתוך <footer>, <address> או <header> אחר.
<header>
<a href="/"><img src="logo.svg" alt="Acme home"></a>
<nav aria-label="Main">...</nav>
<form role="search">...</form>
</header>
כשהלוגו הוא קישור לעמוד הבית, טקסט ה-alt שלו צריך לומר לאן הקישור מוביל ("Acme home"), כי זה מה שקורא מסך מכריז.
טעויות נפוצות
- בלבול בין
<header>ל-<head>. מטא דאטה נכנס ל-<head>; תוכן גלוי אף פעם לא. - שימוש ב-
<header>לכל כותרת. כותרת לבדה לא צריכה עטיפת header. השתמשו ב-<header>כשיש קבוצה של תוכן פתיחה. - header דביק בלי רקע. טקסט העמוד נגלל ונראה דרכו. הגדירו
background. - sticky שלא נדבק. אב קדמון עם
overflow: hiddenאוoverflow: autoהופך לתיבת הגלילה של sticky, כך שה-header נדבק בתוך התיבה הזו (או בכלל לא). בדקו את האבות הקדמונים. - שימת תפריט האתר ב-
<div>בתוך ה-header. השתמשו ב-<nav>כדי שמשתמשי קוראי מסך יוכלו לקפוץ אליו.
שאלות נפוצות
מה זו התגית header ב-HTML?
<header> הוא אלמנט סמנטי לתוכן פתיחה: לוגו ותפריט של האתר בראש העמוד, או הכותרת ושם הכותב בראש מאמר. הוא תיבת בלוק רגילה בלי עיצוב ברירת מחדל.
מה ההבדל בין head ל-header ב-HTML?
<head> הוא החלק הבלתי נראה של המסמך עם ה-<title>, תגיות ה-<meta> והקישורים לגיליונות סגנון, ויש בדיוק אחד כזה. <header> הוא תוכן גלוי בתוך <body>, ובעמוד יכולים להיות כמה.
יכול להיות בעמוד יותר מאלמנט header אחד?
כן. לעמוד יש בדרך כלל header אחד של האתר, ולכל <article> או <section> יכול להיות <header> משלו לכותרת ולמידע הנלווה. רק header שלא נמצא בתוך article, aside, main, nav או section נחשב ל-banner של העמוד עבור קוראי מסך.
האם ה-nav צריך להיות בתוך ה-header?
הוא יכול, ולעיתים קרובות הוא נמצא שם כשהתפריט הראשי יושב בראש העמוד. גם שימת <nav> מחוץ ל-<header> תקינה; בחרו מה שמתאים לפריסה שלכם.
איך גורמים ל-header להישאר למעלה בזמן גלילה?
תנו לו position: sticky; top: 0; ועוד צבע רקע ו-z-index, כך שהתוכן נגלל מתחתיו. sticky עובד רק כל עוד ההורה של ה-header גבוה יותר מה-header, ואב קדמון עם overflow: hidden מונע ממנו להידבק לעמוד.