002

Music Festival Template

£20 or the whole Vault, £79.20

An editorial three-day festival site with an interactive vinyl hero, accessible lineup filters, dependable nightly timetables, selectable venue gallery, sponsor logo system, tickets, and practical information.

ScrollTrigger Lenis intermediate
7 more details
text-animationtabsfilterhover-effectscroll-revealstaggerclick-toggle

This template reads better at your own screen size than in the frame below:

Updated

About this template

A production-ready one-page site for festivals, club nights, outdoor programmes, and cultural weekends, designed with a monochrome editorial system and one restrained oxblood accent rather than a futuristic interface. The oversized hero title sits above a CSS-drawn turntable whose vinyl can be paused or switched between 33 and 45 RPM while the player itself remains fixed.

Read the full template overview

Friday, Saturday, and Sunday lineup tabs keep artists, times, and stages easy to scan; the timetable displays one stable night at a time; the venue gallery uses a clear main image with accessible choices; and a dedicated sponsor band provides correctly scaled partner-logo space.

Swap the placeholder artists, dates, prices, logos, and photography for your own event and deploy anywhere as static files.

Music Festival Template - website template preview

What's included

11 items
  • Complete deployable three-day festival site with countdown, hero, lineup, set times, venue gallery, tickets, info, and footer
  • CSS-drawn turntable with semantic pause/play and 33/45 RPM controls; only the record disc rotates
  • Accessible Friday, Saturday, Sunday, and full-weekend lineup filters with arrow-key tab navigation
  • One stable timetable per night with clear tab selection and a reset-to-Friday control
  • Selectable venue gallery with one large image, visible thumbnail choices, descriptive captions, and keyboard focus support
  • Dedicated presenting-partner and festival-partner logo grids with generous clear space and image sizing rules
  • Gentle GSAP entrance and scroll reveals that favour poster movement over digital effects
  • Bundled placeholder photography as optimised WebP files with the grade baked in: a near-monochrome hero against full-colour venue frames, plus background-colour fallbacks
  • Editorial art direction using mineral grey, off-white, charcoal, restrained oxblood, monochrome photography, and subtle grain
  • Lenis smooth scrolling wired in and fully optional
  • Accessible reduced-motion and no-JavaScript fallbacks keep event information readable

Perfect for

5 use cases
  • Festival and club night sites that need to sell tickets
  • Gig, tour date, and album launch pages
  • Conference and community event one-pagers with a bolder personality
  • Product or venue launch parties
  • Learning how GSAP Vault interaction effects compose into a full page

How it works

3 sections

Structure

The template initialises with a single setup and teardown path, using one motion branch to separate motion from the reduced-motion state.

Tabs, records and gallery

Semantic buttons drive the lineup and timetable tabs by updating aria-selected, tabindex, hidden panels, and a short GSAP opacity/translate reveal. Record controls toggle CSS classes that affect animation-play-state and duration on the vinyl disc only. Gallery buttons update the main image, alt text, title, copy, counter, and aria-pressed state with a brief crossfade.

Scroll reveals

ScrollTrigger is limited to gentle one-time content reveals and the navigation progress line.

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, 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

Can I run it for a one-day event instead of three?

Yes. The lineup filters and the set-time tables are built one night per block, so deleting Saturday and Sunday leaves a working single-day site. If you drop to one day, remove the filter row entirely rather than leaving a single button, since a filter with one option looks broken.

How do I put my own lineup and set times in?

Both are plain HTML lists in index.html, not data files or a CMS. Artist names, stages and times are text you edit directly, and the filters read the day off a data attribute on each entry. Adding an artist is copying one list item and changing the words.

Does it sell tickets?

No. The tickets section is a designed pricing block with buttons that go nowhere by default. Point them at Skiddle, Dice, Eventbrite or whatever you already sell through; the template deliberately does not try to be a payment system.

The photography is monochrome. Do my photos have to be?

No, but the art direction leans on it. The hero ships near-monochrome against full-colour venue frames, and that contrast is the idea. If you drop full-colour shots into the hero it still works, it just becomes a more ordinary festival site. Match the grade or change it deliberately, do not mix by accident.

Will it still make sense the week after the festival?

Partly. The countdown finishes and stops, which is correct, but you should swap the hero copy and tickets block for a thank-you and next-year signup yourself. Nothing switches over automatically, because a static template has no date logic beyond the countdown.

Paid template

Purchase to unlock the code.

Buying Music Festival Template opens the HTML, CSS and JavaScript source, the full documentation, an AI setup prompt for your editor, and every update we ship to it. Standard license: 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.

£20 Standard license, unlimited projects

Browse free effects

Or the whole library: the Vault, £79.20, one payment.

Documentation

What's Included

Code snippet omitted: it ships with the download.

Quick Start

1. Open index.html in a browser. GSAP, ScrollTrigger, Lenis, and the fonts load from CDN.

2. Replace the festival content:

  • Change the name, dates, location, prices, artist names, set times, and stages in index.html
  • Add or remove rows inside each [data-lineup-panel] and [data-schedule-panel]
  • Replace the bundled placeholder photography in assets/img/ with your own event images (see Photography)
  • Edit the palette custom properties near the top of assets/style.css
  • Change the event date used by the countdown near the top of assets/script.js

