A simple-to-use wrapper component to stick section headers to the top when scrolling brings them to top
Sticky Section Header
This package exports 2 components. StickySectionHeader
is a light weight simmple to use component. Just wrap your headers/section headers inside StickySectionHeader
component and provide top (top position – margin from top of viewport) and viewPort (The container element, by default the browser viewport).
CollapsibleStickySectionHeader
adds on to the capabilities of StickySectionHeader
. (See below…)
Installation
Install StickySectionHeader from npm registry using one of the following
yarn add @mayank1513/sticky-section-header
npm i @mayank1513/sticky-section-header
pnpm i @mayank1513/sticky-section-header
Simple usage
import StickySectionHeader from "@mayank1513/sticky-section-header";
export default function YourComponent() {
return (
<div>
<StickySectionHeader>
<h1>My Awesome Header</h1>
</StickySectionHeader>
</div>
);
}
Use with custom top position
import StickySectionHeader from "@mayank1513/sticky-section-header";
export default function YourComponent() {
return (
<div>
<StickySectionHeader top=50>
<h1>My Awesome Header</h1>
</StickySectionHeader>
</div>
);
}
Use with custom top position and viewport
import StickySectionHeader from "@mayank1513/sticky-section-header";
import { useRef } from "react";
export default function YourComponent() {
const ref = useRef();
return (
<div>
// your other stuff
<div className="container-section" ref={ref}>
<StickySectionHeader top=50 viewPort={ref.current}>
<h1>My Awesome Header</h1>
</StickySectionHeader>
</div>
</div>
);
}
CollapsibleStickySectionHeader
import CollapsibleStickySectionHeader from "@mayank1513/sticky-section-header";
export default function YourComponent() {
return (
<div>
<CollapsibleStickySectionHeader maxHeight={150} minHeight={50}>
<YourHeaderComponent>My Awesome Header</YourHeaderComponent>
</CollapsibleStickySectionHeader>
</div>
);
}
You can also optionally pass onHeightChange function if you need to change something based on the height of the header.
Make sure to set height: 100%
for the coponent directly inside the CollapsibleStickySectionHeader