Please don't forget to read Usage part of each element.
Header
Container attached to the top of a page helping user navigate through a hierarchy of content.
Overview
Header is a consistently available user interface element that contains global actions and navigation providing users access to key sections and functionalities within the website.It contains global actions and navigation elements, ensuring seamless navigation and interaction throughout the platform.
The header's layout is adjusted for mobile and desktop devices to match their unique usability needs, ensuring users can navigate easily on their chosen device.
Types
There are different types of header depending on its environment.
Default
This is the regular header on Proximus website.
MyProximus
This header is on the MyProximus web pages, once user is logged in.
-
CBU (Private individuals, self-employed and medium enterprises)
-
EBU (Large companies)
Negative
For some cases like Pickx TV pages, negative version is available:
Anatomy
-
Top navigation
Contains segments and language switches, facilitating easy access to different segments of the website and language preferences. -
Main Navigation
Contains primary navigational elements, guiding users to important sections of the website. -
Logo area
Space of brand logos for visibility and recognition within the header. Logo is clickable and, by default, an entry point to the Homepage. -
Right navigation
Featuring quick actions and direct links, the right navigation offers convenient access to frequently used features and important destinations. -
Tabs
Serve as the primary level of navigation, guiding users through various pages or categories of the website.
Behaviors
Hambuger menu
On mobile, the majority of navigation functionalities are accessible through the hamburger menu.
-
Top navigation
Allows users to navigate through different levels of the menu and to close the menu. -
Menu title
Indicates the type of menu being accessed. -
Navigation level 1
First level of navigation, which goes further on the menu. -
Navigation level 2
Second level of navigation leading users directly to specific pages. -
Direct navigation
Offers quick actions and direct links for immediate access to relevant content or features. -
Category title
Provides context for the category of links within the menu. -
Bottom navigation
Sticky area featuring segments and a language switch for convenient access and navigation.
Mega Dropdown
The mega dropdown feature enhances navigation efficiency on desktop devices, offering users access to the second level of navigation by clicking on the navigation tab.
Default
-
MDD navigation area
Divided until 6 blocks (3 per line maximum), including a block dedicated to existing customers containing entry points for high-visited pages or user needs. -
Category title
Provides context for the category of links, helping users understand the content within. -
Navigation level 2
Direct access to secondary navigation options, allowing users to navigate to specific pages efficiently. -
Direct navigation
Offers quick actions and direct links for immediate access to relevant content or features. -
Close
Allows users to close the Mega Dropdown by clicking on this button, the associated tab, or anywhere else outside the dropdown area.
With subnav
Developped for MyEnterprise (EBU) navigation, this MDD provides an additional level of navigation for complex structures.
-
Sub navigation area
Side nav contains the sub level of navigation. -
Sub navigation
Considered as level 2 of navigation, it allows users to navigate deeper to specific categories. There is always one sub nav selected by default. -
Navigation level 3
Offers direct access to third navigation options, allowing users to navigate to specific pages efficiently. -
Close
Allows users to close the Mega Dropdown by clicking on this button, the associated tab, or anywhere else outside the dropdown area.
Segments and language switch
The segment and language menus open upon clicking, enabling users to switch between different business units or language seamlessly.
Segment switch
Language switch
MyProximus button
The MyProximus button serves as a pivotal element within the header component, offering distinct states to accommodate various user interactions:
-
Logged Off
This is the default state of the button, visible when the user is either not logged in or does not possess an active account. -
Logged In
When user is successfully logged into their account, the MyProximus button dynamically displays their initials, providing visual confirmation of their logged-in status. -
Active
When user is logged-in, the button transforms into an active state upon clicking, providing direct access to the MyProximus menu for easier navigation.
Shopping basket
When an item is added to the shopping basket, an icon with a notification dot appears on the header. Clicking on this icon opens the basket menu, which provides a summary of the items added to the cart.
Company selector (EBU)
To select the appropriate company on MyProximus EBU, a dropdown menu appears containing all available companies for selection.
Sizes and colors
To choose the version of the header, you have to change the parameter
You can add class to body
with
Default, regular header on Proximus website
Unidentified user
With Mega Dropdown (MDD)
Simple navigation
Negative like Pickx TV pages
MyProximus, once user is logged in
CBU (Private individuals, self-employed and medium enterprises)
Negative
EBU (Large companies) with SubNavigation
Negative
Extended layout
No login button
One login
Co-branding
With logo
Written name
Branded component
Scarlet website
White label theme
Skip main content
Just before header tag, there is a "Skip to main content" link visible in focus. This must be translate to current page language.
Hamburger menu
If language selector visible on mobile (outside burger), don't add burger menu ( .rs-burger
) and burger title ( .rs-mobile-nav-tit
) HTML to the page.
On burger button
tag, aria-controls
value must be the id
of header
tag.
Javascript of header manage for you the value of aria-expanded
attribute. By default, you need to set it to "false".
If you want to close MDD and hamburger menu at the same time, use
Navigation (1 level)
Add aria-current="page"
attribute on highlight level 1 button
when the displayed page is the pointed page.
If current page is a subpage, you can highlight level 1 by adding this class rs-nav-current
to the button
tag.
data-text="copy"
on button
value must be the same value as visible copy (CSS need this attribute to avoid visual bug on hover).
Mega Dropdown (2 levels) (MDD)
Each button is linked to its own panel div.rs-mdd :
- button.rs-nav-item[aria-controls] need same value as for div.rs-mdd[id]
- div.rs-mdd[aria-labelledby] need same value as for button.rs-nav-item[id]
If you want to close MDD and hamburger menu at the same time, use
Header MDD got dispatch event that you can trigger:
-
Open:
NAV.addEventListener('header24.mdd.open', FUNCTION);
Your FUNCTION will be triggered when MDD inside NAV is opened. -
Close:
NAV.addEventListener('header24.mdd.close', FUNCTION);
Your FUNCTION will be triggered when MDD inside NAV is closed.
Inside your FUNCTION,
NAV refers to html element nav[data-mdd] .
FUNCTION refers to function of your choice.
div.rs-nav-list[aria-label] is navigation purpose. This must be translate to current page language.
Add aria-current="page"
attribute on highlight level 1 button
when the displayed page is the pointed page.
If current page is a subpage, you can highlight level 1 by adding this class rs-nav-current
to the button
tag.
Add tabindex="-1"
on other button
level 1. Attention: always one mdd button must be without this attribute.
data-text="copy"
on button
value must be the same value as visible copy (CSS need this attribute to avoid visual bug on hover).
Don't forget to add one <div class="rs-mdd-backdrop"></div> after all contents.
Panel
All panel need attribute tabindex="0"
. Never change this value to another.
Copy "Back" must be translate to current page language:
- EN: Back to menu
- FR: Retour au menu
- NL: Terug naar menu
- DE: Zurück zum Menü
title
value and copy "Close" must be translate to current page language:
- EN: Close
- FR: Fermer
- NL: Sluit
- DE: Schließen
Content is divided into 3 zones/columns. Each zone div.rs-mdd-zone can contain as many topics as you want.
Topics
p.rs-mdd-topic-title[id] and ul.rs-mdd-topic-list[aria-labelledby] values must be the same.
For links with target="_blank" please follow this documentation.
MDD panel contains topics. Each topic is composed of a title/list description, a list of links, a spotlight button (toaster for example) and/or a spotlight link.
Dynamic content
Loading state
Remove rs-mdd-content
class from div
content.
aria-busy
must be set to "true" and aria-label
must be filed.
Content div
doesn't have class rs-mdd-content
(remove it). It have all those attributes role="alert" aria-live="polite" aria-busy="true" aria-label="Please wait... Your content is loading"
.
For spinner please follow this documentation.
Loaded state
Add rs-mdd-content
class to div
content.
aria-busy
must be set to "false" and aria-label
must be empty.
Replace div.rs-spinner by the MDD content (zones and topics or error message).
After content is loaded, you have to use this javascript function:
CONTEXT refers to document or html element parent.
Content div
have class rs-mdd-content
(put it back). It have all those attributes role="alert" aria-live="polite" aria-label="" aria-busy="false"
. Keep aria-label=""
empty.
For spinner please follow this documentation.
Error state
Add rs-mdd-content
class to div
content.
aria-busy
must be set to "false" and aria-label
must be empty.
Replace div.rs-spinner by the MDD content (zones and topics or error message).
After content is loaded, you have to use this javascript function:
CONTEXT refers to document or html element parent.
Content div
have class rs-mdd-content
(put it back). It have all those attributes role="alert" aria-live="polite" aria-label="" aria-busy="false"
. Keep aria-label=""
empty.
For spinner please follow this documentation.
For empty state HTML please follow this documentation.
Subnavigation (level 3) (inside MDD)
Each button is linked to its own panel div.rs-subnav-mdd :
- button.rs-subnav-item[aria-controls] need same value as for div.rs-subnav-mdd[id]
- div.rs-subnav-mdd[aria-labelledby] need same value as for button.rs-subnav-item[id]
div.rs-subnav-list[aria-label] is navigation purpose. This must be translate to current page language.
Add tabindex="-1"
on other button
level 1. Attention: always one subnav button must be without this attribute.
All panel need attribute tabindex="0"
. Never change this value to another.
Copy "Back" must be translate to current page language:
- EN: Back to menu
- FR: Retour au menu
- NL: Terug naar menu
- DE: Zurück zum Menü
This HTML replace any content of default MDD to add a third level navigation.
Topics
For links with target="_blank" please follow this documentation.
ul.rs-subnav-topic
got by default rs-subnav-8topics
class. You can replace it by one of this list depend of your need:
-
rs-subnav-6topics
-
rs-subnav-8topics
-
rs-subnav-10topics
6, 8, 10 correspond to maximum items inside list.
No access message
For message box please follow this documentation.
Topics list could be replace by a message box.
Language switch
If language selector visible on mobile (outside burger), don't add burger menu ( .rs-burger
) and burger title ( .rs-mobile-nav-tit
) HTML to the page.
- button[aria-controls] need same value as for linked ul[id] tag.
- ul[aria-labelledby] need same value as for linked button[id] tag.
Javascript of header manage for you the value of aria-expanded
attribute. By default, you need to set it to "false".
On mobile view, language selector could be inside or outside the hamburger menu. Choose the right class to put on div.rs-lang tag to get the desired result:
-
rs-burger-outside
: on mobile view, we directly see this element -
rs-burger-inside
: on mobile view, element is inside burger menu
Don't put rs-burger-outside
and rs-burger-inside
together.
Attributes lang
and hreflang
are abbrevation (lowercase).
span.rs-lang-content copy is abbrevation (uppercase).
Attributes aria-label
and title
copies are full language name, no translation : for exemple "Français" stay like this for all language.
button[aria-label] is followed by ": Select a language" copy, this must be translate to current page language:
- EN: Select a language
- FR: Sélectionner une langue
- NL: Selecteer een taal
- DE: Wählen Sie eine Sprache
Segment switch
- button[aria-controls] need same value as for linked ul[id] tag.
- ul[aria-labelledby] need same value as for linked button[id] tag.
Javascript of header manage for you the value of aria-expanded
attribute. By default, you need to set it to "false".
button[aria-label] is followed by ": Select a segment" copy, this must be translate to current page language:
- EN: Select a segment
- FR: Sélectionner un segment
- NL: Selecteer een segment
- DE: Wählen Sie ein Segment
MyProximus button
title
value and copy "Close" must be translate to current page language:
- EN: Close
- FR: Fermer
- NL: Sluit
- DE: Schließen
- button[aria-controls] need same value as for linked div[id] tag.
- div[aria-labelledby] need same value as for linked button[id] tag.
Javascript of header manage for you the value of aria-expanded
attribute. By default, you need to set it to "false".
Attributes aria-label
and title
copies are description with full name of user.
Quick links (Icons Area)
On mobile view, each quick link could be inside or outside the hamburger menu. Choose the right class to put on li tag to get the desired result:
-
rs-burger-outside
: on mobile view, we directly see this element -
rs-burger-inside
: on mobile view, element is inside burger menu
Don't put rs-burger-outside
and rs-burger-inside
together.
Search icon
button[aria-controls] need same value as for linked div[id] tag.
Javascript of header manage for you the value of aria-expanded
attribute. By default, you need to set it to "false".
Search pop-up is after the header html.
Shopping basket
title
value and copy "Close" must be translate to current page language:
- EN: Close
- FR: Fermer
- NL: Sluit
- DE: Schließen
- button[aria-controls] need same value as for linked div[id] tag.
- div[aria-labelledby] need same value as for linked button[id] tag.
Javascript of header manage for you the value of aria-expanded
attribute. By default, you need to set it to "false".
Subaccount selector
Or Compagny selector or Role selector or Customer selector or Whatever name...
- button[aria-controls] need same value as for linked div[id] tag.
- div[aria-labelledby] need same value as for linked button[id] tag.
Javascript of header manage for you the value of aria-expanded
attribute. By default, you need to set it to "false".
JavaScript
Here are files needed for the header:
- header2024.min.js : Basics, focustrap, expandable and burger
- header2024MDD.min.js : To add if MDD needed
- header2024TLC.min.js : To add if TLC needed
- header2024external.min.js : all in one file with basics, focustrap, expandable, burger and MDD
If you add header html to the page after page loaded, you have to use this JS function
If you want to close MDD and hamburger menu at the same time, use
CONTEXT refers to document or html element parent.
Hamburger menu
If language selector visible on mobile (outside burger), don't add burger menu ( .rs-burger
) and burger title ( .rs-mobile-nav-tit
) HTML to the page.
On burger button
tag, aria-controls
value must be the id
of header
tag.
Javascript of header manage for you the value of aria-expanded
attribute. By default, you need to set it to "false".
If you want to close MDD and hamburger menu at the same time, use
Mega Dropdown (2 levels) (MDD)
Each button is linked to its own panel div.rs-mdd :
- button.rs-nav-item[aria-controls] need same value as for div.rs-mdd[id]
- div.rs-mdd[aria-labelledby] need same value as for button.rs-nav-item[id]
If you want to close MDD and hamburger menu at the same time, use
Header MDD got dispatch event that you can trigger:
-
Open:
NAV.addEventListener('header24.mdd.open', FUNCTION);
Your FUNCTION will be triggered when MDD inside NAV is opened. -
Close:
NAV.addEventListener('header24.mdd.close', FUNCTION);
Your FUNCTION will be triggered when MDD inside NAV is closed.
Inside your FUNCTION,
NAV refers to html element nav[data-mdd] .
FUNCTION refers to function of your choice.
Loading state
Remove rs-mdd-content
class from div
content.
aria-busy
must be set to "true" and aria-label
must be filed.
Loaded state
Add rs-mdd-content
class to div
content.
aria-busy
must be set to "false" and aria-label
must be empty.
Replace div.rs-spinner by the MDD content (zones and topics or error message).
After content is loaded, you have to use this javascript function:
CONTEXT refers to document or html element parent.
Subnavigation (level 3) (inside MDD)
Each button is linked to its own panel div.rs-subnav-mdd :
- button.rs-subnav-item[aria-controls] need same value as for div.rs-subnav-mdd[id]
- div.rs-subnav-mdd[aria-labelledby] need same value as for button.rs-subnav-item[id]
Language switch and Segment switch
- button[aria-controls] need same value as for linked ul[id] tag.
- ul[aria-labelledby] need same value as for linked button[id] tag.
Javascript of header manage for you the value of aria-expanded
attribute. By default, you need to set it to "false".
MyProximus button, Shopping basket and Subaccount selector
- button[aria-controls] need same value as for linked div[id] tag.
- div[aria-labelledby] need same value as for linked button[id] tag.
Javascript of header manage for you the value of aria-expanded
attribute. By default, you need to set it to "false".
Deprecated
The element below are not usefull anymore and should no longer be used.
This element will no longer be available from the expiry date meaning the related css will be removed and the element design will be broken if it's not adapted to the new html.
Old header with rs-header2020-wrapper
around are deprecated. All the HTML inside must be replace by the new one. To find all, look for rs-header2020
class.