Sphere Album
A sphere of image cards you can spin with the wheel, tumble freely with a drag, and click through to a detail page.
111
126 copies
Image preview

About this component
Fibonacci-spiral placement (why cards don't bunch at the poles), and quaternion orientation instead of yaw/pitch. That second one gets a proper explanation plus two axis diagrams, since it's the bug you hit — a sideways drag rolling the sphere once it's tilted, then reversing past 90°.
Key features — eight, covering the trackball, the 90ms weighted throw, real anchors for links, the 6px drag-cancels-click rule, depth handling, frame-rate independence, static canvas rendering, and off-screen pausing.
Key features
True trackball drag — follows the pointer from any orientation, with no gimbal flip and no limit on how far it tumbles.
Weighted throw — release velocity is averaged over the last 90 ms, so a pause before letting go correctly doesn't throw.
Per-card links — every card is a real anchor, so page transitions, new-tab and keyboard access all behave normally.
Drag never navigates — a gesture longer than 6 px cancels the click, so dragging off a card won't open it.
Depth that reads — the front 45% stays sharp; blur and fade ramp up behind it, and back cards stop catching clicks.
Frame-rate independent — motion is integrated against elapsed time, so it feels identical at 60, 120 and 144 Hz.
Even spacing at any count — add or remove cards and the Fibonacci spiral redistributes them; nothing to rebalance by hand.
Quiet on the canvas — renders a single finished frame while designing and exporting, so Framer stays responsive.
Pauses off-screen — the loop stops when scrolled out of view or the tab is hidden, and resumes where it left o
API reference
Framer code component. Default export from SphereAlbum.tsx. Panel labels are shown in quotes where they differ from the prop name.
Cards
Prop | Control | Default | Range |
|---|---|---|---|
| Array of Object | 20 placeholders | — |
| ResponsiveImage | empty | — |
| String |
| — |
| Link | none | — |
| Number |
| 20–320 |
| Number |
| 20–320 |
| Boolean |
| — |
items— The cards on the sphere. Add or remove rows to change how many there are; spacing redistributes itself, so you never have to rebalance by hand.items[].image— Cropped to fill the card. A row with no image shows a neutral gradient plate instead of a gap.items[].title— Used as the card's accessible label, and as image alt text when the image has none.items[].link— Where the card goes when clicked. Point it at a Framer page or an external URL. Leave it empty and the card becomes decorative but still spins.items[].width— Card width before perspective. Mixing portrait and landscape sizes is what gives the sphere its scattered rhythm.items[].height— Card height before perspective.openInNewTab— Opens every linked card in a new tab, withrel="noopener noreferrer"applied.
Motion
Prop | Control | Default | Range |
|---|---|---|---|
| Number |
| 20–70 |
| Number |
| 0–1 |
| Number |
| 0.1–2 |
| Number |
| 0–1 |
| Number |
| 0.85–0.99 |
| Boolean |
| — |
| Boolean |
| — |
| Number |
| 0–3000 |
radius— Sphere size as a share of the frame's shorter side, so it rescales with the frame instead of overflowing on phones.autoSpin— The drift it settles back into when nobody is touching it. Set to0to have it come to a complete stop.dragSpeed— How far the sphere turns per pixel dragged. At the default, a 100 px drag turns it about 33°.wheelSpeed— How hard a scroll pushes the spin. Scrolling adds to velocity rather than setting position, so it coasts like a flick.damping— How long a throw keeps going. Lower is heavier and stops sooner;0.99is nearly frictionless.captureWheel— On, the wheel rotates the sphere and the page stays put. Turn it off when the sphere sits inside a scrolling page and you'd rather the page won.enableZoom— Two-finger pinch, or ⌘/Ctrl + scroll, resizes the sphere between 0.62× and 1.7×.introMs— Cards bloom outward from the centre on load, staggered. Set to0to start fully formed.
Appearance
Prop | Control | Default | Range |
|---|---|---|---|
| Number |
| 0–1 |
| Number |
| 0–6 |
| Number |
| 0–160 |
| Color |
| — |
| Number |
| 0–32 |
| Number |
| 0–40 |
| Boolean |
| — |
depthFade— How transparent the far side goes.0keeps every card fully opaque and the sphere reads flatter.depthBlur— Blur at the very back. The front 45% of the sphere always stays sharp; blur ramps in quadratically behind that. Drop this to0first if you go past ~60 cards — it is the costliest property here.hoverLift— How far a hovered card eases toward the camera.0disables the effect.cardBackground— The mat behind each image. Visible as a border when Card inset is above0.cardPadding— Mat width around the image. Set to0for edge-to-edge images with no frame.cardRadius— Corner radius on the card. The image inside is rounded to match, minus the inset.shadow— A soft drop shadow under every card. Turn it off on dark backgrounds, where it mostly muddies the edges.
Units
Panel numbers are scaled for comfortable slider ranges. Internally, rotation is measured in radians per 60 fps frame.
Control | Panel | Internal | In practice |
|---|---|---|---|
| 46 | 0.46 | Fraction of the frame's shorter side |
| 0.11 | 0.0011 rad/frame | About 3.8° per second |
| 0.58 | 0.0058 rad/px | 100 px of drag ≈ 33° |
| 0.26 | 0.00026 rad/frame/px | One notch ≈ a gentle push |
| 0.945 | ×0.945 per frame | A throw decays over ~1 s |
Fixed limits
Three limits are hardcoded rather than exposed, because they mark the edge of what stays controllable.
Spin caps at 0.11 rad/frame (≈ 378°/s).
Zoom is clamped to 0.62× – 1.7×.
A press travelling 6 px or less counts as a tap, not a drag.
Types
Details
Category
Gallery
Media
Image
Views
111
Copies
126
Paste directly onto your Framer canvas.

