Event Venue Template

£10

One-page site for any venue with a season and a current show: theatres, concert halls, arts centres, cinemas. A production selector closes the stage curtains, changes the show at full cover and opens into a settling house-light glow, with a season ledger, visit information and membership. Oxblood playbill identity.

ScrollTrigger Lenis advanced
6 more details
clip-pathclick-togglekeyboard-navigationtimeline-controlscroll-revealstagger
Event Venue Template - website template preview

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

About this template

A complete one-page site for House Lights, a fictional independent repertory theatre in Sheffield. Oxblood, deep-stage red-black and ticket ivory give it the material language of a printed playbill, while Bona Nova display type and Geologica reading type keep the voice literate, warm and useful. The structure is deliberately theatrical rather than event-like: an asymmetric poster-and-stage hero, a current-production stage, a chronological season ledger, a split house story, practical visit rows, membership and footer.

Read the full template overview

The centrepiece is a four-show production selector built from real buttons. Choosing a show closes left and right curtain panels across the stage; only at full closure does the title, run, price, synopsis and production photograph change. The curtains then open with a small overshoot while an electric-blue house-light glow settles over the new image. Rapid choices retain only the latest request, and arrow keys, Home and End provide the same selection flow as click and tap.

All four production photographs are bundled, optimised WebP derivatives with fixed dimensions, descriptive alternatives, deep-stage fallbacks and legibility overlays. Buyers can replace the four files without touching the interaction, edit the production rows in one script block, and remove any section independently.

What's included

11 items
  • Complete deployable one-page theatre site with fixed nav, poster hero, current stage, season ledger, venue story, visit information, membership call to action and footer
  • Four-show production selector operated by semantic buttons on keyboard, pointer and touch
  • Paired stage curtains close with clip-path, change all production content only under full cover, and open with a restrained overshoot
  • Rapid-selection state management keeps the latest requested show and prevents stale timelines from corrupting the stage
  • House-light glow settles after every curtain reveal for a layered but restrained finish
  • Chronological playbill ledger keeps every production and price readable without JavaScript
  • Four robust local production-photo slots with intrinsic dimensions, useful alt text, colour fallbacks and text-legibility treatment
  • Measured oxblood, stage, ticket-ivory and electric-blue palette with every translucent value derived from matching RGB triples
  • Responsive layouts for desktop and mobile with no horizontal overflow
  • Reduced-motion, no-JavaScript and blocked-CDN fallbacks preserve a complete readable page
  • Optional Lenis smooth scrolling synchronised with ScrollTrigger

Perfect for

5 use cases
  • Independent theatres presenting a repertory season and current production
  • Studio theatres and performance venues needing practical access and travel information
  • Producing companies combining ticket sales, venue story and supporter membership
  • Arts centres with rotating theatre, dance and spoken-word programmes
  • Community venues protecting low-price tickets through a membership appeal

How it works

4 sections

The repertory stage

Four production rows in the script supply the title, dates, price, synopsis and image relationship, while the HTML carries four real image slots and four semantic buttons. The visible stage is a single accessible content region rather than duplicated hidden panels. Buyers can rename or reorder the season by changing those rows and keeping the button and image order aligned.

The curtain change

A GSAP timeline animates two oxblood curtain panels from opposite sides with clip-path. The selected production is written only in the callback reached at full closure, then both panels open just beyond their resting inset and settle back while the house-light glow fades to its resting level. If several choices arrive during a run, the current timeline completes safely and immediately serves only the latest requested index.

Keyboard and motion

The selector uses button elements, visible focus and aria-pressed state, with Arrow Left, Arrow Right, Home and End moving focus and selecting through the same request function used by click and tap. Under prefers-reduced-motion, selections update immediately with no curtain travel, and CSS independently restores every pre-hidden reveal target.

Without JavaScript

The first production is fully rendered in HTML, its first photograph is visible, and the entire four-show season remains a chronological ledger below it. The synchronous head gate is removed if GSAP or ScrollTrigger fails to load, so blocked CDNs expose the same plain document instead of leaving reveal targets hidden. Each section setup is guarded, allowing buyers to remove sections without breaking the remainder.

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

Questions about this template

Does it sell tickets?

No. The season ledger lists every production and price and the membership call to action is designed, but nothing takes payment. Point them at Spektrix, Ticketsolve, TicketSource or whatever box office you already run; theatres essentially always have one.

What is the curtain change actually doing?

Paired curtains close with clip-path, all production content is swapped only under full cover, then they open with a restrained overshoot and a house-light glow settles after. Changing content only at full cover is what stops a half-swapped show flashing through mid-transition.

What if someone clicks through the shows quickly?

It keeps the latest requested show and prevents stale timelines corrupting the stage, so rapid clicking lands on the show you actually asked for rather than an earlier one finishing late. That is a real failure mode for curtain-style transitions and it is handled explicitly.

