006
AI ready Refreshed

Clothing Brand Template

£29 View live demo or the whole Vault, £79.20

Includes the original v1 design as a separate download.

A six-page clothing brand website: hand-lettered paper stickers over full-bleed photography, a shop filtered by fit and wash, a product page where you drag the jeans through two years of wear, and a bag page. Worked example: a selvage denim workshop in Leith with free repairs for life.

ScrollTriggerDraggableInertiaPlugin intermediate
12 more details
Flip draggablemomentumflip-filtercrossfadebefore-aftersvg-line-drawscroll-revealstaggerscrubkeyboard-navigationprogressive-enhancement

Updated

About this template

A six-page website for a clothing brand with a material story. Its voice is hand-lettered: words on torn paper stickers slapped over full-bleed photography, pen notes drawn onto the product, a cool concrete-grey ground, indigo pictures and one stitch-orange accent. Two web fonts do the hand-lettering, so every sticker is real, selectable text.

Read the full template overview

Every page has something to handle. Home and the inner heroes let you peel the stickers off the photograph and re-stick them. The shop filters by fit and wash, and the grid reflows with Flip. The product page has a wear-in slider: drag a rivet from day 1 to year 2 and the same pair of jeans fades photo by photo while handwritten notes point out whiskers, knee fades and the first free repair. Repairs has a before and after knee and a repair ticket where you tap the jeans to mark what has gone. The story page has a draggable lookbook. The bag page lists what you added with quantity steppers and a total on a stitched paper ticket; a removed line peels off like a sticker.

Pryce Denim Works, a fictional selvage denim workshop in Leith, Edinburgh, is the worked example. Swap the photographs, stage names and copy and the same pages sell boots with resoling for life, waxed jackets with rewaxing, knitwear with darning, leather bags or outdoor gear.

Clothing Brand Template - website template preview

What's included

10 items
  • Six static pages: home, shop, product, repairs, story and bag, with ordinary page loads and a short cross-document fade
  • Torn-paper sticker headlines in a hand-drawn web font over full-bleed photographs; drag them off and re-stick them with a mouse
  • Wear-in slider on a native range input: four photographs of the same garment crossfade as you drag, and pen notes draw themselves on at each stage
  • Product page laid out like a spec sheet: handwritten notes and arrows on the flat-lay, size chips, Add to bag and care notes
  • Bag page: line items with photo, size tag and quantity stepper, subtotal, free-delivery threshold and total on a paper ticket, a demo checkout, and one-click picks to fill an empty bag
  • Shop grid filtered by fit and wash, reflowed with Flip, with a count line and an empty state
  • Fit guide that draws each leg shape and swaps its measurements
  • Before and after comparison on a range input, plus a repair ticket builder that circles the damaged spots on a jean outline
  • Draggable lookbook rail with momentum, arrow buttons and a photo that opens from its own thumbnail
  • Reduced motion steps the slider through its four stages; with JavaScript off the stages show as a captioned row and every page stays complete

Perfect for

4 use cases
  • Clothing and denim brands selling a small, considered range
  • Workwear, boots and leather goods with a repair or care promise
  • Knitwear, outerwear and outdoor gear that ages with use
  • Independent fashion shops that want personality rather than a stock theme

How it works

6 sections

Pages and the sticker system

Six plain HTML pages share one stylesheet and one script, and each feature looks for its own markup, so pages and sections can be removed. A sticker is a span of real text with a torn-edge clip and a slight rotation; three edge shapes keep neighbours from matching. Stickers slap on in sequence when a page loads, and with a mouse they can be dragged and thrown with Draggable and Inertia.

Wear-in slider

A native range input drives four stacked photographs of the same garment taken at the same framing. Dragging blends between neighbouring stages; releasing settles on the nearest one. Each handwritten note carries the stage at which it appears, and its arrow is drawn on as the slider passes. Arrow keys step a whole stage at a time, and the value text reads the stage aloud.

Shop and fit guide

