070
AI ready Refreshed

Infinite Scroll Landing Page Website Template

£29
or the whole Vault, £99

A ten-page infinite scroll website template for a creative production studio, and every page keeps scrolling: six case studies form one endless ring, while the home page, work index, studio and contact pages each wrap on to their own opening. Built for creative agencies, film and production companies, photographer portfolios, fashion labels and event studios.

ScrollTrigger Lenis intermediate
5 more details
infinite-scrollpage-transitionparallaxfilteringform-validation

About this template

Ten pages behave as one reel that never reaches a bottom. Six case studies form a ring: the end of each project scrolls straight into the opening of the next, and scrolling up from the top goes back into the end of the one before. The home page, work index, studio and contact pages each wrap on to their own opening. Each page has its own saturated colour, taken from its photographs, which blends into the next as you scroll, and a dock that always says which page you are on, how far through it you are and what comes next. Oversized Manrope and full-bleed photography give SECOND TAKE, the fictional London production studio used as the worked example, a clear identity, and footer details sit in a closing scene inside the loop.

Read the full template overview

Each page gives the visitor something to handle. Case studies have a frame study with a contact strip plus crop or aspect ratio controls, the work index keeps looping while it is filtered or searched, the studio page has a call sheet that shows who turns up for each kind of job, and the enquiry form changes its photograph with the kind of project chosen. A contact panel stays one click away in the dock, and phones get a reel menu that slides out from behind it.

A visible loop switch turns any page into an ordinary finite one, and reduced-motion, smooth-scroll-off, no-JavaScript and blocked-CDN visitors get complete pages with a plain next-project link. The structure suits a creative agency, film company, photographer, fashion label or event studio. Replace the projects, photographs, colour tokens and form destination to make it yours. The download is a self-contained static website with no build step.

Infinite Scroll Landing Page Template - website template preview

What's included

13 items
  • Ten complete pages: home, work index, six case studies, studio and contact
  • A colour for every page, set in one line, that blends into the next as you scroll
  • A dock that names the page, the scene and what comes next, with a six-segment ring of the case studies
  • Case studies that scroll endlessly from one project into the next, in both directions
  • Home, work, studio and contact pages that wrap seamlessly on to their own openings
  • Nav and project links that move the reel on into the destination's opening, with no cover or fade
  • Frame studies with a contact strip plus crop or aspect ratio controls
  • Filterable, searchable work index that keeps looping, with an empty state
  • Interactive call sheet on the studio page and an enquiry form that responds to the project type
  • Phone navigation that slides out of the bottom dock
  • Finite-scroll switch and complete reduced-motion, no-JavaScript and blocked-CDN pages
  • Back and Forward restore the right project and scroll position
  • Locally bundled, graded WebP photography for each project

Perfect for

5 use cases
  • Creative agency website
  • Film and production company website
  • Photographer portfolio
  • Fashion label or campaign site
  • Event and live production studio

How it works

6 sections

Case studies as one ring

Every project is its own page with its own address, and the end of each one is the real opening of the next. As that opening fills the screen the site becomes the next project, with the scroll still moving and nothing covering the page. Scrolling up from the top goes back into the end of the previous project the same way. The address, title and heading follow, and the new title is announced to screen readers.

Always knowing where you are

Every page has its own saturated colour across its grounds, header and dock, with pale scenes tinted to match. As the next project's opening comes into view the colour blends across with the scroll, and reverses if you turn back. The dock names the page, its current scene and what comes next, and a ring of six coloured segments links to every case study and fills as you read, so going round the loop is something you can see.

Pages that wrap on to themselves

The home page, work index, studio and contact pages each return to their own opening instead of ending. Footer details live in a closing scene that the loop passes through, so they stay reachable without a dead end. On the work index the loop keeps running at the new length while a filter or search is applied.

Links that move the reel on

A nav or project link uses the same idea as the scroll: the destination's opening is placed directly below the current view and the page scrolls on to it. Back and Forward go straight to the right project and scroll position. Inside the product page preview the address is replaced rather than added, so the host page's Back button is left alone.

Something to handle on every page

Case studies have a contact strip of frames with crop controls, or aspect ratio controls on the film projects. The work index filters by discipline and searches by client, place or year. The studio's call sheet shows the crew, days and turnaround for three kinds of job. The enquiry form changes its photograph and its closest past project with the kind of work chosen.

A complete page without the loop

The visible loop switch, reduced motion, turning off smooth scrolling, a blocked animation CDN or no JavaScript all give an ordinary readable page with a plain link to the next project. Arrow keys, Space, Page keys, Home and End work in the loop, and Tab never reaches the inert copy of an opening.

