Skip to content

Footer with Newsletter

Dark Bootstrap 5 footer with a newsletter signup panel, email validation, social icons, three link columns and a legal bar.

Bootstrap 5 Footers Responsive Dark #dark #footer #form #newsletter #responsive

Live preview

Open in new tab

Code

A dark Bootstrap 5 site footer that combines a newsletter signup panel with brand info, social links, three link columns and a legal bar. Use it at the bottom of SaaS sites, product landing pages and blogs where you want to collect subscribers without a separate section.

How it works

The root is footer.fn-footer, which defines its own palette with CSS custom properties and contains a Bootstrap container. At the top, .fn-signup is a rounded gradient panel split into two columns at the lg breakpoint: the pitch text on the left and form.fn-form on the right. The form uses a Bootstrap input-group with an icon, the email field and the .fn-submit button, followed by a consent checkbox, a help line and the .fn-status message.

Below the panel, the .fn-links row holds the brand block (logo mark, short text and the round .fn-social icon links) and three nav columns: Product, Company and Resources. The grid stacks to two columns on phones and expands to the full row on large screens. .fn-bottom closes the footer with the copyright line and legal links.

The script runs on DOMContentLoaded for every .fn-footer. It writes the current year into .fn-year, then handles the form submit event: it adds Bootstrap's was-validated class, updates aria-invalid and aria-describedby, and moves focus to the first invalid field. Valid submissions show a spinner, change the button label to "Subscribing…", and after a 900 ms timeout display a confirmation in .fn-status and reset the form. Without JavaScript the links still work, but the form has no submit handling.

Customization

  • --fn-accent in .fn-footer: changes the teal used by the button, eyebrow text, focus outlines, checkbox and link hover.
  • --fn-bg and --fn-surface in .fn-footer: set the footer background and the starting color of the .fn-signup gradient.
  • The window.setTimeout call in script.js: replace it with fetch() to your newsletter provider and show .fn-status when the request resolves.
  • offset-lg-2 on the Product column: remove it to pull the link columns closer to the brand block.
  • .fn-badge on the Careers link: reuse it next to any link to highlight new pages, or delete it.
  • padding: 3rem 0 1.5rem in .fn-footer: increase it for a roomier footer on long landing pages.

Accessibility

The footer has a visually hidden heading, and each link column is a nav labelled by its own heading through aria-labelledby. Social icons are links with descriptive aria-label values and hidden icons. The email field has a visually hidden label, an aria-describedby help text and aria-invalid that tracks the field state. The submit button gets aria-disabled instead of disabled while sending, so focus is not lost. .fn-status is a polite live region, links and buttons have a visible teal outline on :focus-visible, and the link color transition is turned off for prefers-reduced-motion.

Usage notes

Requires Bootstrap 5 (loaded automatically) and Bootstrap Icons. If you place several footers on one page, change the ids such as fn-email and fn-consent so they stay unique.

Requirements

Add these to your page (already included in the download):

  • <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css">
  • <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
  • <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css">
Footer with Newsletter – Bootstrap 5 footers component screenshot
Footer with Newsletter · Bootstrap 5 Footers

More Footers

Multi-Column Footer – Tailwind CSS footers preview

Multi-Column Footer

Dark Tailwind CSS website footer with brand block, social icons, four labelled link columns and a bottom bar with copyright and status.