3. Deploy. The template is static and works on Netlify, Vercel, GitHub Pages, or a plain server.

Optional: minify before you go live

assets/script.js is the readable source and is what index.html loads. It is around 14KB, which is fine to ship as-is. If you would rather serve it minified, produce it yourself once your edits are done:

Code snippet omitted: it ships with the download.

Then point the last <script> tag in index.html at assets/script.min.js. Keep script.js as the file you edit and re-run the command after each change.

Colour System

Property Purpose
--ink Charcoal text and dark grounds
--paper Main cream paper
--paper-deep Secondary paper sections
--accent Restrained oxblood campaign accent
--stone Neutral selected states and secondary sections
--night Charcoal timetable and partner sections

Lineup Tabs

The lineup opens in a full-weekend view. Friday, Saturday, and Sunday buttons filter the page to one day; Reset returns to the full weekend.

Code snippet omitted: it ships with the download.

Tabs update aria-selected, roving tabindex, and the native hidden attribute. Left and right arrow keys move between tabs.

Nightly Timetable

[data-timetable] contains exactly one visible schedule panel. Day tabs switch between Friday, Saturday, and Sunday; Reset always returns to Friday. There is no drag state or card stack to become unsynchronised.

Code snippet omitted: it ships with the download.

Record Controls

The turntable is pure CSS. Only [data-record-disc] rotates; the plinth and tonearm remain fixed.

  • [data-record-toggle] pauses or resumes the disc using animation-play-state
  • [data-record-speed] switches between the 33 and 45 RPM visual speeds
  • Both controls expose their state through aria-pressed

Venue Gallery

The venue gallery uses one large image and four explicit image choices. Each [data-gallery-choice] supplies the large source, accessible alt text, title, and caption through data attributes.

Code snippet omitted: it ships with the download.

Clicking or focusing a choice updates the main image, caption, counter, and aria-pressed state. Reduced motion changes the content immediately without a crossfade.

Partner Logos

The #partners section provides two large presenting-partner slots and six standard festival-partner slots. Placeholder wordmarks can be replaced by images without changing the layout.

Code snippet omitted: it ships with the download.

Standard logo images are capped at 240px × 72px; presenting logos can use up to 360px × 110px. The default rule converts marks to white for consistent treatment on the charcoal ground. Remove the filter declaration from .partner-logo img when original brand colours are contractually required.

Photography

All placeholder photography ships bundled in assets/img/ as optimised WebP derivatives. Nothing is hotlinked, so the template keeps working offline, behind a firewall, and after any third party reorganises their CDN. Total image weight is about 436 KB across nine files.

The art direction is baked into the pixels rather than applied with a CSS filter: the hero is graded near-monochrome to sit under the poster type, and the venue photographs keep their natural colour with a light desaturation and warm shift so real venue images stay recognisable. Because the grade is baked, there is no filter declaration to fight when you drop your own pictures in.

Files

File Used by Size
img/hero.webp .hero::before in assets/style.css (1920px) full-bleed
img/venue-01-turbine-hall.webp … venue-04-lights-up.webp gallery main image, data-src in index.html (1600×1000) full size
img/venue-0*-thumb.webp gallery choice buttons (400×260) thumbnail

Swapping a photograph

Two ways, depending on whether you want the house grade applied.

1. Drop your own file in (simplest). Replace the matching file in assets/img/ keeping the same filename and roughly the same aspect ratio (16:10 for the venue images). Nothing else needs editing. Grade the image yourself first if you want it to match the rest of the set.

2. Re-bake from a source URL. Edit src for that entry in assets/img-manifest.json, then regenerate:

Code snippet omitted: it ships with the download.

The manifest records the source, output name, dimensions, WebP quality and the grade for every image. brightness is set per image rather than globally, because the sources differ in exposure and matching perceived brightness is what makes the set read as one campaign. The Boiler Room frame is a genuinely dark, low-lit room and runs at 1.3 against roughly 0.94–1.06 for its neighbours.

Every photograph also has a background-color fallback beneath it, so a missing or still-loading file shows the charcoal ground rather than a white hole.

Credits

Placeholder photographs are royalty-free images from Unsplash, used here as altered, art-directed derivatives. Replace them with your own event photography before launch.

Motion

  • Hero title lines rise into place on load
  • Supporting hero content follows with a short stagger
  • Sections reveal once with small opacity and vertical movement
  • The artist ticker moves continuously unless reduced motion is requested
  • No pinned sections, scroll hijacking, dragging, or rotating player wrapper

Accessibility

  • Semantic tabs use role="tab", aria-selected, roving tabindex, and arrow-key navigation
  • Record controls and gallery choices are real buttons with announced state
  • prefers-reduced-motion: reduce removes continuous and entrance motion
  • Without JavaScript, every lineup day and timetable remains present in the document
  • Gallery image alt text changes with the selected venue

Dependencies

  • GSAP 3 core and ScrollTrigger
  • Lenis smooth scroll, optional
  • Google Fonts: Anton, Archivo, IBM Plex Mono

Worked examples, the events and programmatic API, and the class reference ship with the download, alongside the full source.