Plugins ScrollTrigger
Difficulty Intermediate
Smooth scroll Lenis integration
Includes HTML + JS + CSS source, documentation, AI setup prompt, lifetime updates

Lighthouse, as measured

Google Lighthouse on this template's demo (10 pages, lowest score shown), from the latest scan. A measurement of the demo as shipped, not a promise for your page.

Accessibility
100
Best practices
100

No performance score, on purpose. That figure depends on how you deploy: your server's compression and caching, your CDN, the connection and the device doing the test, none of which the code controls. The same page can score very differently on two consecutive runs, so measure it where it will live.

Questions about this template

Which businesses suit this infinite scroll website template?

It suits creative agencies, film and production companies, photographer portfolios, fashion labels and event studios: anyone whose work is best seen one project after another. SECOND TAKE is a fictional London production studio showing one identity. Replace its six projects, team and contact details, and keep the endless case study ring as your portfolio.

How do I add, remove or reorder projects in the case study ring?

Each case study ends with a next-take and a previous-take link, and those two links define the ring. To add a project, copy a case study page, change its content, and point its neighbours' links at it. Add a row to the work index and an entry to the phone menu on each page. The ring works with as few as two projects.

How do I change a page's colour?

Each page has one line near the top of the stylesheet holding its colour, the ink that sits on it, a pale tint for light scenes and a stronger shade for small details on that tint. Change that line and the page, its dock, its place on the case study ring and the blends either side of it all follow. Recheck contrast against your new colour.

Can visitors turn off the endless scroll?

Yes. The Loop on control in the dock switches every page to a finite one for the rest of the visit, with an ordinary end and a next-project link. Reduced-motion visitors get finite pages automatically. Nothing is hidden in the finite version: closing scenes, credits and the studio's contact details are in the page either way.

What photographs does each case study need?

Each project uses one wide opening image with room for the large title, plus two or three frames for its frame study. Pick a wide image whose subject survives a narrow phone crop, and keep the frames at three to two. Bundled WebP photographs are examples from Pexels, credited in the README. The fictional clients and quotes must be replaced.

Does the enquiry form send anything?

No. It is an unwired static front end that collects the project type, name, email, company, rough budget and a message, checks the required fields and shows a confirmation saying nothing was sent. Connect it to Formspree, Netlify Forms or your CRM before publishing. The contact panel in the dock holds an email link and has no form.

How long can a case study be?

As long as it needs. Scenes can be added, removed or grown, and the next project's opening joins on after whatever the last scene is. Give images reserved space with width and height attributes so the page length is known when it arrives. Add a matching number link to the dock's scene navigation for each new scene.

How do I filter the work index by my own categories?

Each row carries a discipline and a list of search words, and each filter button names a discipline. Rename the buttons, change the values on the rows, and write the words you want found, such as clients, cities and years. The empty message appears by itself when nothing matches, and the loop carries on at the new length.

The Vault opens this source and the whole library.

Each product gives you the HTML, CSS and JavaScript source, the full documentation and an AI setup prompt, licensed for unlimited personal and commercial projects. Every paid product is tested for desktop and mobile layouts, reduced-motion handling, animation cleanup and keyboard controls wherever there is something to operate.

One payment, over 300 products, and future additions to the library.

Documentation

Quick Start

Open index.html through any local web server, or upload the complete folder to a static host. Keep the assets/ directory next to the HTML files. No build step is required. Internet access loads GSAP and Lenis; the Manrope font and bundled photography are local. Opening the files straight from disk works, but the ring between case studies needs a web server to fetch the next page, so from disk each case study wraps on to itself.

Replace every hello@secondtake.example address and the enquiry form destination before publishing. This reserved example domain is not a working inbox. The form in contact.html is a front end only: it validates, shows a confirmation and sends nothing. Connect it to Formspree, Netlify Forms or your CRM by replacing its action and removing the submit handler in initBrief. The dock's project button opens a contact panel with an email link.

Using It With Your Own Design

Start with your studio name, the photographs and the semantic colour tokens in assets/style.css. Every page is a complete HTML file with the same header, dock, phone sheet and contact panel, so change those on each page.

<main data-page> is the part of each page that changes when the site moves on. Keep the data-scene attribute and a unique ID on each scene inside it. The scene's value supplies the small current-scene label; match its ID in .scene-nav. The first scene must have id="intro" and is what the loop copies, so it must be complete and look right at one viewport high. Tails are generated and must not be authored by hand.

assets/page-router.js handles links, history and focus and is shared code: leave it as it is. Page features are started in initPage in assets/script.js and removed in destroyPage, because a page's own script tags do not run on a soft navigation. Add your own code there.