Do I need production photography?

Four photo slots ship with intrinsic dimensions, useful alt text, colour fallbacks and a legibility treatment behind text, so they are built to take your own production shots. The page still reads if a photo is missing, but this is a template that wants real images of real shows.

Will the season list still read if the stage does not work?

Yes. The chronological playbill ledger keeps every production and price readable without JavaScript, so the practical information, what is on and what it costs, never depends on the curtain animation running.

Paid template

Purchase to unlock the code.

Buying Event Venue 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.

£10 Standard license, unlimited projects

Browse free effects

Documentation

Quick Start

  1. Upload index.html and the assets/ folder to any static host.
  2. Replace the four production photographs in assets/img/ as described in Photography.
  3. Edit venue and season copy in index.html; edit the four production data rows in assets/script.js so the interactive stage matches.
  4. Keep the GSAP, ScrollTrigger and Lenis CDN tags at the end of index.html, or self-host the same versions.

The production selector

The four PRODUCTIONS rows in initProductionSelector provide the stage title, dates, price, synopsis and image information. Their order matches the four [data-production-button] buttons and four [data-production-image] images in index.html.

A selection closes both [data-curtain] panels. The script writes content only after the close tween has covered the stage, then opens the curtains and settles [data-house-glow]. Rapid selections are safe: a running transition finishes and then serves only the latest requested index.

Buttons work with click, tap and ordinary Tab navigation. Arrow Left/Right moves and selects, while Home/End selects the first or last production.

Sections and customization

Every script setup guards its own markup, so sections can be removed independently:

  • Fixed navigation: update or remove links when their target sections change.
  • Hero ([data-hero]): an ivory printed poster beside an abstract deep-stage panel.
  • Current production (#now): the selector, stage, four image slots and booking link.
  • Season (#season): a chronological <ol> playbill, not a card grid. Add or remove <li> rows freely.
  • Our house (#house): the venue story and three practical commitments.
  • Visit (#visit): auditorium, access and travel rows.
  • Support (#support): membership proposition and action.
  • Footer.

Add data-reveal to an element to include it in the scroll reveal. Keep [data-intro] for the two hero columns if you retain the intro.

Photography

This theatre vertical needs real production photography. The markup includes four local image slots:

  • assets/img/production-01.webp
  • assets/img/production-02.webp
  • assets/img/production-03.webp
  • assets/img/production-04.webp

Each <img> has a 1600 × 1067 intrinsic size and useful alt text. The stage has a deep-red fallback pattern, and the production copy sits on a solid --stage panel, so unusually bright images cannot make the text unreadable.

The included files are bundled, optimised WebP derivatives with a shared desaturated theatre grade baked into the pixels. To swap a photograph, overwrite the matching file in assets/img/ and preserve its filename and 3:2 proportions, or update the matching <img src>, width and height values.

The source project also keeps the ungraded originals in assets/img-src/ and the build recipe in assets/img-manifest.json. To regenerate all four derivatives after changing a manifest source, run:

Code snippet omitted: it ships with the download.

The photographs were generated for this fictional theatre and require no stock-photo attribution. Review the usage terms of any replacement images you add.

Palette

Edit each solid and matching RGB triple together at the top of assets/style.css:

Code snippet omitted: it ships with the download.

All translucent colours derive from those triples. The buyer-facing comment above :root records every contrast pair as used, including ticket ivory composited at .72 and .62 opacity.

Electric blue is safe as text on oxblood and deep stage (7.03:1 and 8.79:1), but fails on ticket ivory (1.70:1). Do not use it as text in ivory sections; the stylesheet limits it there to non-text focus and decorative treatments.

Accessibility

  • The production controls are real buttons with aria-pressed, visible focus and one shared interaction path for keyboard, click and tap.
  • Arrow Left/Right and Home/End navigation changes the selected production and moves focus.
  • The selected title and dates are announced through a polite live region after the stage content changes.
  • Every photograph has useful alternative text; inactive production images are hidden from assistive technology.
  • Reading colours exceed WCAG AA at their actual opacity and surface combinations.
  • Access, travel, ticket and membership information remains ordinary semantic HTML.

No JavaScript

With JavaScript disabled, the first production is complete and visible, including its photograph slot, title, dates, synopsis and price. All four shows remain readable in the season ledger. Reveal hiding only applies beneath the synchronous .has-js gate; if GSAP or ScrollTrigger is blocked, script.js removes that class and exposes the plain document.

Reduced motion

prefers-reduced-motion: reduce keeps every reveal target visible and changes production content immediately without curtain movement. The CSS fallback also removes transitions and forces the curtain panels open, so the page is complete from first paint.

Dependencies

To remove Lenis, delete its CDN tag in index.html and the optional Lenis block near the top of assets/script.js.

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

Your cart

Your cart is empty

The Vault £99

Everything in the catalogue, plus everything we release next.