Ashion is a fashion e-commerce website template for clothing and accessories stores, built on Bootstrap 5. The layout is responsive and mobile-ready, with a drop-down menu, an off-canvas menu on smaller screens and a search overlay on every page. There are nine pages: home, shop, category, product, cart, checkout, blog, blog post and contact.
The home page has category tiles, a new products grid you can filter by category, a banner slider, hot trend, best seller and featured product lists, a sale countdown, a services row and an Instagram photo strip. The shop and category pages have a product grid with sidebar filters for category, price, size and colour, and the category page adds a hero and a sort menu. The product page has a photo gallery with thumbnails, size, colour and quantity choices, description, specification and review tabs and related products. You will also find a cart with quantity steppers and a coupon form, a checkout page with billing details, an order summary and payment choices, a blog, a blog post with comments and a sidebar, and a contact page with a working contact form and a map that loads on click. Ashion gives you a ready-made front end for a clothing store, to connect to your own shop platform.
What’s new in 3.0
Bootstrap 5.3.8 and plain JavaScript with no jQuery, as in 2.x. Bootstrap now loads from the template’s own files instead of a CDN, and its script only on the shop, category and product pages, which use it. The product filter, the map and the forms use small built-in modules, GLightbox, which loaded on every page with nothing to open, is gone, and the header, off-canvas menu, footer and search are the same on every page (2.x had three different versions). Lucide SVG icons and a 3.3 KB subset of 11 social and payment logos replace the full Font Awesome 7.1 kit and ElegantIcons. npm run build (Dart Sass and esbuild) compiles one minified stylesheet and one script, and the download includes the Sass source again (the sass folder in the 2.x download was empty).
Lighter pages: the home page went from 1.3 MB and 58 requests to 660 KB and 42 requests, and the contact page from 3.2 MB and 64 requests to 441 KB and 16 requests. Every photo has an AVIF version with the JPEG or PNG as the fallback, written into the markup (2.x swapped in WebP copies with JavaScript after the page had loaded), with real dimensions and lazy loading below the first screen, and the first large photo is preloaded. The full-screen preloader, the WebP copies, unused images and a folder of third-party plugin downloads the template did not use are gone. The download went from 5.5 MB to 2.7 MB.
No third-party requests: Montserrat and Cookie are self-hosted, the contact map is an OpenStreetMap map (no API key needed) that loads only when a visitor clicks “Show map”, and a Google Analytics 4 snippet stays commented out until you add your own ID. Before, every page loaded Bootstrap, Font Awesome and GLightbox from jsDelivr and its web fonts from Google Fonts, six pages loaded Google Analytics, and the contact page loaded a Google Maps embed of about 2 MB with the page.
Working forms: the contact form sends through php/send-email.php and the footer newsletter form through php/subscribe.php, with validation, a spam trap and an in-page message, and the coupon and checkout forms validate and answer in the page, ready to connect to your shop. Before, the contact, checkout and newsletter forms posted to “#”, so nothing could be sent.
Accessibility: a skip link and a main landmark on every page, one h1 per page (the home page had four and the other pages none), real buttons for the menu, search, filters, wishlist and slider dots, a Pages submenu that opens from the keyboard (before, it could not), an off-canvas menu that keeps keyboard focus inside while open, closes with Esc and leaves the Tab order when closed, checkout checkboxes and payment choices that can be reached by keyboard, names on icon-only links and buttons, visible focus rings, a banner slider that pauses on hover and focus and stops under reduced motion, and WCAG AA text contrast, with darker greys for breadcrumbs, dates and old prices, darker text on the category tiles and a darker green for the “New” label.
Fixed: the product page’s Description tab was empty (a script hid its panel) and now shows the description; the category accordion in the shop and category sidebars never opened (it does now); the product thumbnails opened a different photo from the one they showed (the first two were swapped); the category page’s hero was a grey band because its image was missing (it now shows a photo); wishlist, cart, login and footer links that went nowhere now open the cart, the checkout’s account fields or the matching pages; and “Men’s” opened the women’s collection (it now opens the shop).
Demo content: fictional journal headlines and new text for the journal post, a product page that describes the shirt in its photos, fictional reviews, address, phone and email, current dates, and photos that showed brand logos are replaced with Unsplash photos or retouched.