SolutionsCase StudiesAI ToolsResourcesAboutContact
Get Your Free AI Automation Audit Book a Free 30-Minute Strategy Call
Playground~/frontend Open editor

~/css/footers

8 CSS Footers

7 Pure CSS1 with JSPublished 2026-10-04Free · no sign-up

Eight footers for different kinds of sites: link columns with a brand blurb, a newsletter-first footer, a minimal one-line footer, a call-to-action band, a local business footer with contact details and hours, a mobile accordion footer, a big wordmark footer and a dense sitemap grid.

01. Multi-Column Site Footer

FooterNavigation

A classic footer with a brand blurb and three link columns, each a nav landmark with its own label. The columns use auto-fit grid so they wrap naturally on smaller screens, and the bottom bar holds the copyright line and legal links.

View code
<footer class="fc">
  <div class="top">
    <div class="brand"><b>Clayworks</b><p>Small-batch ceramics from a two-person studio.</p></div>
    <nav aria-label="Shop"><h2>Shop</h2><ul><li><a href="#">New in</a></li><li><a href="#">Kitchen</a></li><li><a href="#">Gift cards</a></li></ul></nav>
    <nav aria-label="Help"><h2>Help</h2><ul><li><a href="#">Shipping</a></li><li><a href="#">Returns</a></li><li><a href="#">Contact</a></li></ul></nav>
    <nav aria-label="Studio"><h2>Studio</h2><ul><li><a href="#">About</a></li><li><a href="#">Workshops</a></li><li><a href="#">Journal</a></li></ul></nav>
  </div>
  <div class="bot"><p>&copy; 2026 Clayworks</p><a href="#">Privacy</a><a href="#">Terms</a></div>
