Overview
A loud, street, pop-art HTML template for New York slice shops, pizzerias and pizza bars with events. Sliceria ships three home pages, a light and a dark theme, right-to-left support, and slice-shop logic that is worked out rather than typed in: what is out of the oven right now at every shop, deals that run by the hour, whole pies to order for pickup or delivery, an events calendar with seats left and tickets, back-room parties priced live, and six locations with open now and a borough filter.
What’s included
- 3 home pages, each with its own scroll moment: the split-flap slice board flips to the next pie out of the oven, a slice pulls away from the pie with its cheese stretching, the comic strip of a pizza class lays itself out panel by panel
- Comic Panels preloader: three halftone panels slam in, the last one fills the screen and lifts away
- Bar Wipe reveals (a tomato-red bar sweeps across each photo), burst badges that pop, a comic burst behind every price on hover
- Light and dark mode on one switch in every header, remembered between visits and applied before the page paints
- Right-to-left stylesheets and a flag language picker in every header: a right-to-left language turns any page around
- WebGL layers — Spray Paint over brick in the night bands and a pizza slice spinning in flat comic shading in the footer — tinted by the theme colours
- Out Of The Oven: a live split-flap board per shop; the menu with dietary chips and search; whole pies with extra toppings and pickup slots
- The bag: codes that work only inside their hours, pickup at any shop or delivery by ZIP and borough, tip, NYC tax, order number
- Events calendar with seats left, a four-step ticket wizard, private parties with a live estimate
- Locations with a borough filter and open now, gallery, crew, history timeline, FAQ with search, blog with six post formats, account, coming soon, 404
- Fully responsive; clean, commented HTML5, CSS and JavaScript
Getting Started
Thank you for choosing Sliceria. Follow the steps below to get your site live.
1. Open locally
Unzip the downloaded package and open sliceria/index.html in any modern browser (Chrome, Firefox, Edge,
Safari). No build tools or server are required — the slice board, the bag, checkout, the calendar, tickets and the
party estimate all work straight from the files.
2. Deploy to a server
Upload the contents of the sliceria/ folder to your hosting provider using an FTP client (such as FileZilla)
or your hosting control panel. Once uploaded, navigate to your domain and the template will load immediately.
3. Customise
All custom styling lives in assets/css/style.css (with a numbered Table of CSS at the top) and
assets/css/responsive.css. Colours and fonts are controlled by CSS variables — see
Colors & Fonts. The slices, ovens, shops, hours, deals, events and prices live in one place
— see Slice Shop Logic.
assets/img/ with your own photography at the
same dimensions for the best result. The pies in img/pies/ sit on a transparent ground (PNG): keep yours
transparent too, so they float on the cards and the night hero.
File Structure
Below is an overview of the key files and folders included in this template.
index.html / homepage-2.html / homepage-3.html | Three home pages: Slice Shop (the split-flap slice board), Pizzeria & Pies (the slice pull with its cheese stretch), Events & Nights (the comic strip) |
slices.html | Out Of The Oven: the full slice board for any shop, from the clock |
menu.html | The whole menu: category tabs, dietary chips (all must match), search, slice and pie prices, the deals by the hour |
pies.html / pie-details.html / cart.html / checkout.html / wishlist.html | Whole pies: filters, sort and search; a pie with extra toppings and its next pickup; the bag with codes by the hour; checkout with pickup slots or delivery by ZIP, tip and tax; wishlist |
events.html / event-details.html | The events calendar (month grid, kind and shop filters, seats left) and the four-step ticket wizard |
private-parties.html | The back rooms: packages, the live estimate and the four-step request |
locations.html / location-details.html | Six shops with a borough filter and open now; one shop’s page with its own live board, hours and map |
about.html / history.html | The shop’s story (a comic page of panels) and the history timeline |
team.html / team-details.html | The crew and a crew profile |
gallery.html | Gallery with filters and a lightbox, Instagram grid |
faq.html | Questions by topic with search |
account.html / login.html / register.html / forgot-password.html | My account (orders and event tickets) and the sign-in pages |
blog.html / blog-grid.html / blog-details.html | Blog list with six post formats and a sidebar, blog grid, an article with comments |
contact.html | Contact cards, a map, the contact form and the six counters |
coming-soon.html / 404.html | Countdown to the next shop, error page |
sendmail.php | AJAX mail handler for the contact and comment forms (see Contact Form) |
assets/css/style.css | All custom styles, numbered Table of CSS (21 sections) |
assets/css/responsive.css | Desktop-first breakpoints 1399 / 1199 / 991 / 767 / 575, plus wide screens from 1600 and 1960 |
assets/css/style.rtl.css / responsive.rtl.css | The right-to-left twins (see RTL) |
assets/css/plugins/ | Bootstrap (LTR and RTL), Swiper, Fancybox (vendor CSS) |
assets/js/main.js | All custom scripts, numbered JS INDEX (35 blocks) |
assets/js/plugins/ | jQuery, Bootstrap, Swiper, Fancybox, GSAP, ScrollTrigger |
assets/img/ | Images, one folder per kind (see Images) |
assets/fonts/theme-icons/ | The sun and moon of the theme switch, loaded locally |
assets/webfonts/ + assets/css/fontawesome-all.css | Font Awesome Free, loaded locally |
Folder Structure
The package unzips to two folders: Documentation/ (this guide) and sliceria/, the template.
Every page sits in the template’s root; everything the pages load sits under assets/:
sliceria/
├── *.html the 31 pages, all in the root (see File Structure)
├── sendmail.php the AJAX mail handler for the forms
└── assets/
├── css/
│ ├── style.css all custom styles, numbered Table of CSS
│ ├── style.rtl.css the right-to-left twin of style.css
│ ├── responsive.css breakpoints 1399 / 1199 / 991 / 767 / 575
│ ├── responsive.rtl.css the right-to-left twin of responsive.css
│ ├── fontawesome-all.css Font Awesome Free, loaded locally
│ └── plugins/ vendor stylesheets
│ ├── bootstrap.min.css
│ ├── bootstrap.rtl.min.css Bootstrap for right-to-left pages
│ ├── jquery.fancybox.min.css
│ └── swiper-bundle.min.css
├── js/
│ ├── main.js all custom scripts, numbered JS INDEX (35 blocks)
│ └── plugins/ vendor scripts
│ ├── bootstrap.bundle.min.js
│ ├── gsap.min.js
│ ├── jquery-3.7.1.min.js
│ ├── jquery.fancybox.min.js
│ ├── ScrollTrigger.min.js
│ └── swiper-bundle.min.js
├── fonts/
│ └── theme-icons/ the sun and moon of the theme switch
├── webfonts/ Font Awesome Free font files
└── img/ images, one folder per kind
├── art/ 8 files
├── banner/ 6 files
├── flags/ 6 files
├── food/ 24 files
├── icons/ 30 files
├── logo/ 3 files
├── menu/ 3 files
├── people/ 7 files
├── pies/ 16 files
└── place/ 16 files
To publish the site, upload the contents of sliceria/ to your web root. Photos keep their folder,
file name and size when you replace them, so no page needs editing.
Colors & Fonts
The whole design is driven by CSS variables declared at the top of style.css. Change a token once and every
section, button and card updates. Colours used with transparency have an -rgb twin (for example
--sl-red-rgb) — change both together.
--sl-red--sl-red-text--sl-gold--sl-gold-text--sl-basil--sl-ink--sl-night--sl-bg--sl-soft--sl-surface--sl-heading--sl-textTomato red fills the buttons, the Ben-Day dot bands and the Bar Wipe, always with white text. Mustard fills the burst badges
and the display words on night; on the cream page small mustard text uses the deeper mustard text colour. Basil is kept for
the logo and the open-now light. --sl-bg, --sl-surface, --sl-soft,
--sl-heading and --sl-text are the semantic names the components use — the dark theme swaps
those (see Light & Dark Mode). --sl-frame draws the comic panels’ ink frames
and their hard shadow; --sl-burst is the burst star’s shape.
Fonts
Two Google Fonts are loaded in the head of each page: Oswald (every heading, the menu, buttons, prices and
the split-flap tiles, in capitals) and Open Sans (body text). Swap them by editing the Google Fonts link and
the --sl-ff-head / --sl-ff-body variables. The misprint (a hard offset in a second ink behind the
display titles) is the class sl-print.
Logo
The logo is “Sliceria” in a green brush script with a small red NYC over the S and a slice for the first i’s
dot. It ships as ready-made PNG files in assets/img/logo/:
logo.png— for light grounds: the cream headerlogo-light.png— for dark grounds: the night headers of Home 2 and Home 3, the footer, dark mode, the preloaderfavicon.png— the browser tab icon
The logo’s lettering appears only inside the images — the pages do not load its font.
Light & Dark Mode
Every header (and the mobile menu) has a theme switch. The choice is saved in the browser under the key
sliceria-theme and applied by a one-line script in the <head> before the page paints, so a
dark visitor never sees a light flash. The switch sets data-theme="dark" on the <html> tag.
--sl-bg--sl-surface--sl-soft--sl-heading--sl-red-text--sl-gold-text- Tokens — the dark values sit in one block,
[data-theme="dark"] { … }, right after:rootinstyle.css. Change a dark colour there. The comic frames turn cream in the dark. - Bands that stay dark — sections with the class
is-night(the slice board band, the back-room nights, the comic strip, the footer) are dark in both themes; the red dot bandsis-redkeep their red. - The slice board — the split-flap board is a dark board in both themes, like the real thing.
- Start dark — to open the site dark for first-time visitors, add
data-theme="dark"to the<html>tag of each page; the switch still works and is still remembered.
Slice Shop Logic
The figures on every page come from one data block, JS block 09 Slice Data near the
top of main.js (var SLICE). Edit it once and the board, the cards, the calendar, the prices and the
totals follow. Prices are in US dollars; times are minutes after midnight (a late close past midnight runs on, so 1500 is
1:00 am).
shops / boroughs / opening | Six shops with their borough, weekly hours, phone, map, seats and back room; the five boroughs (Staten Island is next); the next shop’s opening day (the coming-soon countdown). |
slices / pieSlices / rushes | Every slice type once: a slice price, a whole-pie price, its oven cycle (first, every), a daily cap for the specials, how fast it sells (sell, minutes a slice) and the rushes that sell faster (lunch, dinner, late night). |
extras / cats / diets | Sides, sweets and drinks; the menu’s categories and dietary marks (veg, vegan, spicy). |
toppings / pieLead / pieOfDay | Extra toppings for a whole pie, the minutes a pie takes from order to pickup (25), and the pie of the day by weekday ($3 off). |
deals | Each deal’s weekdays and hours (a late window runs past midnight), its online code and rule: percent off the order, perpie dollars off every whole pie, or off dollars over a minimum. |
zones | Delivery by ZIP range: each borough’s fee, minimum and minutes to the door. Anywhere else is pickup. |
events / ticketExtras / ticketAhead | Each kind of night with its weekly slots, shop, ticket price, what a ticket includes and the seats a night; ticket extras per ticket or per order; how far ahead tickets open (56 days). |
parties | The back rooms with their size and hourly hire, the packages a head, extras a head or a party, the discounts by headcount and the deposit. |
crew / shop | The crew; NYC tax (8.875%), the tip choices and where orders and tickets are kept. |
The ovens
Plain Cheese | $3.50 a slice, $24.00 a pie · first pie 0 min after opening, then every 15 min |
Pepperoni | $4.25 a slice, $28.00 a pie · first pie 5 min after opening, then every 20 min |
Grandma Square | $4.50 a slice, $30.00 a pie · first pie 20 min after opening, then every 40 min · 10 pies a day |
Sicilian Square | $4.50 a slice, $32.00 a pie · first pie 30 min after opening, then every 45 min · 8 pies a day |
White Pie | $4.75 a slice, $31.00 a pie · first pie 10 min after opening, then every 30 min |
Vodka Sauce | $4.75 a slice, $31.00 a pie · first pie 15 min after opening, then every 30 min |
Margherita | $4.25 a slice, $28.00 a pie · first pie 8 min after opening, then every 25 min |
Hot Honey Soppressata | $5.25 a slice, $34.00 a pie · first pie 25 min after opening, then every 35 min · 12 pies a day |
Buffalo Chicken | $5.00 a slice, $33.00 a pie · first pie 35 min after opening, then every 40 min |
Veggie Supreme | $4.75 a slice, $31.00 a pie · first pie 40 min after opening, then every 35 min |
Mushroom & Truffle | $5.50 a slice, $36.00 a pie · first pie 45 min after opening, then every 50 min · 6 pies a day |
Pesto & Ricotta | $4.75 a slice, $31.00 a pie · first pie 50 min after opening, then every 45 min |
Arugula & Parm | $5.00 a slice, $33.00 a pie · first pie 55 min after opening, then every 45 min |
Brunch Slice | $5.50 a slice, $36.00 a pie · first pie 0 min after opening, then every 30 min · weekends till 2:00 pm |
How the board reads the clock
At a shop that is open, every slice’s pies come out on its own cycle from the opening, until an hour before closing. The board shows the last pie out, the slices left of it (eight a pie, sold at the slice’s pace, faster in the rushes), Just Out for the first few minutes, Next when a pie is sold out and another is due, and Sold Out when a capped special is gone for the day.
How an order totals
LUNCH15 takes 15% off (−$7.50).
Delivery to Brooklyn $3.49, tax 8.875% $3.77, a 15% tip $6.38 — $56.14, at the door in
about 35 minutes after the pie is out.The bag, the wishlist, the code, the orders and the tickets are kept in the browser (localStorage), so they
follow the visitor from page to page and the account page lists them. The first visit starts with a small demo bag so every
order page has something to show; to start empty, set the demo list in doShop() (block
28 Order Engine) to []. Checkout, tickets, the party request and the account
forms confirm on screen with a reference — connect them to your own systems to take real orders.
Events and tickets
Every night comes from its weekly slots. The seats taken on a night are worked out from its date (fuller as the night gets
closer) plus the visitor’s own tickets, so the calendar, the cards, the tonight strip and the wizard always agree; to
use your own box office, replace seatsOf() (block 23 Events Calendar). Continue
never blocks; Confirm checks the details.
WebGL Layers
Two small WebGL shaders draw the moving layers: spray — soft spray-can colour clouds drifting over a faint brick wall at the night bands’ edges, breaking into speckle — and the slice — a pizza slice spinning on its long axis in flat comic shading (halftone dots on the shaded side, an ink rim) over a turning burst, in the footer. Both are flat 2D shapes, light to run. Each is one canvas:
<canvas class="sl-gl" data-gl="spray" aria-hidden="true"></canvas>
- Colours — each layer reads three colours and an opacity from CSS variables on its canvas or
section:
--gl-1(the brick),--gl-2and--gl-3(the paint), and--gl-alpha. - Performance — a layer only runs while its section is on screen and the tab is visible. Visitors who prefer reduced motion get one still frame. Without WebGL, the section’s own background shows.
- Remove one — delete the canvas; nothing else depends on it.
RTL (Right To Left)
Sliceria is RTL-ready: the layout with its paddings and margins, the sliders and the animations all mirror. Right to
left comes from the stylesheets, not from separate pages: the language picker (a flag and a code) in the top bar and the
mobile menu lists the languages that read left to right and right to left. Choosing Arabic stores the language and the
direction (keys sliceria-lang and sliceria-dir) and reloads; the one-line script in <head>
then sets dir="rtl" and swaps the three stylesheets for the files named in their data-rtl
attribute before the page paints. Nothing is translated — you bring your own right-to-left copy. To make a page
right to left for good:
1. Set The Direction
<html lang="en" class="no-js" dir="rtl">
2. Swap Three Stylesheets
assets/css/plugins/bootstrap.min.css | → assets/css/plugins/bootstrap.rtl.min.css |
assets/css/style.css | → assets/css/style.rtl.css |
assets/css/responsive.css | → assets/css/responsive.rtl.css |
The scripts read the direction from the dir attribute: the sliders, the Bar Wipe and the comic strip run the
other way on their own. The split-flap tiles and the month calendar keep reading left to right.
style.rtl.css and responsive.rtl.css are mirrored
twins of the LTR files, made with RTLCSS. A few hand-made rules at the end of style.rtl.css keep what must not
mirror. If you change style.css, regenerate the twin with npx rtlcss style.css style.rtl.css and copy
the closing block back.JavaScript Guide
All custom behaviour lives in assets/js/main.js, wrapped in a jQuery IIFE and organised into 35 numbered
blocks (see the JS INDEX comment at the top of the file):
- 01–08 — Preloader, Sticky Header, Offcanvas Menu, Scroll Reveals, Back To Top, Anchor Scroll, Light & Dark Mode, Direction, WebGL Layers. The core every page shares: the Comic Panels preloader, the header, the Bar Wipe reveals, the theme and direction switch and the WebGL layers.
- 09–10 — Slice Data, Shop Clock. Slice Data holds every price, oven cycle, shop, event and rule; Shop Clock works out open now at every shop, the deals on now and the pie of the day.
- 11–19 — Custom Select, Rating Meters, Hero Sliders, Card Sliders, Accordion, Filter Tabs, Grid Search, Newsletter, Choice Cards. Shared components: selects, bars, sliders, accordions, filters, search, newsletter, choice cards.
- 20–35 — Slice Board, Slice Pull, Comic Strip, Events Calendar, Menu Filters, Locations, Party Estimator, Contact Form, Order Engine, Account Forms, Tabs, Article Tools, Demo Forms, Launch Countdown, My Account, FAQ Search. The niche engines and pages: the slice board, the slice pull, the comic strip, the events calendar and tickets, menu filters, locations, the party estimate, contact, the order engine, accounts, tabs, articles, forms, countdown, FAQ.
Each block is a self-contained doSomething() function that safely skips pages where its section is not
present — you can delete any block you do not need. Every animation respects prefers-reduced-motion:
content appears in its final state and the scroll moments rest in place.
sl-wipe to a photo holder so a tomato-red bar sweeps across it and
leaves the photo uncovered, sl-rise to a title, paragraph or card so it rises softly, sl-pop to a burst
or badge so it pops once its card has landed, and sl-fade to a long block. data-delay="0.2" staggers
any of them.data-board (its value a shop’s slug,
or a shop picker inside it) holding rows made by the slice list; Home 1’s board also carries data-board-scroll
so its headline flips through the oven’s queue as the section travels. None of the scroll moments pins the page.SLICE.opening — the next one each year, so there is no date to keep updating.Images
The download package ships with neutral placeholder images so you can see every layout at the correct dimensions.
Replace them with your own photos using the same file names, or update the src attributes. Images are
grouped inside assets/img/:
img/art/ | Sliceria’s drawn art: the comic slice (preloader, 404), the brush-script words behind titles, and a pop-art drawing — 8 files: 848×824, 1646×785, 1384×571, 1337×637, 1053×579, … |
img/banner/ | Wide page-title banners and photo bands — 6 files: 2560×675, 2822×1179, 2809×1287 |
img/flags/ | The language picker’s flags (SVG, included) — 6 files: SVG |
img/food/ | Slice and pie photography: menu thumbnails, cards, bands — 24 files: 800×800, 800×650, 1300×800, 650×508, 1380×1070, … |
img/icons/ | Line icons, each in an ink and a cream version — 30 files: 128×128 |
img/logo/ | Logo, light logo and favicon — 3 files: 287×120, 64×64 |
img/menu/ | Home previews in the mega menu — 3 files: 560×350 |
img/people/ | Crew portraits and reviewer faces — 7 files: 800×800, 300×300, 110×110, 1531×1145, 1038×1038 |
img/pies/ | Whole pies from above on a transparent ground, plus the slice-pull pieces — 16 files: 868×868, 388×388, 410×410, 531×531, 405×405, … |
img/place/ | The shops, the city and the nights — 16 files: 1300×800, 2445×946, 1037×804, 1387×1076, 2102×1294, … |
The logo files, the comic slice, the brush-script words, the line icons and the language flags are included and ready to use. All demo photography shown on the live preview is for preview purposes only and is not included in the download.
Contact Form
The contact form and the comment form post to sendmail.php, a lightweight AJAX mail handler. The success
or error message appears under the button without reloading the page. The newsletter, tickets, party request, checkout,
account, login, register and forgot-password forms are demo forms: they confirm on screen and are ready to connect to your
own systems. To activate the mail handler on your server:
1. Set your email address
$email = 'example@example.com';
2. Upload to a PHP host
The form needs a server with PHP mail() support (virtually every shared host). It will not send from your
local computer or from a static-only host — there the form shows a friendly “upload to a PHP-enabled
host” notice instead.
3. Optional: enable Google reCAPTCHA v3
Invisible reCAPTCHA v3 spam protection is already built into the handler. It stays dormant until the form submits a token. To switch it on:
- Create v3 keys (a site key and a secret key) for your domain in the Google reCAPTCHA admin console
- In
sendmail.php, replaceYOUR_RECAPTCHA_V3_SECRET_KEYwith your secret key - In
contact.html, add a hidden token field inside the form and load the reCAPTCHA script with your site key just before</body>:
<!-- inside the form -->
<input type="hidden" name="g-recaptcha-response" id="g-recaptcha-response">
<!-- before the closing </body> tag -->
<script src="https://www.google.com/recaptcha/api.js?render=YOUR_SITE_KEY"></script>
<script>
grecaptcha.ready(function () {
grecaptcha.execute('YOUR_SITE_KEY', { action: 'contact' }).then(function (token) {
document.getElementById('g-recaptcha-response').value = token;
});
});
</script>
Once the token field is present, sendmail.php verifies every submission with Google and rejects low-score
(bot) requests.
Credits
This template is built using the following open-source libraries and resources.
- Bootstrap 5.3.3
- jQuery 3.7.1
- Swiper 11
- GSAP 3 + ScrollTrigger
- Fancybox 3.5
- Font Awesome Free
- RTLCSS
- Google Fonts: Oswald, Open Sans
- Logo lettering: Kaushan Script
All plugin files and icon fonts are loaded locally. The only external requests are the Google Fonts stylesheet, the Google Maps embeds and the video popup.
Support
If you have any questions or need help with the template, please reach out through the marketplace where you purchased the template: open the item there and send us your question from its support page. We aim to respond within 24–48 hours.