
Research
Security News
The Growing Risk of Malicious Browser Extensions
Socket researchers uncover how browser extensions in trusted stores are used to hijack sessions, redirect traffic, and manipulate user behavior.
react-staggered-grid
Advanced tools
This is a React component that positions and arranges your items in a staggered grid
This is a React component that positions and arranges your items in a staggered grid
https://wakaztahir.github.io/react-staggered-grid
npm i react-staggered-grid
Here columns will be generated automatically according to fixed width of each item !
import {
StaggeredAlignment,
StaggeredGrid,
StaggeredGridItem,
StaggeredGridItemFunctional,
StaggeredItemSpan
} from "react-staggered-grid";
<StaggeredGrid
columns={totalColumns} // number of columns , don't pass if you want it to be gridWidth / columnWidth
columnWidth={columnWidth} // width of each column , don't pass if you want it to be gridWidth / columns
style={{width: "100%"}} // when width of the grid is fixed in pixels , use gridWidth prop
useElementWidth={true} // this would force css styled width (100%) , when false gridWidth = columnWidth * columnWidth
>
{items.map((item, index) => (
<StaggeredGridItem
index={index}
spans={span}
style={{transition: "left 0.3s ease,top 0.3s ease"}}
>
<MyItem style={{width: "100%"}}/>
</StaggeredGridItem>
))}
</StaggeredGrid>
StaggeredGrid takes props of a HTMLElement
, like style
,className
You have to give two of these parameters columnWidth
,columns
,gridWidth
This prop adjusts width of each column on the grid This prop is required if gridWidth
&& columns
props are not being
passed
This prop adjusts the number of columns , If you want the columns to be adjusted according to width , You don't need to
pass this prop , just pass columns
and gridWidth
Custom width of the grid , if you don't know width of the grid , pass useElementWidth = true
and set css style width
to be 100%
by default "div"
This is for gridWidth ,when using css styled width , this should be true If you pass columns
&& columnWidth
, grid
width would be columns
* columnWidth
but if you want to force gridWidth to be element width (css styled width) , you
can pass useElementWidth = true
and it will get width of the grid using a ref on the parent element
Increase the gap between items horizontally , This also decreases column width to make space for the gap
columnWidth = columnWidth - horizontalGap * 2
When true , horizontalGap will be subtracted from column width making column width to be decreased to allow for horizontal gap , Useful when all columns must fit inside gridWidth regardless of horizontal gap !
default : false
Increase the gap between items vertically
This should be mostly centered , unless you have a custom gridWidth and you'd like it to translate each item according to the given alignment
default StaggeredAlignment.Center
Children of the grid , should be StaggeredGridItem[]
| StaggeredGridItemFunctional[]
Since StaggeredGrid uses translate , it translates items on the page using position : relative
on the parent Which
makes the parent element has zero height when it contains height this is by default true , which means that when the
grid items are positioned , It tracks the total height and sets it later
when true , reposition will be run when the window is resized , true by default.
It is used to make the grid infinite , if given a scroll event listener is added and when the user scrolls to the end of grid , this function is called to add more items !
default : 20 , When user reaches the end - requestAppendScrollTolerance , request append is called
provide a controller object to call functions on the grid , see createStaggeredGridController
There are two types of items : StaggeredGridItem
& StaggeredGridItemFunctional
, Functional component uses
a useStaggeredItemPosition
hook to get the item position on the grid
It's important to key your item correctly
StaggeredGridItem takes props for a HTMLElement
like onClick
and style
other props include...
by default "div"
{
initialWidth : number // defaut 0
initialTranslateX : number // default 0
initialTranslateY : number // default 0
}
If item height is known pixel height , You can provide it , otherwise the height will be calculated using a ref.
Span of the item , It's constrained in range (1 - totalColumnCount)
This is the index of the item in the array
Children of the item
This is a function which gets a parameter item position which contains item width , x and y which is transformed into props (attributes) for the staggered grid item element
By default, it uses css properties left
& top
to translate each item with position : absolute
relative to parent
If you want force reposition items on the grid whenever you want ! You need a StaggeredGridController
// provide this controller to StaggeredGrid Component using gridController prop
const controller = createStaggeredGridController();
interface StaggeredGridController {
/** This will request reposition on the next animation frame , useful for multiple calls */
requestReposition: () => void;
/** Force reposition all the items */
reposition: () => void;
}
FAQs
This is a React component that positions and arranges your items in a staggered grid
The npm package react-staggered-grid receives a total of 98 weekly downloads. As such, react-staggered-grid popularity was classified as not popular.
We found that react-staggered-grid demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover how browser extensions in trusted stores are used to hijack sessions, redirect traffic, and manipulate user behavior.
Research
Security News
An in-depth analysis of credential stealers, crypto drainers, cryptojackers, and clipboard hijackers abusing open source package registries to compromise Web3 development environments.
Security News
pnpm 10.12.1 introduces a global virtual store for faster installs and new options for managing dependencies with version catalogs.