You can't set tbody as scrollable. You need to create two separate tables -- one for the header and one for the body. Wrap the body table in a div and set the overflow-y property to scroll.
Updated jsfiddle: http://jsfiddle.net/SzGW3/37/
Markup:
<div class="scrollable">
<table class="table table-hover table-striped">
<thead>
<tr>
<th>User</th>
<th>Rights</th>
<th></th>
</tr>
</thead>
</table>
</div>
<div class="bodycontainer scrollable">
<table class="table table-hover table">
<tbody id="user-rows">
<tr class="user-row" style="opacity: 1;">
<td>Justin</td>
<td>Administrator</td>
<td><span class="btn btn-mini btn-primary edit pull-right fade">Edit</span>
</td>
</tr>
<tr class="user-row" style="opacity: 1;">
<td>Sebastien</td>
<td>Administrator</td>
<td><span class="btn btn-mini btn-primary edit pull-right fade">Edit</span>
</td>
</tr>
<tr class="user-row" style="opacity: 1;">
<td>Steve</td>
<td>Operator</td>
<td><span class="btn btn-mini btn-primary edit pull-right fade">Edit</span>
</td>
</tr>
<tr class="user-row" style="opacity: 1;">
<td>Thomas</td>
<td>Administrator</td>
<td><span class="btn btn-mini btn-primary edit pull-right fade">Edit</span>
</td>
</tr>
<tr class="user-row" style="opacity: 1;">
<td>admin</td>
<td>Administrator</td>
<td><span class="btn btn-mini btn-primary edit pull-right fade">Edit</span>
</td>
</tr>
</tbody>
</table>
</div>
Style:
@import url('http://twitter.github.com/bootstrap/assets/css/bootstrap.css');
.scrollable {
overflow-y: scroll;
}
.bodycontainer {
height: 100px !important;
width: 100%;
}
The scroll bar on the header is to keep the widths the same. You can fix that with some JavaScript, but there should also be some nice JS / JQuery libraries you can find to handle the entire tbody scrolling issue for you.
If you want to set the same width for header cols (th) and cols (td):
table thead>tr>th{
width: 20% !important; /* 20% for 5, 25% for 4, etc */
}
table tbody>tr>td{
width: 20% !important; /* 20% for 5, 25% for 4, etc */
}