A beautiful, responsive wedding website for Quốc Việt & Thanh Thủy's special day.
wedding-website/
│
├── index.html # Main HTML file with component placeholders
│
├── css/
│ ├── base.css # Core styles, variables, and resets
│ ├── navigation.css # Navigation styles
│ ├── hero.css # Hero section and countdown
│ ├── couple.css # Couple sections (intro and story)
│ ├── events.css # Event cards and details
│ ├── gallery.css # Gallery styles
│ ├── gallery-thumbnails.css # Facebook-style gallery navigation
│ ├── lightbox.css # Lightbox styling
│ ├── rsvp.css # RSVP form styles
│ └── footer.css # Footer styles
│
├── scripts/
│ ├── component-loader.js # Dynamic component loading
│ ├── i18n.js # International translation
│ ├── core.js # Core website initialization
│ ├── navigation.js # Navigation functionality
│ ├── countdown.js # Countdown timer
│ ├── gallery.js # Gallery management
│ ├── gallery-script.js # Enhanced gallery with thumbnail navigation
│ ├── lightbox.js # Image lightbox functionality
│ ├── lightbox-thumbnail.js # Fixes for lightbox thumbnail navigation
│ ├── couple.js # Couple section interactions
│ ├── events.js # Events section functionality
│ └── rsvp.js # RSVP form handling
│
├── components/ # Modular HTML components
│ ├── navbar.html # Navigation bar
│ ├── home.html # Hero and countdown sections
│ ├── couple-intro.html # Couple introduction
│ ├── couple.html # Couple love story
│ ├── events.html # Wedding events
│ ├── gallery.html # Photo gallery
│ ├── rsvp.html # RSVP form
│ └── footer.html # Page footer
│
│
└── images/ # Image assets
├── favicon/ # Favicon images
├── gallery/ # Photo gallery images
│ ├── journey/ # Pre-wedding journey photos
│ │ ├── thumbnails/ # Thumbnail versions (webp & jpg)
│ │ └── full/ # Full-size versions (webp & jpg)
│ ├── engagement/ # Engagement ceremony photos
│ │ ├── thumbnails/
│ │ └── full/
│ └── wedding/ # Wedding ceremony photos
│ ├── thumbnails/
│ └── full/
├── flags/ # Language flag icons
└── ... (other images)
- Modular component-based architecture
- Responsive design
- Dynamic content loading
- Interactive gallery with advanced features:
- Facebook-style thumbnail navigation
- Category tabs for different photo collections
- Lightbox with thumbnail strip for easy browsing
- Support for WebP images with fallbacks
- Lazy loading for improved performance
- RSVP form with Google Sheets integration
- Bilingual support (English/Vietnamese)
- Clone the repository
- Install Node.js and npm if you haven't already.
- Run
npm installto install dependencies. - Run
npm startto start a local development server. - Visit
http://localhost:8080in your browser.
- The website uses a component-based approach where each section is in its own HTML file.
- Components are loaded dynamically using the
component-loader.jsscript. - The website is designed to be fully responsive and works on all device sizes.
- Image placeholders are used during development and are replaced with actual photos as they load.
- Gallery features Facebook-style thumbnail navigation:
- Horizontal thumbnail strip below the gallery
- Thumbnails for quick navigation between images
- Active thumbnail highlighting
- Left/right navigation controls
- Enhanced lightbox with thumbnail navigation
- Support for WebP with fallbacks for older browsers
- To change wedding details, edit the relevant HTML components in the
componentsfolder. - To customize styles, edit the corresponding .css file in the
cssfolder. - To change functionality, edit the corresponding .js file in the
scriptsfolder. - To customize the gallery thumbnail navigation:
- Adjust the styles in
gallery-thumbnails.css - Modify the behavior in
gallery-thumbnail.js - Change thumbnail dimensions, colors, and animations
- Adjust the thumbnail strip width and positioning
- Adjust the styles in
The gallery features a sophisticated image browsing experience:
- Gallery Tabs: Navigate between different photo categories (Journey, Engagement, Wedding)
- Thumbnail Navigation: Facebook-style thumbnail strip for quick navigation
- Lazy Loading: Images load on-demand for better performance
- WebP Support: Modern image format with fallbacks for older browsers
- Lightbox Viewer: Full-screen image viewing experience with navigation controls
- Thumbnail Strip in Lightbox: Navigate through all images easily without closing the lightbox
For faster loading and better performance:
- WebP image format is used with fallbacks to JPG
- Lazy loading of images improves initial load time
- Thumbnail navigation uses optimized smaller images
- Resize images to optimize display and efficiency
- Use image compression to reduce file sizes
- Recommended ImageMagick command:
mogrify -resize "600x600>" -quality 80 *.jpg - For WebP conversion:
for file in *.jpg; do cwebp -q 80 "$file" -o "${file%.jpg}.webp"; done
The website has been tested and works well in:
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
- Mobile browsers (iOS Safari, Android Chrome)
- Fonts: Google Fonts (Dancing Script, Montserrat)
- Icons: Font Awesome 6
- Development: 2025
- Massive credit to LamVD[ICT-Gen4], DungNT[WEO-Gen7]