Jakemmarsh Jakemmarsh - 2 years ago 113
CSS Question

How to implement fixed sidebar correctly?

I'm trying to accomplish this design:
example design
Where the sidebar will be fixed, but the right side (the main content) will scroll vertically (and potentially horizontally if the user's browser window is smaller). What is the best way to achieve this?

I tried making the sidebar be "fixed" with a fixed width of 200px, and then the main content just has a margin-left of 200px. However, if the user's browser is then smaller than the main content, the sidebar overlaps all the content as the user tries to scroll horizontally.

Is there a smarter way to achieve this? Thanks!

Answer Source

Use the content div as your container for the page.

 .sidebar {
     position: fixed;
     width: 200px;
     height: 400px;
     background: #000;
 .content {
     margin-left: 200px;
     height: 500px;
     width: auto;
     position: relative;
     background: #f00;
     overflow: auto;
     z-index: 1;
 .info {
     width: 1440px;
     height: 300px;
     position: relative;
     background: #f55;

<div class="sidebar"></div>
<div class="content">
    <div class="info"></div>

Your content will need to be the container to put the page in. The values here are my test to see if I am correct in this. If your width and height exceeds the values you set for content, the scroll bars will appear.

Have a fiddle: http://jsfiddle.net/djwave28/JZ52u/

edit: responsive sidebar

To have a responsive fixed sidebar, simply add a media-query.


@media (min-width:600px) {
   .sidebar {
     width: 250px;
   .content {
     margin-left: 250px;

Here's another fiddle: http://jsfiddle.net/djwave28/JZ52u/363/

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download