كيف تنشئ ترويسة في HTML
أحط أعلى صفحتك (الشعار، اسم الموقع، القائمة الرئيسية) بعنصر <header>. هو صندوق كتلي بلا مظهر افتراضي، فتحوّله بضعة أسطر CSS إلى شريط:
margin-inline-end: auto على الشعار تدفع القائمة والزر إلى الطرف الآخر من الشريط. احذف العنصر <style> وتبقى لديك ترويسة: فالوسم هو ما يجعلها ترويسة، لا الخلفية الداكنة.
الفرق بين header وhead وh1
ثلاثة أسماء متشابهة في النطق وتؤدي وظائف مختلفة:
| العنصر | أين | ظاهر | العدد |
|---|---|---|---|
<head> | مباشرة داخل <html>، قبل <body> | لا: يحتوي على <title> و<meta> و<link> | واحد بالضبط |
<header> | داخل <body> | نعم: المحتوى التمهيدي للصفحة أو القسم | أي عدد |
<h1> إلى <h6> | في أي مكان داخل <body> | نعم: عنوان | أي عدد |
العنصر <head> أدناه يحدد عنوان الصفحة الذي يعرضه المتصفح في تبويبه. وكل ما تراه في المعاينة يأتي من <body>:
الترويسة تحتوي غالبًا على عنوان، لكن ذلك ليس إلزاميًا، والعنوان لا يحتاج إلى ترويسة حوله.
الترويسات داخل المقالات
<header> يقدّم أقرب مقال أو قسم إليه، لا الصفحة وحدها. قائمة تدوينات لكل منها ترويستها الخاصة صالحة وشائعة:
بالنسبة لقارئات الشاشة، وحدها الترويسة على مستوى الصفحة (غير الموجودة داخل article أو aside أو main أو nav أو section) تصبح معلم banner. ترويسات المقالات مجموعات عادية، فلا ينتهي بك الأمر بعدة معالم banner.
الترويسة الثابتة (Sticky)
position: sticky تُبقي الترويسة في الأعلى بينما يتمرر المحتوى تحتها. مرّر داخل الصندوق أدناه:
ثلاثة تفاصيل تجعلها تعمل: top: 0 (لا يفعل sticky شيئًا من دون إزاحة)، ولون خلفية (وإلا ظهرت الصفوف من خلالها)، وz-index كي لا يُرسم المحتوى المموضع فوقها. في صفحة حقيقية يكون صندوق التمرير هو الصفحة نفسها، فتوضع الترويسة مباشرة في <body>.
الترويسة التي تحمل position: fixed تبقى في مكانها أيضًا، لكنها تخرج من تدفق الصفحة، فينزلق المحتوى تحتها ويحتاج إلى حشو في الأعلى. أما sticky فتحتفظ بمساحتها في التخطيط.
ما الذي يوضع في الترويسة
يمكن أن تحتوي الترويسة على أي محتوى تقريبًا: عناوين، صورة شعار، <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>حين توجد مجموعة من المحتوى التمهيدي. - ترويسة ثابتة بلا خلفية. يظهر نص الصفحة وهو يتمرر من خلالها. اضبط
background. - ترويسة sticky لا تلتصق. الجد الذي يحمل
overflow: hiddenأوoverflow: autoيصبح صندوق التمرير لـ sticky، فتلتصق الترويسة داخل ذلك الصندوق (أو لا تلتصق أبدًا). افحص العناصر الأجداد. - وضع قائمة الموقع في
<div>داخل الترويسة. استخدم<nav>كي يستطيع مستخدمو قارئات الشاشة القفز إليها.
الأسئلة الشائعة
ما هو وسم header في HTML؟
<header> عنصر دلالي للمحتوى التمهيدي: شعار الموقع وقائمته أعلى الصفحة، أو العنوان واسم الكاتب أعلى المقال. هو صندوق كتلي عادي بلا تنسيق افتراضي.
ما الفرق بين head وheader في HTML؟
<head> هو الجزء غير المرئي من المستند الذي يحتوي على <title> ووسوم <meta> وروابط ملفات التنسيق، ويوجد منه واحد بالضبط. أما <header> فمحتوى ظاهر داخل <body>، ويمكن أن يكون في الصفحة عدة منه.
هل يمكن أن يكون في الصفحة أكثر من عنصر header؟
نعم. عادةً يكون للصفحة ترويسة موقع واحدة، ويمكن لكل <article> أو <section> أن يملك <header> خاصًا لعنوانه ومعلوماته. وحدها الترويسة غير الموجودة داخل article أو aside أو main أو nav أو section تُعد شريط الصفحة (banner) لقارئات الشاشة.
هل يوضع nav داخل header؟
يمكن ذلك، وغالبًا ما يحدث حين تكون القائمة الرئيسية أعلى الصفحة. ووضع <nav> خارج <header> صالح أيضًا، فاختر ما يناسب تخطيطك.
كيف أجعل الترويسة تبقى في الأعلى عند التمرير؟
أعطها position: sticky; top: 0; مع لون خلفية وz-index، كي يتمرر المحتوى تحتها. لا يعمل sticky إلا ما دام أب الترويسة أطول منها، والجد الذي يحمل overflow: hidden يمنعها من الالتصاق بالصفحة.