.scene has a minimum height. Openings overscan for parallax with .scene-media, and data-parallax is a conservative travel multiplier. Header and bottom dock are fixed; their heights are --header-h and --dock-h and scene padding reserves the space. Avoid an opening headline that covers your subject's face; --hero-pos and --hero-pos-m on the scene move a photograph at desktop and phone sizes.

Pages

File What it is Hands-on part
index.html The reel: introduction, selected study, studio, invitation Full-frame and closer-crop controls
work.html An index of every project, with a closing invitation Discipline filter, search and an empty state
open-air.html, sit-down.html, thin-glass.html, long-pasture.html, last-night.html, high-water.html Case studies: opening, frame study, brief, full-bleed moment, credits and next take Contact strip of frames, with crop or aspect ratio controls
studio.html Who we are, how we crew, a quote, and the studio's details Call sheet for three kinds of job
contact.html The invitation, enquiry form, address and hours Project type changes the photograph and closest past project

The ring and the loop

Each case study names its neighbours with two ordinary links in its closing scene, data-next-take and data-prev-take. Those two links are the ring. To add a project, copy a case study, write its content and update the links on its two neighbours; then add a row to work.html and an entry to .sheet-takes on every page. To end the ring, remove the links: that page wraps on to itself like the home page.

As soon as a case study has been open for a moment, it fetches both neighbours in the background and decodes their pictures. If the next page cannot be fetched, the page wraps on to itself until it can. Give images width, height or a reserved box so a page's length is known the moment it arrives. If you change a page's height from script, call relayout() afterwards so the loop's join moves with it.

Footer details belong in a closing scene (.colophon), not after </main>; there is no bottom of the page to put them at in loop mode.

The dock

The dock always answers three questions in words: which page, which scene, and what comes next. A case study says "Sit Down, 2 of 6", the scene, then "Next: Thin Glass". Home, work, studio and contact say "Work, scene 1 of 2", the scene, the next scene, then "Back to the top" on their last scene, or "End of the page" with the loop off. Scene names come from data-scene. Case studies keep their first line and next project as text in .reel-where, so change those when you rename or reorder a project.

The ring in .take-ring has one link per case study, each in its project's colour through its page- class. The current one is marked with aria-current="page", sits thicker and fills as you scroll; crossing moves on to the next. On the other four pages the centre shows that page's own progress. --x and --y place each link around the ring: add or remove a project and recalculate them for the new number of segments, and change --turn and the 56 degree arc in the stylesheet to match. Everything inside .reel-place is replaced as each page arrives, so edit it on every page. On phones the ring opens the page sheet, which also holds the loop switch.

Options

Hook or setting Meaning
data-scene="Selected work" A scene and its navigation label
data-parallax="0.14" Image travel factor; keep image overscan larger than travel
data-next-take / data-prev-take The ring: links to the next and previous project
data-campaign A frame study: holds data-crop-image, data-frame and data-crop
data-frame with data-src, data-alt, data-caption, data-pos One thumbnail in the contact strip
data-crop with data-scale A crop button, as a zoom factor
data-crop with data-bars="2.39" An aspect ratio button; letterboxes the frame without changing its height
data-filter, data-filter-kind, data-filter-text The work index filter
data-kind, data-search on .index-row What a row matches
data-callsheet, data-call, data-call-panel The studio call sheet
data-contact Opens the contact panel instead of following its link
class="page-sit-down" on <body> Which line of colours this page uses
data-take-ring, aria-current on its links The ring of case studies and the current one
data-where-page, data-scene-label, data-where-next The three lines of words in the dock
data-loop-toggle Switch between infinite and finite scrolling; remembered for the visit
data-smooth="off" on <html> Ship with the native finite page instead of Lenis
?smooth=off / ?smooth=on Preview a page without or with smooth scrolling

Reduced motion wins over the smooth-scroll settings. The loop requires at least two scenes and an owned Lenis instance. An existing window.lenis belongs to the host and is never replaced.

Palette

Every page has its own colour, so a visitor always knows where they are. Cobalt #1845ed belongs to home, the studio's own brand colour; the others are chosen from each project's photographs. Dark ink #101527 and white are shared.

Page Colour Ink
Home Cobalt #1845ed White, 6.75:1
Work Vermilion #f0551a Dark, 5.20:1
Studio Magenta #c2127a White, 5.74:1
Contact Cyan #2fc6e8 Dark, 8.95:1
Open Air Rose #f08a8f Dark, 7.54:1
Sit Down Red #b5121b White, 6.85:1
Thin Glass Teal #0a6b70 White, 6.27:1
Long Pasture Moss #3d6b14 White, 6.34:1
Last Night Violet #6a1bb3 White, 8.68:1
High Water Ochre #e3a50f Dark, 8.33:1

