Magnetic filings
An example of creating a grid of metal filings that rotate to point towards the cursor position using Motion for React.
Tutorial
Introduction
This example shows how to create a grid of metal filings that rotate to point towards the cursor position. Each filing calculates the angle to the cursor and uses spring animations for smooth rotation.
In this tutorial, we'll learn to use the usePointerPosition hook from Motion+ to track cursor position, and the useTransform hook to calculate angles between elements.
Get started
Let's start with a basic template that generates the filings based on a provided grid size.
function Filing() {
return <div className="filing" />
}
export default function MagneticGrid({ size = 16 }) {
return (
<div className="container">
<div
className="square"
style={{
"--grid-size": size,
"--grid-cols": size,
"--grid-rows": size,
}}
>
{Array.from({ length: size * size }).map((_, index) => (
<Filing key={index} />
))}
</div>
<StyleSheet />
</div>
)
}
// Copy Stylesheet from example sourceRelated examples
Latest in React
Motion+
Unlock all 400+ examples
- Source code for every Plus example.
- Provide examples direct to your agent via Motion's MCP.
- Lifetime access to new examples and APIs.








