I have been following the information I could gather (for example here) and built an HTML table, that has its first column fixed, with CSS only. Unfortunately the fixed column is positioning itself a good few pixels lower than the rest of the content and I cannot figure out why.
Here is the code: JSFiddle link. What am I doing wrong?
Tried the following things:
- Changed cell size, margin, padding and border settings
- Replaced
position: absolute
withfloat: left
- Tried placing the scrolling on other element
- Added/removed content
margin-top: -16px;
does not fix the problem, because the distance changes with the height of the cells
.table
{
border-collapse:collapse;
border: 1px solid grey;
display: table;
}
.tr
{
display: table-row;
}
.th
{
display: table-cell;
border:1px solid grey;
white-space:nowrap;
font-weight: bold;
}
.td
{
display: table-cell;
border:1px solid grey;
white-space:nowrap;
margin:0;
}
.wrapper
{
overflow-x:scroll;
margin-left:100px;
overflow-y:visible;
}
.wrapper-outer
{
position: relative;
width: 300px;
}
.fixed {
position:absolute;
width:100px;
left:0;
top:auto;
}
<div class=wrapper-outer>
<div class="wrapper">
<div class="table">
<div class="tr">
<div class="th fixed">Fixed 1</div>
<div class="th">Lorem ipsum dolor</div>
<div class="th">Ipsum</div>
<div class="th">Sator</div>
</div>
<div class="tr">
<div class="td fixed">Fixed 1</div>
<div class="td">Lorem</div>
<div class="td">Ipsum</div>
<div class="td">Sator</div>
</div>
<div class="tr">
<div class="td fixed">Fixed 2</div>
<div class="td">Lorem</div>
<div class="td">Ipsum</div>
<div class="td">Sator</div>
</div>
<div class="tr">
<div class="td fixed">Fixed 3</div>
<div class="td">Lorem</div>
<div class="td">Ipsum</div>
<div class="td">Sator</div>
</div>
<div class="tr">
<div class="td fixed">Fixed 4</div>
<div class="td">Lorem</div>
<div class="td">Ipsum</div>
<div class="td">Sator</div>
</div>
<div class="tr">
<div class="td fixed">Fixed 5</div>
<div class="td">Lorem</div>
<div class="td">Ipsum</div>
<div class="td">Sator</div>
</div>
<div class="tr">
<div class="td fixed">Fixed 6</div>
<div class="td">Lorem</div>
<div class="td">Ipsum</div>
<div class="td">Sator</div>
</div>
<div class="tr">
<div class="td fixed">Fixed 6</div>
<div class="td">Lorem</div>
<div class="td">Ipsum</div>
<div class="td">Sator</div>
</div>
<div class="tr">
<div class="td fixed">Fixed 6</div>
<div class="td">Lorem</div>
<div class="td">Ipsum</div>
<div class="td">Sator</div>
</div>
<div class="tr">
<div class="td fixed">Fixed 6</div>
<div class="td">Lorem</div>
<div class="td">Ipsum</div>
<div class="td">Sator</div>
</div>
<div class="tr">
<div class="td fixed">Fixed 6</div>
<div class="td">Lorem</div>
<div class="td">Ipsum</div>
<div class="td">Sator</div>
</div>
<div class="tr">
<div class="td fixed">Fixed 6</div>
<div class="td">Lorem</div>
<div class="td">Ipsum</div>
<div class="td">Sator</div>
</div>
<div class="tr">
<div class="td fixed">Fixed 6</div>
<div class="td">Lorem</div>
<div class="td">Ipsum</div>
<div class="td">Sator</div>
</div>
<div class="tr">
<div class="td fixed">Fixed 6</div>
<div class="td">Lorem</div>
<div class="td">Ipsum</div>
<div class="td">Sator</div>
</div>
<div class="tr">
<div class="td fixed">Fixed 6</div>
<div class="td">Lorem</div>
<div class="td">Ipsum</div>
<div class="td">Sator</div>
</div>
<div class="tr">
<div class="td fixed">Fixed 6</div>
<div class="td">Lorem</div>
<div class="td">Ipsum</div>
<div class="td">Sator</div>
</div>
<div class="tr">
<div class="td fixed">Fixed 6</div>
<div class="td">Lorem</div>
<div class="td">Ipsum</div>
<div class="td">Sator</div>
</div>
</div>
</div>
</div>