Products carry their fit and wash as data attributes. Chips set either filter and Flip animates the grid from its old layout to the new one, holding the grid's height so the page below does not jump. The fit guide swaps four leg outlines and their measurements from a small table in the script.

Repairs

The before and after view is a full-size invisible range input over two matched photographs, so it works with mouse, touch and keyboard. The repair ticket is a front end only: tapping a spot circles it on the jean outline and writes the summary in pen.

Bag

The bag is a front end kept in sessionStorage for the visitor's tab. Each line stores the product, size, price, photo and quantity, and the same product in the same size adds up. The bag page builds its lines from that list, recalculates delivery and the total on every change, and peels a removed line off the page like a sticker while the total ticks to its new value.

Fallbacks

Without JavaScript the wear stages show as a row of captioned photographs, the comparison as two side-by-side images and the rails as native scrollers. Reduced motion removes the drawing and crossfades and keeps every control working.

Plugins ScrollTrigger, Draggable, InertiaPlugin, Flip
Difficulty Intermediate
Includes HTML + JS + CSS source, documentation, AI setup prompt, lifetime updates

Lighthouse, as measured

Google Lighthouse on this template's demo (6 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 kinds of shops does this clothing template suit?

Any apparel or goods brand whose products change with use: selvage denim, boots that get resoled, waxed jackets that get rewaxed, knitwear that gets darned, leather bags or outdoor kit. The worked example is a Leith denim workshop, but the sticker headlines, product spec sheet and repair pages fit a fashion store, a workwear label or an independent clothing shop with copy and photos changed.

What photographs does the wear-in slider need?

Four photographs of the same item at four ages, shot from the same height, angle and framing on the same backdrop, in a 4:5 portrait frame. Name them in the four figure elements of the wear section and rewrite the captions. The notes are positioned in percentages of the photo, so move each note and arrow to point at your own details, or remove the ones you do not need.

Does the bag or the repair ticket take orders?

No. Both are unwired front ends. The bag keeps products, sizes and quantities in the visitor's own tab, shows delivery and a total, and its checkout button says nothing is charged; the repair ticket collects a garment, damaged spots, a delivery route, name and email, and shows a demo reference without sending anything. Connect the bag to Shopify Buy Button, Snipcart or Stripe Checkout, and the ticket to Formspree, Netlify Forms or your workshop's CRM.

How do I add more products and filters to the shop?

Copy one product link in the shop grid and set its data-fit and data-wash attributes. Each filter chip names a group and a value, so a new fit or wash is one more chip with a matching value. Product names, prices and tags are plain HTML. The fit guide's measurements live in one small table at the top of its function in the script.

Can I change the hand-lettered look or the stickers?

Yes. The sticker words are ordinary text in Sedgwick Ave Display and the pen notes are Kalam, both from Google Fonts, so you edit them like any heading. Swap the two font variables for another marker or handwriting face. Each sticker takes a rotation and one of three torn-edge shapes, and the paper, ink and stitch-orange colours are tokens at the top of the stylesheet.

Is there a newsletter signup, and where does it go?

The footer has an email field on every page. Like the other forms it is a static front end that shows a thank-you line and sends nothing. Point its form action at Mailchimp, Buttondown, ConvertKit or a Formspree endpoint, or replace it with your provider's embed code.

Paid template

Purchase to unlock the code.

Buying Clothing Brand 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.

£29 Standard license, unlimited projects

Browse free effects

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

Documentation

Quick Start

Upload the folder to any static host and open index.html. Keep the six HTML files beside assets/ so relative links keep working. There is no build step, framework or package to install.

Pages load normally. In browsers that support cross-document view transitions the change between pages is a short fade (off under reduced motion); elsewhere it is an ordinary page load.

GSAP with ScrollTrigger, Draggable, InertiaPlugin and Flip load from a CDN. Images, fonts, styles and the script are bundled locally.