</footer>
.fc { box-sizing: border-box; max-width: 100%; width: min(720px, 96vw); padding: 28px; border-radius: 18px; background: #0b0d14; color: #aab3c7; font: 14px Inter, system-ui, sans-serif; }
.top { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 24px; }
.brand b { color: #fff; font-size: 17px; }
.brand p { margin: 8px 0 0; line-height: 1.55; }
.fc h2 { margin: 0 0 10px; color: #fff; font-size: 13px; letter-spacing: .08em; text-transform: uppercase; }
.fc ul { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }
.fc a { color: #aab3c7; text-decoration: none; }
.fc a:hover { color: #fff; }
.fc a:focus-visible { outline: 2px solid #7c9cff; outline-offset: 2px; }
.bot { display: flex; flex-wrap: wrap; gap: 16px; margin-top: 26px; padding-top: 16px; border-top: 1px solid #1e2433; }
.bot p { margin: 0 auto 0 0; }

02. Footer with Newsletter Signup

FooterForm

A footer that leads with a newsletter form above the link rows. The email field has a visible label, the form and links are separated by a rule, and social links are text links with clear names rather than unlabeled icons.

View code
<footer class="fn">
  <form onsubmit="event.preventDefault()">
    <div><h2>Stories from the studio</h2><p>One email a month. New pieces first.</p></div>
    <label for="fn-e">Email</label>
    <div class="row"><input id="fn-e" type="email" autocomplete="email"><button>Subscribe</button></div>
  </form>
  <nav aria-label="Footer"><a href="#">Shop</a><a href="#">About</a><a href="#">Stockists</a><a href="#">Instagram</a><a href="#">Pinterest</a></nav>
</footer>
.fn { box-sizing: border-box; max-width: 100%; width: min(640px, 96vw); padding: 26px; border-radius: 18px; background: #fff; box-shadow: 0 8px 26px -14px rgba(16,24,40,.3); font: 14px Inter, system-ui, sans-serif; color: #475467; }
.fn form { display: grid; gap: 8px; padding-bottom: 20px; border-bottom: 1px solid #eef0f4; }
.fn h2 { margin: 0; color: #101828; font-size: 19px; }
.fn p { margin: 4px 0 6px; }
.fn label { color: #344054; font-weight: 600; }
.row { display: flex; flex-wrap: wrap; gap: 8px; }
.row input { flex: 1 1 160px; }
.row input { flex: 1; min-width: 0; padding: 11px 12px; border: 1.5px solid #d0d5dd; border-radius: 10px; font: 15px Inter, sans-serif; outline: none; }
.row input:focus { border-color: #b45309; box-shadow: 0 0 0 3px rgba(180,83,9,.15); }
.row button { padding: 11px 16px; border: 0; border-radius: 10px; background: #101828; color: #fff; font: 700 14px Inter, sans-serif; cursor: pointer; }
.fn nav { display: flex; flex-wrap: wrap; gap: 18px; padding-top: 18px; }
.fn nav a { color: #344054; font-weight: 600; text-decoration: none; }
.fn nav a:hover { color: #101828; text-decoration: underline; }
.fn a:focus-visible { outline: 2px solid #b45309; outline-offset: 2px; }

03. Minimal One-Line Footer

FooterMinimal

The smallest useful footer: copyright on the left and three links on the right, collapsing to centred lines on phones. It suits portfolios and app pages where the main navigation already lives in the header.

View code
<footer class="fm"><p>&copy; 2026 Ada Studio</p><nav aria-label="Footer"><a href="#">Privacy</a><a href="#">Imprint</a><a href="#">Email</a></nav></footer>
.fm { box-sizing: border-box; max-width: 100%; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; width: min(640px, 96vw); padding: 18px 22px; border-top: 1px solid #262d3e; color: #9aa4b8; font: 14px Inter, system-ui, sans-serif; }
.fm p { margin: 0; }
.fm nav { display: flex; gap: 18px; }
.fm a { color: #c9d1e2; text-decoration: none; }
.fm a:hover { color: #fff; }
.fm a:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
@media (max-width: 460px) { .fm { justify-content: center; text-align: center; } }

04. Footer with Call-to-Action Band

FooterCTA

A footer that opens with a bold call-to-action band, then the usual links. Ending pages with one clear next step gives readers who scrolled to the bottom somewhere to go, and the band uses the brand colour with high-contrast text.

View code
<footer class="fcta">
  <div class="band"><h2>Ready to open your shop?</h2><a href="#">Start your free trial</a></div>
  <div class="links"><a href="#">Pricing</a><a href="#">Templates</a><a href="#">Help centre</a><a href="#">Status</a></div>
  <p>&copy; 2026 Harbor Commerce</p>
</footer>
.fcta { box-sizing: border-box; max-width: 100%; width: min(660px, 96vw); overflow: hidden; border-radius: 20px; background: #101828; color: #98a2b3; font: 14px Inter, system-ui, sans-serif; }
.band { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 14px; padding: 26px; background: #4f46e5; }
.band h2 { margin: 0; color: #fff; font-size: 22px; }
.band a { padding: 11px 16px; border-radius: 10px; background: #fff; color: #312e81; font-weight: 800; text-decoration: none; }
.links { display: flex; flex-wrap: wrap; gap: 20px; padding: 20px 26px 10px; }
.links a { color: #e4e7ec; text-decoration: none; }
.links a:hover { text-decoration: underline; }
.fcta a:focus-visible { outline: 2px solid #c7d2fe; outline-offset: 2px; }
.fcta p { margin: 0; padding: 10px 26px 22px; }

05. Large Footer with Contact Details

FooterContact

A footer for local businesses that combines contact details in an address element, opening hours in a description list and link columns. The phone number is a tel: link and the email a mailto: link, so both work with one tap on phones.

View code
<footer class="fx">
  <address><b>Bramble Bakery</b><br>14 Mill Lane, Bristol BS1 4AA<br><a href="tel:+441170000000">0117 000 0000</a><br><a href="mailto:hello@example.com">hello@example.com</a></address>
  <div><h2>Opening hours</h2><dl><dt>Mon to Fri</dt><dd>7am to 4pm</dd><dt>Sat</dt><dd>8am to 2pm</dd><dt>Sun</dt><dd>Closed</dd></dl></div>
  <nav aria-label="Footer"><h2>Visit</h2><ul><li><a href="#">Menu</a></li><li><a href="#">Order ahead</a></li><li><a href="#">Wholesale</a></li></ul></nav>
</footer>
.fx { box-sizing: border-box; max-width: 100%; display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 24px; width: min(700px, 96vw); padding: 26px; border-radius: 18px; background: #1c1410; color: #d6c7b8; font: 14px/1.7 Inter, system-ui, sans-serif; }
.fx address { font-style: normal; }
.fx b { color: #fff; font-size: 16px; }
.fx h2 { margin: 0 0 6px; color: #fff; font-size: 13px; letter-spacing: .08em; text-transform: uppercase; }
.fx dl { display: grid; grid-template-columns: auto 1fr; gap: 0 12px; margin: 0; }
.fx dd { margin: 0; color: #fff; }
.fx ul { margin: 0; padding: 0; list-style: none; }
.fx a { color: #fbbf77; text-decoration: none; }
.fx a:hover { text-decoration: underline; }
.fx a:focus-visible { outline: 2px solid #fbbf77; outline-offset: 2px; }

06. Mobile Accordion Footer

FooterResponsive

On phones, long footer link groups become collapsible sections using details elements, which keeps the page short; on wide screens they open as normal columns. A tiny script sets the open state based on the screen width.

View code
<footer class="fa">
  <details open><summary>Products</summary><ul><li><a href="#">Store builder</a></li><li><a href="#">Payments</a></li><li><a href="#">Shipping</a></li></ul></details>
  <details open><summary>Company</summary><ul><li><a href="#">About</a></li><li><a href="#">Careers</a></li><li><a href="#">Press</a></li></ul></details>
  <details open><summary>Support</summary><ul><li><a href="#">Help centre</a></li><li><a href="#">Status</a></li><li><a href="#">Contact</a></li></ul></details>
</footer>
.fa { box-sizing: border-box; max-width: 100%; display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; width: min(620px, 96vw); padding: 22px; border-radius: 16px; background: #fff; box-shadow: 0 8px 26px -14px rgba(16,24,40,.3); font: 14px Inter, system-ui, sans-serif; }
.fa summary { color: #101828; font-weight: 700; cursor: pointer; list-style: none; }
.fa summary::-webkit-details-marker { display: none; }
.fa ul { display: grid; gap: 8px; margin: 10px 0 0; padding: 0; list-style: none; }
.fa a { color: #475467; text-decoration: none; }
.fa a:hover { color: #101828; }
.fa a:focus-visible, .fa summary:focus-visible { outline: 2px solid #2563eb; outline-offset: 2px; }
@media (max-width: 560px) {
  .fa { grid-template-columns: 1fr; gap: 0; }
  .fa details { border-bottom: 1px solid #eef0f4; padding: 12px 0; }
  .fa summary { display: flex; justify-content: space-between; }
  .fa summary::after { content: "+"; color: #2563eb; }
  .fa details[open] summary::after { content: "\2212"; }
}
const mq = matchMedia('(max-width: 560px)');
function fit() { document.querySelectorAll('.fa details').forEach(d => d.open = !mq.matches); }
mq.addEventListener('change', fit);
fit();

07. Gradient Footer with Big Logo

FooterBrand

A brand-led footer with an oversized wordmark that fills the width using clamp(), set above a short row of links. The wordmark is decorative and hidden from screen readers because the brand name already appears in text in the bottom bar.

View code
<footer class="fg">
  <nav aria-label="Footer"><a href="#">Work</a><a href="#">Services</a><a href="#">Journal</a><a href="#">Contact</a></nav>
  <p class="word" aria-hidden="true">northwave</p>
  <p class="cp">&copy; 2026 Northwave Studio, Lisbon</p>
</footer>
.fg { box-sizing: border-box; max-width: 100%; width: min(720px, 96vw); padding: 24px 24px 18px; overflow: hidden; border-radius: 20px; background: radial-gradient(circle at 20% 0%, #4c1d95, transparent 55%), radial-gradient(circle at 90% 100%, #0e7490, transparent 50%), #0b0d14; color: #c9d1e2; font-family: Inter, system-ui, sans-serif; }
.fg nav { display: flex; flex-wrap: wrap; gap: 20px; font-size: 14px; }
.fg a { color: #e7ebf5; text-decoration: none; }
.fg a:hover { text-decoration: underline; }
.fg a:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
.word { margin: 18px 0 6px; color: transparent; font-size: clamp(54px, 15vw, 128px); font-weight: 900; line-height: .9; letter-spacing: -.05em; -webkit-text-stroke: 1.5px rgba(255,255,255,.5); }
.cp { margin: 0; color: #9aa4b8; font-size: 13px; }

08. Footer Sitemap Grid

FooterSEO

A dense footer sitemap for large stores, with five short columns of links under small headings and a back-to-top link. Each heading labels its own list, and the grid shrinks columns before wrapping so links stay in a readable order.

View code
<footer class="fs">
  <nav aria-label="Site map">
    <div><h2>Kitchen</h2><ul><li><a href="#">Mugs</a></li><li><a href="#">Bowls</a></li><li><a href="#">Plates</a></li></ul></div>
    <div><h2>Living</h2><ul><li><a href="#">Vases</a></li><li><a href="#">Throws</a></li><li><a href="#">Lighting</a></li></ul></div>
    <div><h2>Garden</h2><ul><li><a href="#">Planters</a></li><li><a href="#">Tools</a></li></ul></div>
    <div><h2>Help</h2><ul><li><a href="#">Delivery</a></li><li><a href="#">Returns</a></li><li><a href="#">FAQ</a></li></ul></div>
    <div><h2>About</h2><ul><li><a href="#">Story</a></li><li><a href="#">Makers</a></li></ul></div>
  </nav>
  <a href="#" class="top">Back to top &uarr;</a>
</footer>
.fs { box-sizing: border-box; max-width: 100%; width: min(700px, 96vw); padding: 24px; border-radius: 16px; background: #f9fafb; border: 1px solid #e4e7ec; font: 13.5px Inter, system-ui, sans-serif; }
.fs nav { display: grid; grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); gap: 20px; }
.fs h2 { margin: 0 0 8px; color: #101828; font-size: 13px; }
.fs ul { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; }
.fs a { color: #475467; text-decoration: none; }
.fs a:hover { color: #101828; text-decoration: underline; }
.fs a:focus-visible { outline: 2px solid #2563eb; outline-offset: 2px; }
.top { display: inline-block; margin-top: 20px; color: #101828 !important; font-weight: 700; }

About these CSS Footers

Use the footer element

Wrap the footer in <footer> so it becomes the page's contentinfo landmark. If it holds several groups of links, wrap each in a <nav> with its own aria-label so screen reader users can tell them apart.

Contact details that work

Put addresses in an <address> element, phone numbers in tel: links and emails in mailto: links, so phones can call or write with one tap.

Columns that wrap

grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) lays link columns side by side and wraps them as space runs out, without media queries.

Short pages on phones

Long footers can be collapsed into details sections on small screens, as the accordion demo does, and kept open on desktops where there is room.

Frequently asked questions

What should a footer include?

Contact details, key links, legal links such as privacy and terms, and the copyright line. Avoid stuffing it with keyword links.

Do these footers need JavaScript?

Only the mobile accordion footer, to open sections on wide screens.

Should social links be icons?

Icons are fine if each link has an accessible name. The newsletter demo uses plain text links.