Headroom.js implementation in Angular

Usage no npm install needed!

<script type="module">
  import ctrlNgxHeadroom from 'https://cdn.skypack.dev/@ctrl/ngx-headroom';



npm circleci codecov

DEMO: https://ngx-headroom.netlify.com/

An Angular Component to hide/show your header on scroll. A port of of React Headroom by KyleAMathews which was based around headroom.js

Fixed headers are nice for persistent navigation but they can also get in the way by taking up valuable vertical screen space. Using this component lets you have your persistent navigation while preserving screen space when the navigation is not needed.


Latest version available for each version of Angular

ngx-headroom Angular
2.3.2 6.x 7.x
3.0.3 8.x 9.x
4.0.0 10.x 11.x
current >= 12.x


npm install @ctrl/ngx-headroom

Using Angular Headroom

Import the module. Requires @angular/animations

// requires BrowserAnimationsModule
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
// import HeadroomModule
import { HeadroomModule } from '@ctrl/ngx-headroom';

Use the module

  <h1>You can put anything you'd like inside the Headroom Component</h1>

Overriding animation

The component is intended to be plug 'n play meaning it has sensible defaults for animating the header in and out. If you'd like to override the default animation.

Override animation defaults by passing your own values

<ngx-headroom duration="500" easing="ease-in-out">
  <h1>You can put anything you'd like inside the Headroom Component</h1>


  • duration — Duration of animation in ms
  • easing — Easing of animation
  • upTolerance — scroll tolerance in px when scrolling up before component is pinned
  • downTolerance — scroll tolerance in px when scrolling down before component is pinned
  • disable — disable pinning and unpinning
  • wrapperStyle — pass styles for the wrapper div (this maintains the components vertical space at the top of the page).
  • parent — provide a custom 'parent' element for scroll events. parent should be a function which resolves to the desired element.
  • pinStart — height in px where the header should start and stop pinning. Useful when you have another element above Headroom component.


  • pin - emitted when header is pinned
  • unpin - emitted when header is unpinned
  • unfix - emitted when header position is no longer fixed

GitHub @scttcper  ·  Twitter @scttcper