Using It With Your Own Design

  1. Photographs. Replace the files in assets/img/ (see Images and Credits). Heroes and bands are full-bleed, so any landscape photo of at least 1600px works; set the focal point with the --pos style on each hero <img>. Each hero also has a narrower portrait crop for phones (hero-*-m.webp, in the <source> above its <img>), so phones download about half the pixels; replace both, or delete the <source> to use the one photo everywhere. The product photo and the story page's founders photo have smaller rungs (forth-day1-760.webp, look-moto-680.webp) in their srcset for the same reason.
  2. Sticker words. Every hero headline is a stack of .sticker spans inside the h1. Change the words, the --r rotation and the edge shape (sticker--b, sticker--c). Pen notes are .sticker--pen.
  3. Products. The shop grid is plain links with data-fit and data-wash; the product page is one hand-written spec sheet. Rename "Forth", change prices and sizes in the HTML.
  4. Wear-in slider. Supply four photographs of the same item at four ages (see Wear-in slider).
  5. Identity. Replace "Pryce", the round SVG mark (repeated in each page's nav and footer so each page stands alone, and in assets/favicon.svg), the address and the footer promise.
  6. Colour and type. Edit the tokens at the top of assets/style.css (see Palette).

Everything visual lives in assets/style.css; everything interactive lives in assets/script.js, one function per feature that returns early when its markup is absent. Delete a section or a page and the rest keeps working.

Pages and Configuration

File Content
index.html Sticker hero over a full-bleed photo, the fits rail, a repair band, a four-stage wear teaser, a lookbook collage on indigo, the visit card over a place photo
shop.html Sticker hero, the range with fit and wash filters, the fit guide, a repair band
product.html Spec-sheet product: details left, the annotated photo centre, sizes and Add to bag right; the wear-in slider; on-body photos; a repair band
repairs.html Sticker hero, four repair steps, the before and after knee, the repair ticket, a quote and repair FAQs
story.html Sticker hero, founders panel over a photo, a timeline on a stitched thread, the lookbook rail with a photo viewer, the indigo chapter, the visit card
bag.html The demo bag: line items with quantity steppers, the total on a stitched paper ticket with delivery and a demo checkout, three picks to fill an empty bag, a repair band

Hooks you will meet in the markup:

  • data-peel-area around a set of data-peel stickers, and data-restick on the button that puts them back. Peeling is for mouse users on wider screens; touch scrolls the page as usual.
  • data-rail on a horizontal scroller, with data-rail-prev and data-rail-next buttons in the same section.
  • data-item with data-fit and data-wash in data-grid; chips carry data-filter (the group) and data-value.
  • data-fitguide: data-fit-tab buttons and data-leg outlines share keys; the measurements are the FITS table in initFitGuide.
  • data-wear: four figure[data-stage], notes with data-at (the stage at which they appear), and data-wear-range.
  • data-compare with data-compare-range; data-jean-map with data-spot buttons and matching data-ring paths; data-ticket on the form.
  • data-look buttons and the data-lightbox dialog on the story page.
  • data-buy on the product form, carrying the product as data-id, data-name, data-wash, data-price and data-img; data-bag-add buttons with the same attributes plus data-size; data-bag-page around the bag page and data-bag-count on each nav count.
  • data-reveal, data-reveal-group and data-hero-fade for the gentle entrances; data-drift for the slow drift on photo bands.
  • data-slap on a hero .sticker (and the hero button) slaps it on in CSS from the first frame, without waiting for the script; --i sets its place in the stagger. Keep it on the inner .sticker, not the .sticker-wrap that a peel drags.

Stickers

A sticker is ordinary text: a .sticker span with paper background and a torn-edge clip-path (--tear-a, --tear-b or --tear-c in the tokens), wrapped in a .sticker-wrap that carries the drop shadow (a clip would cut it off). Headline stickers are always paper with ink, so they stay readable over any photograph you choose. Under 760px wide, long sticker lines wrap onto two lines rather than overflowing.

Wear-in Slider

The slider is a native <input type="range"> from 0 to 3, so mouse, touch, keyboard and screen readers get real slider behaviour. Dragging crossfades between neighbouring photographs; letting go settles on the nearest stage. Arrow keys, Page Up and Page Down step a whole stage, Home and End jump to day 1 and year 2, and the four labels below the track are buttons. The spoken value is the stage name and its caption.

Shoot the four photographs from the same height, angle and framing on the same backdrop, 4:5 portrait. Put them in the four figure[data-stage] elements in order and rewrite the figcaption of each: the caption becomes the line under the stage name and the text read aloud. Each note is a .wear-note with data-at and a position in percent of the photo, paired in order with an arrow path with the same data-at in the SVG (its viewBox is 100 by 125, the photo's proportions). Move them to point at your own details.

With JavaScript off the four stages appear as a row of captioned photographs. Under reduced motion the slider steps between stages without crossfades and the notes appear without drawing.

Bag

The bag is a front end only: it never charges, reserves stock or sends anything. It lives in sessionStorage under pryce-demo-bag, so it lasts for the visitor's current tab. Each line is { id, name, wash, size, price, img, qty }; adding the same id and size again raises the quantity. The nav shows "Bag" with a count on every page and links to bag.html.

  • Adding. The product page's Add to bag reads the product from the data- attributes on its data-buy form and the chosen waist and leg, then says what went in with a link to the bag. The picks on an empty bag page are data-bag-add buttons with a fixed size; copy one to add a pick.
  • The bag page. Each line has a photo, a size tag, the wash, the unit price, a quantity stepper (native buttons, 1 to 9) and Remove. The ticket shows the subtotal, UK delivery and the total. Delivery is free over £150 and £6 below that: FREE_DELIVERY_OVER and DELIVERY at the top of the bag code in assets/script.js. Check out shows an in-place notice that nothing was charged.
  • Motion. A removed line peels off like a sticker and the gap closes; the total ticks to its new value. Under reduced motion both happen instantly.
  • Without JavaScript the bag page says the bag needs JavaScript and links to the shop and three products; the Add buttons and nav count are hidden.

To take real orders, replace the bag with your cart provider and keep the page as its design:

  • Shopify Buy Button: create the products in Shopify, then point Add to bag at the Buy Button SDK's cart.addVariants and open its cart from the nav link, or swap bag.html for its embedded cart.
  • Snipcart: add snipcart-add-item with data-item-id, -name, -price, -url and -image to the Add buttons (the same values are already on them), and give the nav link the class snipcart-checkout.
  • Stripe Checkout: send the bag array to a small server function that creates a Checkout Session with matching price IDs, then redirect the Check out button to the session URL. Never trust prices sent from the browser.

Forms

The repair ticket and the newsletter field are static front ends. The repair ticket collects a garment, the marked spots, a delivery route, a name and an email, then shows a demo reference without sending anything. Connect them to Formspree, Netlify Forms, your mailing list provider or your CRM.

Palette

Token Default Purpose
--concrete #CDCDC8 Cool grey page ground
--concrete-deep #B9BAB5 Alternate bands
--paper #F6F6F2 Stickers, nav tags, cards
--ink #16181F All text on grey and paper
--indigo #1F2A4A Dark bands and the footer
--stitch #E8692A The one accent: stitch lines, buttons, the slider rivet, focus ring

Each colour has an -rgb triple for translucent values. Ink is 11.1:1 on the ground and 16.4:1 on paper; secondary text (ink at 78%) is at least 5.7:1 on every grey; paper on indigo is 13.0:1; ink on the orange buttons is 5.5:1. The orange is never used for text on grey or paper.

Type is Sedgwick Ave Display (hand-drawn capitals) for stickers and headings, Kalam for pen notes and Public Sans for everything else.

Accessibility and Fallbacks

  • One h1 per page, a skip link, visible keyboard focus (not shown after mouse clicks), real links and native controls: buttons with aria-pressed, two range inputs with spoken value text, radio size chips, labelled form fields.
  • Sticker headlines are real text in the heading; the decorative footer promise is hidden from screen readers because it repeats the hero.
  • The lookbook viewer is a native <dialog>: Escape closes it and focus returns to the photo that opened it.
  • Reduced motion: no entrances or drift, stickers do not slap on, the slider steps between stages, Flip reflows instantly, lines appear without drawing, view transitions are off.
  • No JavaScript or a blocked CDN: all content is visible, the wear stages and the before and after appear side by side, rails scroll natively, the filter chips and bag count are hidden, and the bag page explains that it needs JavaScript.

Dependencies

The demo is pinned to GSAP 3.15.0 with ScrollTrigger, Draggable, InertiaPlugin and Flip. Compatibility floor: GSAP 3.12+, with core and plugins on matching versions. Without Draggable, InertiaPlugin or Flip the matching feature degrades: stickers stay put, rails stop without momentum, the grid filters without animating.

Images and Credits

The download contains cropped, graded WebP derivatives in assets/img/, baked from assets/img-manifest.json (masters of the generated images are in assets/img-src/). Replace them directly, keeping the names and proportions, or change the paths in the HTML.

The garments are AI-generated (Codex image generation) for this template: the four wear stages forth-day1, forth-month3, forth-year1, forth-year2; the flat-lays alder-raw, forth-raw, shore-rinse, kirk-worn, bonnington-ecru, granton-raw, granton-ecru, overshirt-black; and the repair pair repair-before, repair-after, which illustrates a typical repair rather than a customer's jeans. Pryce is fictional; replace these with photographs of your own products.

Other photography is licensed through Pexels, which permits use in website templates. It shows real places and unrelated people, not Pryce's staff or customers.

Fonts

All three families are self-hosted in assets/fonts/ as the latin woff2 files Google Fonts serves, declared by the @font-face rules at the top of assets/style.css, so the pages make no font requests to another site: Sedgwick Ave Display (stickers and display), Kalam 400 and 700 (pen notes) and Public Sans (body; a variable font, one file for 400 and 600). The hero faces, Sedgwick Ave Display and Kalam 400, are preloaded in each page's <head>.

Licence: SIL Open Font License 1.1, full text and copyright lines in assets/fonts/OFL.txt (Kalam: Copyright 2014 Indian Type Foundry; Public Sans: Copyright 2015 The Public Sans Project Authors; Sedgwick Ave Display: Copyright 2017 The Sedgwick Ave Project Authors). Keep that file with the fonts. To use Google Fonts instead, delete the @font-face rules and the two font preloads and add the Google Fonts <link> to the <head>.

File Source Subject
hero-home.webp, hero-home-m.webp Pexels 2077968 Man in dark jeans and a navy shirt on a red-brick street
hero-shop.webp Pexels 8432842 Cuffed jeans and leather boots on a kerb
hero-repairs.webp Pexels 32641555 Hands feeding denim under a machine foot
hero-story.webp, look-stairs.webp Pexels 37364458 Man in a denim jacket leaning on a stair rail
band-mend.webp Pexels 6770990 Hands guiding dark denim at a sewing machine
leith-shore.webp Pexels 34481755 The Water of Leith at the Shore
step-cut.webp Pexels 5830641 Cutting dark denim with shears
step-patch.webp Pexels 7998342 A denim patch under an industrial machine
bench-portrait.webp Pexels 15777445 Woman at a denim workbench
onbody-forth.webp Pexels 37691190 Raw straight jeans with turn-ups on grass
onbody-cuffs.webp Pexels 30156818 Deep turn-ups over yellow boots
detail-hem.webp Pexels 4109758 Indigo hem with gold stitching
detail-fly.webp Pexels 13976002 Faded button fly with copper buttons
indigo-vat.webp Pexels 6850844 Cloth lifted from an indigo vat
look-tiles.webp Pexels 36607477 Man in dark denim against a tiled wall
look-beard.webp Pexels 10250421 Bearded man in a denim jacket, low sun
look-street.webp Pexels 8113600 Man in an indigo jacket crossing a street
look-door.webp Pexels 31240958 Woman in flared jeans before a navy door
look-mug.webp Pexels 40266432 Woman in high-waisted jeans holding a mug
look-moto.webp Pexels 5192333 Man in a chore coat and raw jeans on a motorbike

The manifest records each source, crop, size and grade, so you can export matching WebP files from your own photographs.

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