To change a page's colour, edit its one line near the top of assets/style.css, for example .page-sit-down. It holds --page and its --page-ink, the same two as number triples, a pale --page-tint for the light scenes, and --page-strong, which is the colour used for small details on that tint and must reach 4.5:1 against it. Write colours as #rrggbb, because the scroll blend reads them. Then change theme-color in that page's <head>. The dock, the ring and the blends either side all follow. Each page chooses its line with the class on <body>, such as <body class="page-sit-down">. Every measured pair is listed in the :root comment.

Photo copy stays white on its scrim whatever the page colour; recheck the scrim against any replacement photograph.

Manrope supplies all roles, from a broad, closely tracked display to small production labels. It is self-hosted in assets/fonts/ (see Fonts below). To change it, swap the @font-face rule at the top of assets/style.css, the font preload on each page and the --font-display / --font-body tokens together.

Fonts

Manrope is self-hosted in assets/fonts/manrope-latin.woff2, so the page makes no render-blocking third-party font request. The file is the Latin subset Google Fonts serves (a variable font covering every weight the template uses), declared by the @font-face rule at the top of assets/style.css with Google's unicode-range, and preloaded on each page. Licence: SIL Open Font License 1.1, Copyright 2018 The Manrope Project Authors (https://github.com/googlefonts/manrope); the full text is in assets/fonts/OFL.txt. To use Google Fonts instead, delete the @font-face rule and the preload and add the Google Fonts <link> to each page.

Images and Credits

Cropped, graded WebP derivatives are included under assets/img/ (about 3.7 MB across ten pages, with a 960px version of each opening photograph for phones). They are illustrative stock assets, and each fictional project's photographs were not made for the client named; replace them with your own work for a live site.

Two of these show incidental words: the clapperboard and director's chair in Sit Down, and a sign on the set in Last Night's second-stage photograph. Check they suit your use.

Photography is covered by the Pexels licence, including permitted website-template use and its restrictions. It is separate from the code licence. Do not imply endorsement by pictured people or resell unaltered stock files.

To use your own images, replace the local WebP files, update dimensions and alt text in the HTML, and keep the same relative paths.

Accessibility

Every page is complete without JavaScript, and links between pages are ordinary links. With JavaScript, crop buttons, filters, the call sheet, scene navigation and the dialog are keyboard operable. The dialog traps focus natively, closes with Escape and restores focus without moving the page. The phone sheet closes with Escape or a tap outside and returns focus to its button.

Loop tails are inert, hidden from assistive technology and contain no duplicated IDs, so Tab never enters one and screen readers meet one page at a time. When the site crosses to a project, its title is announced and focus moves to its heading. Arrow keys, Page Up/Down, Space, Home and End work in the reel, and move on to the next project at the end of a case study; form fields and buttons retain their native keys.

Reduced motion disables smooth and infinite scrolling, image parallax, the moving link and colour blending; page changes and colours are immediate and crop changes are instant. The ring's links are small on purpose and have the same destinations as the case study list on the work page, so nobody depends on hitting them. Colours are never the only signal: the dock says the same in words. Use the Loop toggle to reach finite document edges. In embedded previews, the host's Stop interacting control or Escape releases the frame.

Dependencies

Demo pins: GSAP 3.15.0 with ScrollTrigger; Lenis 1.3.17. GSAP compatibility floor: 3.12+. Lenis is pinned on purpose: crossing between projects carries its scroll position over, so retest the ring after upgrading it. Manrope is self-hosted. Dependencies use ordinary deferred CDN script tags, while the font, all photography and the template's own CSS/JS are local.

If the animation CDN is blocked, pages remain readable, links load pages normally, and the crop, filter, call sheet, form and contact controls still work without animation. If all JavaScript is unavailable, every page and its next-project link remain, the header navigation stays visible on phones, and the filter is hidden.

Browser Support

Modern browsers with native dialog, CSS small viewport units and standard JavaScript APIs. The ring relies on CSS container units, conic-gradient and color-mix, supported from Safari 16.2 and current Chrome and Firefox. The responsive pages use a finite fallback wherever motion is reduced. The scrollbar is hidden while the loop is on, because the reel has no bottom for it to show. Test the loop, navigation and contact panel after integrating with a host page that has its own scroll manager.

Also in your download: the full source, worked examples, the events and programmatic API, and the class reference.

£29