Skip to content

Instantly share code, notes, and snippets.

@BjornDCode
Created February 3, 2020 11:58
Show Gist options
  • Star 82 You must be signed in to star a gist
  • Fork 10 You must be signed in to fork a gist
  • Save BjornDCode/5cb836a6b23638d6d02f5cb6ed59a04a to your computer and use it in GitHub Desktop.
Save BjornDCode/5cb836a6b23638d6d02f5cb6ed59a04a to your computer and use it in GitHub Desktop.
Tailwind - Fixed sidebar, scrollable content
// Source: https://twitter.com/calebporzio/status/1151876736931549185
<div class="flex">
<aside class="h-screen sticky top-0">
// Fixed Sidebar
</aside>
<main>
// Content
</main>
</div>
@ruiaraujo012
Copy link

ruiaraujo012 commented Jun 21, 2023

This works perfectly, but it doesn't work with a fixed navbar.
With a bit of research, I managed to make it work:

<nav class="fixed bottom-[calc(100vh-theme(spacing.16))] left-0 right-0 top-0 bg-blue-200">Nav</nav>

<div class="flex min-h-screen">
  <aside class="sticky top-16 h-[calc(100vh-theme(spacing.16))] w-40 overflow-y-auto bg-green-200">
    <ul>
      <li>A</li>
      <li>B</li>
      <li>C</li>
    </ul>
  </aside>

  <main class="mt-16 flex-1 bg-yellow-200">
    <p>content</p>
  </main>
</div>

image

@damywise
Copy link

damywise commented Jul 3, 2023

This works perfectly, but it doesn't work with a fixed navbar. With a bit of research, I managed to make it work:

<nav class="fixed bottom-[calc(100vh-theme(spacing.16))] left-0 right-0 top-0 bg-blue-200">Nav</nav>

<div class="flex min-h-screen">
  <aside class="sticky top-16 h-[calc(100vh-theme(spacing.16))] w-40 overflow-y-auto bg-green-200">
    <ul>
      <li>A</li>
      <li>B</li>
      <li>C</li>
    </ul>
  </aside>

  <main class="mt-16 flex-1 bg-yellow-200">
    <p>content</p>
  </main>
</div>

@ruiaraujo012 Thank you so much for sharing!

@shubham-lohar
Copy link

This works perfectly, but it doesn't work with a fixed navbar. With a bit of research, I managed to make it work:

<nav class="fixed bottom-[calc(100vh-theme(spacing.16))] left-0 right-0 top-0 bg-blue-200">Nav</nav>

<div class="flex min-h-screen">
  <aside class="sticky top-16 h-[calc(100vh-theme(spacing.16))] w-40 overflow-y-auto bg-green-200">
    <ul>
      <li>A</li>
      <li>B</li>
      <li>C</li>
    </ul>
  </aside>

  <main class="mt-16 flex-1 bg-yellow-200">
    <p>content</p>
  </main>
</div>

image

What if we need to add Footer as well to this, I tries it is not working, Any Ideas !

@Daftscientist
Copy link

I come back here so frequently. Thanks.

@mredaoudi
Copy link

Life saver!

@davidbirkin
Copy link

Thank You

@NisugaJ
Copy link

NisugaJ commented Dec 24, 2023

Thanks

@mk3-14159
Copy link

Thank you

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment