Lumiere Photography Portfolio Template

A beautifully crafted, single-page HTML template designed for photographers, studios, and creative professionals. Built with Bootstrap 4, jQuery, and modern CSS.

v1.0 HTML5 Bootstrap 4 jQuery Responsive

1. Overview

Lumiere (branded as Lumière Photography in the demo) is a single-page photography portfolio template. It is ideal for wedding photographers, portrait studios, editorial photographers, and creative agencies looking for a modern, elegant online presence.

Key Features

2. Getting Started

This template requires no build tools, no Node.js, and no package managers. Simply open index.html in a browser.

Quick Start

  1. Download the template and unzip the archive.
  2. Open the html/ folder — this is the project root.
  3. Open index.html directly in your browser, or serve it via a local server:
# Using Python
python -m http.server 8000

# Using Node.js (npx)
npx serve .

# Using VS Code
# Install the "Live Server" extension, then right-click index.html → "Open with Live Server"
Tip A local server is recommended for proper loading of fonts and external resources. Opening the file directly (file://) may cause CORS restrictions with some fonts.

3. File Structure

The template follows a clean, flat directory layout:

html/ ← project root
├── index.html ← main page
├── documentation.html ← this file
│
├── css/
│   ├── main.css ← primary custom styles (1623 lines)
│   ├── responsive.css ← media queries (129 lines)
│   ├── bootstrap.min.css ← Bootstrap 4 framework
│   ├── animate.min.css ← CSS animations library
│   ├── owl.carousel.css ← carousel styles
│   ├── nivo-slider.css ← hero slider styles
│   ├── swipebox.min.css ← lightbox styles
│   ├── slicknav.min.css ← mobile menu styles
│   ├── font-awesome.min.css ← Font Awesome icons
│   ├── themify-icons.css ← Themify icon set
│   ├── elegant-font-icons.css ← Elegant icons (arrows)
│   └── elegant-line-icons.css ← Elegant line icons
│
├── js/
│   ├── main.js ← custom JavaScript (141 lines)
│   └── vendor/
│       ├── jquery-1.12.4.min.js
│       ├── bootstrap.min.js
│       ├── tether.min.js
│       ├── jquery.slicknav.min.js
│       ├── owl.carousel.min.js
│       ├── jquery.nivo.slider.pack.js
│       ├── imagesloaded.pkgd.min.js
│       ├── jquery.isotope.v3.0.2.js
│       ├── smooth-scroll.min.js
│       ├── jquery.swipebox.min.js
│       ├── wow.min.js
│       ├── instafeed.min.js
│       └── modernizr-2.8.3-respond-1.4.2.min.js
│
├── img/ ← all image assets (41 files)
│   ├── slider-1.jpg .. slider-3.jpg ← hero slider
│   ├── pic-1.jpg .. pic-16.jpg ← portfolio images
│   ├── pricing-1.jpg .. pricing-4.jpg ← pricing cards
│   ├── testi-1.jpg .. testi-5.jpg ← testimonial avatars
│   ├── logo-light.svg / logo-dark.svg ← logos
│   ├── bg-shape-1..4.png ← decorative backgrounds
│   ├── sign.gif ← signature animation
│   └── favicon.png
│
└── fonts/ ← icon font files (22 files)
     ├── ElegantIcons (eot, svg, ttf, woff)
     ├── et-line (eot, svg, ttf, woff)
     ├── FontAwesome (otf, eot, svg, ttf, woff, woff2)
     ├── Glyphicons (eot, svg, ttf, woff)
     └── Themify (eot, svg, ttf, woff)

4. Technologies & Dependencies

All dependencies are included locally — no CDN or internet connection required.

Library Version Purpose
jQuery 1.12.4 DOM manipulation, event handling, plugin foundation
Bootstrap 4.x Grid system, utility classes, responsive layout
Tether — Positioning engine (Bootstrap dependency)
Nivo Slider — Hero image slider with fade transitions
Isotope 3.0.2 Filterable masonry portfolio grid
imagesLoaded — Ensures images are loaded before Isotope layout
OWL Carousel — Testimonials touch-friendly carousel
Swipebox — Lightbox / fullscreen image viewer
SlickNav — Responsive mobile navigation menu
Smooth Scroll — Animated scroll-to-section navigation
WOW.js — Scroll-triggered CSS animations
Animate.css — CSS animation library (used by WOW.js)
Modernizr 2.8.3 Feature detection for legacy browser support
Google Fonts — Poppins (body) & Unna (headings) — loaded via CSS import

Icon Libraries

Library CSS File Usage Example
Font Awesome font-awesome.min.css <i class="fa fa-facebook"></i>
Themify Icons themify-icons.css <i class="ti-zoom-in"></i>
Elegant Icons elegant-font-icons.css <i class="arrow_left"></i>
Elegant Line Icons elegant-line-icons.css Outline-style variants

5. HTML Structure

The page is a single HTML5 document (index.html, 667 lines) organized into sequential <section> blocks. The body uses Bootstrap scroll-spy: data-spy="scroll" data-target="#navmenu" data-offset="70".

Document Outline

<body data-spy="scroll" data-target="#navmenu">

  <!-- Preloader -->
  <div class="site-preloader-wrap">...</div>

  <!-- Header / Navigation -->
  <header id="header">...</header>

  <!-- Hero Slider -->
  <section id="home" class="slider-section">...</section>

  <!-- About -->
  <section id="about" class="about-section">...</section>

  <!-- Portfolio -->
  <section id="portfolio" class="portfolio-section">...</section>

  <!-- Testimonials -->
  <section id="reviews" class="testimonial-section">...</section>

  <!-- Pricing -->
  <section id="pricing" class="pricing-section">...</section>

  <!-- Call to Action -->
  <section class="cta-section">...</section>

  <!-- Instagram Feed -->
  <section class="instafeed-section">...</section>

  <!-- Footer Widgets -->
  <section class="widget-section">...</section>

  <!-- Footer -->
  <footer class="footer-section">...</footer>

  <!-- Scroll-to-top -->
  <a id="scroll-to-top">...</a>

  <!-- Scripts (loaded at end of body) -->
</body>

Navigation Links

The navbar contains four anchor links that smoothly scroll to their corresponding sections:

Nav Label Target ID Section
Home#homeHero Slider
About#aboutAbout Section
Portfolio#portfolioPortfolio Gallery
Pricing#pricingPricing Cards

6. CSS Architecture

Styles are split across 12 CSS files. Only two are custom; the rest are vendor/library files.

Custom Stylesheets

File Lines Description
main.css 1,623 All component styles organized by section (see table of contents inside file)
responsive.css 129 Media query overrides for all breakpoints

main.css Table of Contents

/*  1.0  Common Styles        — resets, helpers, preloader, buttons
    2.0  Header Section        — navbar, logo, sticky behavior
    3.0  Slider Section        — Nivo Slider, captions, animation
    4.0  About Section         — centered quote, signature
    5.0  Portfolio Section     — filter menu, masonry grid, overlays
    6.0  Testimonial Section   — carousel items, client thumbnails
    7.0  Pricing Section       — pricing cards, lists, price display
    8.0  CTA Section           — call-to-action banner
    9.0  Instafeed Section     — Instagram photo grid
    10.0 Widget Section        — footer widgets, social links
    11.0 Footer Section        — copyright bar
    12.0 Scroll To Top         — floating scroll button  */

Fonts

Google Fonts are loaded via a CSS @import at the top of main.css:

Font Weights Usage
Poppins400, 500Body text, buttons, labels
Unna400, 700Headings (h1–h6)

Color Palette

Primary / Headings #000000
Secondary Text #333333
Body Text #555555
Accent (Hover) #e4002b
Background #ffffff
Borders #eaeaea

Key Utility Classes

Class Effect
.padding80px vertical padding
.padding-5 to .padding-20All-side padding (5–20px)
.mb-10 to .mb-50Margin-bottom (10–50px, in 5px steps)
.mt-15 to .mt-40Margin-top (15–40px, in 5px steps)
.bd-top / .bd-bottom1px solid #eaeaea border
.bg-white / .bg-grey / .bg-darkBackground color helpers
.display-table + .table-cellVertical centering via display:table
.default-btnBlack button with white text, red on hover

7. JavaScript

All custom JS is in js/main.js (141 lines), wrapped in a jQuery IIFE with "use strict".

Script Loading Order

Scripts are loaded at the end of <body> in this specific order (dependencies first):

  1. jquery-1.12.4.min.js — core library
  2. bootstrap.min.js — Bootstrap components
  3. tether.min.js — positioning engine
  4. jquery.slicknav.min.js — mobile menu
  5. owl.carousel.min.js — carousel
  6. jquery.nivo.slider.pack.js — hero slider
  7. imagesloaded.pkgd.min.js — image load detection
  8. jquery.isotope.v3.0.2.js — masonry grid
  9. smooth-scroll.min.js — smooth scrolling
  10. jquery.swipebox.min.js — lightbox
  11. wow.min.js — scroll animations
  12. main.js — custom initialization
Important modernizr-2.8.3-respond-1.4.2.min.js is loaded in the <head> (not at end of body) to enable early feature detection for older browsers.

Feature Breakdown

Feature Plugin / Method Configuration
Preloader $(window).on('load') Adds loaded class to body, fading out the spinner via CSS
Sticky Header Scroll event listener Adds navbar-fixed-top class after scrolling 80px
Mobile Menu $.slicknav() Prepends hamburger menu to .header-section .navbar
Hero Slider $.nivoSlider() Fade effect, 5s pause, direction nav, no control nav
Portfolio Filter Isotope .isotope() Masonry layout, filter by data-filter attribute on menu items
Testimonial Carousel $.owlCarousel() Loop, autoplay, 800ms speed, arrow nav, 1 item all breakpoints
Smooth Scroll smoothScroll.init() 60px offset for fixed header
Copyright Year new Date().getFullYear() Auto-updates #currentYear in footer
Scroll Animations new WOW().init() Triggers Animate.css classes on scroll into view
Lightbox $.swipebox() Applied to all .lightbox links
Scroll-to-top Scroll event listener Shows/hides #scroll-to-top button after 100px scroll

8. Page Sections — Detailed Guide

8.1 Preloader

A full-screen white overlay with a pulsing circle spinner. It fades out when the window load event fires, by adding a .loaded class to the body.

8.2 Header / Navigation

A transparent navigation bar that becomes fixed and opaque (.navbar-fixed-top) after scrolling 80px. Contains:

8.3 Hero Slider

A full-width Nivo Slider with three slides. Each slide has an image and an HTML caption overlay containing:

Each element uses WOW.js animations (fadeInLeft, fadeInUp, fadeInRight) with staggered delays.

Adding a New Slide

<!-- 1. Add image to the #main-slider div -->
<img src="img/slider-4.jpg" alt="" title="#slider-caption-4" />

<!-- 2. Add caption div after existing captions -->
<div id="slider-caption-4" class="nivo-html-caption slider-caption">
  <div class="display-table">
    <div class="table-cell">
      <div class="container">
        <div class="slider-text text-center">
          <span>Your Category</span>
          <h1>Your Headline</h1>
          <p>Your tagline here</p>
        </div>
      </div>
    </div>
  </div>
</div>

8.4 About Section

A centered text block with a large quote, followed by an animated signature image (sign.gif). Uses an 8-column centered layout (col-lg-8 offset-lg-2).

8.5 Portfolio Section

The largest section, featuring:

Portfolio Filter Categories

Filter Label data-filter Value CSS Class on Item
All Work*—
Wedding.weddingwedding
Couples.cupplescupples
Portraits.portraitsportraits
Fashion.fashionfashion
Editorial.magazinemagazine

Adding a Portfolio Item

<div class="col-lg-3 col-sm-6 single-item padding-5 wedding portraits wow fadeInUp" data-wow-delay="0ms">
  <div class="portfolio-item">
    <img src="img/your-image.jpg" alt="Description">
    <div class="overlay">
      <div class="photo-content">
        <h3>Photo Title</h3>
        <span>Category Name</span>
      </div>
      <ul class="media-control">
        <li><a href="img/your-image.jpg" class="lightbox" rel="photo-gallery"><i class="ti-zoom-in"></i></a></li>
        <li><a href="#"><i class="ti-heart"></i></a></li>
        <li><a href="#"><i class="ti-download"></i></a></li>
      </ul>
    </div>
  </div>
</div>
Note Each portfolio item can belong to multiple categories. Just add multiple class names (e.g., wedding portraits fashion) separated by spaces.

8.6 Testimonials Section

A two-column layout: client thumbnail collage on the left (desktop only), OWL Carousel of reviews on the right. Each testimonial includes a quote, avatar image, name, and title.

Adding a Testimonial

<div class="testi-item">
  <p>Client quote text here.</p>
  <div class="testi-thumb">
    <img src="img/new-avatar.jpg" alt="Name">
    <h3>Client Name <span>Title / Role</span></h3>
  </div>
</div>

8.7 Pricing Section

Four pricing cards in a 4-column grid. Each card has:

Current Packages

Package Price Features
Portrait$1991 Photographer, 50 Edited Photos, 1.5 Hour Session
Family$3491 Photographer, 80 Edited Photos, 2 Hour Session
Corporate$7492 Photographers, 200 Edited Photos, 5 Hour Coverage
Wedding$2,4992 Photographers, 500+ Edited Photos, Full Day Coverage

8.8 Call to Action

A simple two-column row with a heading ("Ready to bring your vision to life?") and a "Get In Touch" button.

8.9 Instagram Feed

A grid of 8 portfolio images styled as an Instagram-like feed. The section title references the handle @lumiere.photography. Images link to their full-size versions.

8.10 Widget Section (Footer Area)

Three-column footer widget area:

8.11 Footer

A copyright bar with auto-updating year via JavaScript: © 2026 Lumière Photography. All Rights Reserved.

9. Customization Guide

9.1 Change Brand Name & Logo

  1. Replace img/logo-light.svg and img/logo-dark.svg with your own logo files
  2. Update the <title> tag in index.html
  3. Update <meta name="description"> and <meta name="author">
  4. Change footer text and widget-section description

9.2 Change Colors

The main colors to update in css/main.css:

/* Accent color (button hover, links) — search for #e4002b */
.default-btn:hover {
  background-color: #e4002b;  /* ← change this */
}

/* Primary button color — search for background-color: #000 */
.default-btn {
  background-color: #000;  /* ← change this */
}

/* Body text color */
body {
  color: #555;
}

/* Heading color */
h1, h2, h3, h4 {
  color: #000;
}

9.3 Change Fonts

Update the Google Fonts import at the top of main.css:

/* Current import */
@import url('https://fonts.googleapis.com/css?family=Poppins:400,500|Unna:400,700');

/* Then update the font-family declarations: */
body { font-family: 'Poppins', sans-serif; }
h1, h2, h3, h4, h5, h6 { font-family: 'Unna', sans-serif; }

9.4 Change Slider Settings

Edit the Nivo Slider configuration in js/main.js:

$('#main-slider').nivoSlider({
  effect: 'fade',        // Options: fade, sliceDown, sliceUp, etc.
  animSpeed: 300,        // Transition speed in ms
  pauseTime: 5000,       // Time between slides in ms
  directionNav: true,    // Show prev/next arrows
  controlNav: false,     // Show dot navigation
  pauseOnHover: true,    // Pause when mouse hovers
});

9.5 Change Social Media Links

Update the href attributes in the widget-section's social list:

<ul class="widget-social">
  <li><a href="https://facebook.com/your-page"><i class="fa fa-facebook"></i></a></li>
  <li><a href="https://twitter.com/your-handle"><i class="fa fa-twitter"></i></a></li>
  <li><a href="https://instagram.com/your-handle"><i class="fa fa-instagram"></i></a></li>
  ...
</ul>

9.6 Change Contact Information

Update the third widget column in the widget-section with your address, email, and phone number.

9.7 Add a New Navigation Link

<!-- In the #navmenu ul -->
<li><a data-scroll class="nav-link" href="#reviews">Reviews</a></li>
Tip The scroll-spy and smooth-scroll rely on section IDs. Make sure your nav link's href matches the target section's id attribute.

10. Image Assets

All images are stored in the img/ directory (41 files total).

File(s) Count Used In Notes
slider-1.jpg to slider-3.jpg3Hero sliderFull-width, high resolution recommended
pic-1.jpg to pic-16.jpg16Portfolio grid & Instagram feedSquare or 4:3 ratio preferred
pricing-1.jpg to pricing-4.jpg4Pricing cardsSmall header images
testi-1.jpg to testi-5.jpg5Testimonial sectionAvatar photos (small circle crops)
logo-light.svg / logo-dark.svg2Header & footerSVG for crisp display at any size
logo-light.png / logo-dark.png2Fallback logosPNG versions for older browsers
bg-shape-1.png to bg-shape-4.png4Background decorationsDecorative shapes used in CSS
sign.gif1About sectionAnimated signature
favicon.png1Browser tab16x16 or 32x32 recommended
icons.png / icons.svg2Swipebox lightboxLightbox UI icons
loader.gif1Nivo SliderLoading indicator for slides
Image Optimization For production, consider compressing images using tools like TinyPNG, Squoosh, or ImageOptim to improve page load performance. Aim for slider images under 300KB and portfolio images under 150KB.

11. Fonts & Icons

Web Fonts (Google Fonts)

Two Google Fonts are imported via CSS:

Icon Font Files

The fonts/ directory contains 22 icon font files across 5 font families:

Font Family Formats CSS File Common Icons Used
Font Awesome otf, eot, svg, ttf, woff, woff2 font-awesome.min.css Social icons: fa-facebook, fa-twitter, fa-instagram, fa-behance, fa-youtube
Themify eot, svg, ttf, woff themify-icons.css UI icons: ti-zoom-in, ti-heart, ti-download, ti-arrow-left, ti-location-pin, ti-email
Elegant Icons eot, svg, ttf, woff elegant-font-icons.css Navigation arrows: arrow_left, arrow_right, arrow_carrot-up
Elegant Line eot, svg, ttf, woff elegant-line-icons.css Outline-style icon variants
Glyphicons eot, svg, ttf, woff (via Bootstrap) Bootstrap default icons (included for compatibility)

12. Responsive Design

The template uses Bootstrap 4's grid system combined with custom media queries in responsive.css.

Breakpoints

Breakpoint Target Devices Key Changes
≤ 1024px Tablets (landscape) Reserved for minor tweaks
≤ 992px Tablets (portrait) CTA text centered, slider heading reduced to 66px
≤ 767px Mobile devices Reduced font sizes (body: 13px, h1: 30px, h2: 28px).
Desktop menu hidden; SlickNav mobile menu displayed.
Section padding reduced to 70px. Mid-content padding reset.
≤ 576px Small phones Slider subtitle hidden, reduced CTA padding, about heading resized
≤ 420px Very small phones Reserved breakpoint
≤ 380px Smallest devices Reserved breakpoint

Grid Behavior

13. Browser Support

The template includes IE conditional comments and Modernizr for broad browser compatibility.

Browser Support Level
Google Chrome (latest)Full support
Mozilla Firefox (latest)Full support
Safari (latest)Full support
Microsoft Edge (latest)Full support
Opera (latest)Full support
Internet Explorer 9+Basic support (via Modernizr + conditional classes)
Internet Explorer 8 and belowDegraded — browser upgrade message shown

Legacy Browser Features

14. Credits & License

Template

Third-Party Libraries

Library Website License
jQueryjquery.comMIT
Bootstrap 4getbootstrap.comMIT
Nivo Sliderthemeisle.com/plugins/nivo-sliderMIT
Isotopeisotope.metafizzy.coGPL v3 (open source) / Commercial
OWL Carouselowlcarousel2.github.ioMIT
Swipeboxbrutaldesign.github.io/swipeboxMIT
SlickNavslicknav.ioMIT
WOW.jswowjs.ukMIT
Animate.cssanimate.styleMIT
Smooth Scrollgithub.com/cferdinandi/smooth-scrollMIT
Font Awesomefontawesome.comSIL OFL 1.1 / MIT
Themify Iconsthemify.me/themify-iconsFree for use
Elegant Iconselegantthemes.comGPL v2
Google Fonts (Poppins, Unna)fonts.google.comSIL OFL 1.1
Modernizrmodernizr.comMIT
Note on Isotope Isotope by Metafizzy is free for open-source projects (GPL v3 license) but requires a commercial license for commercial use. Visit isotope.metafizzy.co/license for details.

Lumiere Photography Portfolio Template — Documentation

Generated February 2026