Header (Element)
The Header component provides functionality for sticky behavior, hide-on-scroll effects, and accessibility features like skip links. It is configured primarily through data attributes on the header element.
Example HTML of the header:
The .header-wrapper is to be treated like an invisible container not meant for styling but for functionality. Styling should be delegated to the .header when needed.
<!-- Invisible container used for behavior and interaction -->
<header class="header-wrapper"
data-sticky-header="true"
data-hide-on-scroll="true"
data-hide-at="200"
data-show-on-scroll-up="true"
data-skip-link="true">
<!-- Your actual header for content and styling -->
<div class="header">
<!-- Header Content -->
</div>
</header>Data Attributes Configuration
data-sticky-header
boolean
false
When set to "true", enables the sticky header logic, including scroll-based class toggling.
data-hide-on-scroll
boolean
false
When set to "true", allows the header to be hidden on the user scrolling down the page.
data-show-on-scroll-up
boolean
false
If "true", the header will hide when scrolling down and reappear as soon as the user scrolls up. If "false", the header stays hidden once past the threshold. This requires: data-hide-on-scroll="true"
data-hide-at
number
200px
The pixel threshold (scroll distance from top) before the hiding logic is activated. This requires: data-hide-on-scroll="true"
data-overlay-header
boolean
false
If "true", the header will sit on top of the hero on every page. if data-sticky-header="true" as well it will sit on top of the hero and stick with the users scroll.
data-overlay-header-offset
boolean
false
If "true", the hero section will make the exact space necessary so that header doesnt overlap the content within the hero. This requires: data-overlay-header="true"
data-skip-link
boolean
false
When set to "true", automatically injects an accessible "Skip to main content" link at the start of the header targeting the <main> element.
Behavioral Details
CSS Variables
The script automatically calculates the header height and sets a global CSS variable:
--header-height: Updated on load, resize, and content changes usingResizeObserver.This allows you to use this variable site wide and integrates with ACSS without needing to manually enter these values.
Sticky Header (hide on scroll) Class States
The component toggles the following classes on the .header-wrapper element when the header is using data-sticky-header and data-hide-on-scroll:
.scrolling: Added when the window is scrolled more than 0px from the top. Use this for adding shadows or reducing padding on scroll..hide: Added when the scroll logic determines the header should be hidden.
Hide Logic Modes
Static Hide (default):
Requires:
data-hide-on-scroll="true"anddata-hide-at="[threshold]".Behavior: Header hides once you scroll past the threshold and stays hidden.
Responsive Hide (Scroll Up):
Requires:
data-hide-on-scroll="true",data-hide-at="[threshold]", anddata-show-on-scroll-up="true".Behavior: Header hides past the threshold when scrolling down. It immediately reappears when the user scrolls back up (with a 5px tolerance).
Skip Link
If data-skip-link="true" is set:
An
<a>tag with class.skip-linkis prepended to the header.The first
<main>element on the page is automatically givenid="main"if it doesn't have one.
Last updated