A (800b gzip) header that will show/hide while scrolling; for ⚛️ Preact
Demo (standard)
Demo (inverse)
Install
$ npm install --save preact-scroll-header
❗️ Pro Tip: Use Yarn to install dependencies 3x faster than NPM!
Usage
Provide a value
; everything else is optional.
;; <ScrollHeader id="header" className="menu" buffer= 24 showClass="menu-show" onShow= console onHide= console > <h1>Menu</h1></ScrollHeader>
Styles
This component does not include any inline styles. Instead, classnames are assigned for every state the <ScrollHeader/>
enters. This provides greater flexibility and control of your desired effects!
However, there are some strong guidelines which you should not neglect. Below is an example for a simple slide-down effect:
/* start with "shown" position *//* will-change, top, right, left early to avoid extra repaints */ /* apply fixed; set start point */ /* apply transition separately; no flicker */ /* set end point; with shadow */
Note: Assumes that "header" was added as your base
className
. All others are defaults.
Properties
id
Type: String
Default: none
The id
attribute to pass down.
className
Type: String
Default: none
The className
attribute to pass down. Added to the wrapper element.
fixClass
Type: String
Default: 'is--fixed'
The className
to add when the header is out of view. This should apply a position:fixed
style, as well as an initial transform
value.
readyClass
Type: String
Default: 'is--ready'
The className
to add when the header has been "fixed". This should apply a transition
value to your header, which should always be separated from your fixClass
.
Note: Applying a
transition
before this class (via base style orfixClass
) will cause the<ScrollHeader/>
to flicker into view before hiding.
showClass
Type: String
Default: 'is--shown'
The className
to add when the header should be revealed. This should apply your desired transform
effect. Class is only applied when the <ScrollHeader/>
is out of view and has been "fixed".
buffer
Type: Number
Default: 0
The number of pixels to scroll before applying your showClass
. By default, the <ScrollHeader/>
will be shown immediately after user scrolls up.
listenTo
Type: String
Default: this.base.parentNode
The "scroller" element that will fire scroll
events. Works well with customized viewports, where document.body
is not scrollable and/or controlling overflow.
disabled
Type: Boolean
Default: false
Whether or not to disable the show/hide behavior. If true
, will not add fixClass
, readyClass
, or showClass
.
onShow
Type: Function
The callback function when the header is to be shown. Receivies the DOM element as its only argument, but is bound to the ScrollHeader
component context.
onHide
Type: Function
The callback function when the header is to be hidden. Receivies the DOM element as its only argument, but is bound to the ScrollHeader
component context.
License
MIT © Luke Edwards