CSS sticky table
CSS sticky table
by Doãn Tài
HTML
<div class="container">
<div class="table">
<div class="col">
<div class="cell">#</div>
<div class="cell">Sidebar</div>
<div class="cell">Sidebar</div>
<div class="cell">Sidebar</div>
<div class="cell">Sidebar</div>
<div class="cell">Sidebar</div>
<div class="cell">Sidebar</div>
<div class="cell">Sidebar</div>
</div>
<div class="col">
<div class="cell">Header</div>
<div class="cell">2</div>
<div class="cell">3</div>
<div class="cell">4</div>
<div class="cell">5</div>
<div class="cell">6</div>
<div class="cell">7</div>
<div class="cell">8</div>
</div>
<div class="col">
<div class="cell">Header</div>
<div class="cell">2</div>
<div class="cell">3</div>
<div class="cell">4</div>
<div class="cell">5</div>
<div class="cell">6</div>
<div class="cell">7</div>
<div class="cell">8</div>
</div>
<div class="col">
<div class="cell">Header</div>
<div class="cell">2</div>
<div class="cell">3</div>
<div class="cell">4</div>
<div class="cell">5</div>
<div class="cell">6</div>
<div class="cell">7</div>
<div class="cell">8</div>
</div>
<div class="col">
<div class="cell">Header</div>
<div class="cell">2</div>
<div class="cell">3</div>
<div class="cell">4</div>
<div class="cell">5</div>
<div class="cell">6</div>
<div class="cell">7</div>
<div class="cell">8</div>
</div>
<div class="col">
<div class="cell">Header</div>
<div class="cell">2</div>
<div class="cell">3</div>
<div class="cell">4</div>
<div class="cell">5</div>
<div class="cell">6</div>
<div class="cell">7</div>
<div class="cell">8</div>
</div>
<div class="col">
<div class="cell">Header</div>
<div class="cell">2</div>
<div class="cell">3</div>
<div...
CSS
*{
margin: 0;
padding: 0;
box-sizing: border-box;
}
.container{
background-color: #ccc;
width: 600px;
height: 600px;
margin: 30px auto;
overflow: scroll;
}
.table{
display: flex;
flex-direction: row;
width: 1000px;
height: 1000px;
}
.col{
display: flex;
flex-direction: column;
flex-grow: 1;
border-right: 1px solid #333;
}
.col:first-child{
border-left: 1px solid #333;
position: sticky;
left: 0;
z-index: 1;
}
.col:first-child .cell{
background-color: yellow;
}
.col:first-child .cell:first-child{
background-color: violet;
}
.cell{
display: flex;
flex-grow: 1;
background-color: #eee;
padding: 30px;
border-bottom: 1px solid #333;
}
.cell:first-child{
border-top: 1px solid #333;
position: sticky;
top: 0;
background-color: red;
}