In an application I display data in table form.
The main columns are grouped in the red frame representing the parent component. I want to add an additional summary column on the right outside the scrollable area.
what I tried is to play with the overflow-x:visible
, but it doesn't work as explained here :
https://www.brunildo.org/test/Overflowxy2.html
How can I handle this with a pure html/css solution ?
.parent {
border:2px red solid;
height:400px;
overflow-y:scroll;
overflow-x:visible;
width:500px;
}
.child {
background:green;
height:50px;
margin-bottom:2px;
width:600px;
}
<div class="parent">
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
</div>
Finally, I found a suitable solution for my scrollbar problem.
the following modifications are necessary:
width
of the parent must be equal to that of the childoverflow-y
of the parent must be set to overlay
.width
of the scrollbar of 200px
.border-right: 190px
and the background-clip: content-box
.I think it can still be optimized
.parent {
border:2px red solid;
height:300px;
overflow-y:overlay;
width:600px;
}
.parent::-webkit-scrollbar {
width: 200px;
}
.parent::-webkit-scrollbar-track {
background:yellow;
background-clip: content-box;
border-right: 190px solid transparent;
}
.parent::-webkit-scrollbar-thumb,
.parent:hover::-webkit-scrollbar-thumb {
background-color:blue;
background-clip: content-box;
border-right: 190px solid transparent;
}
.child {
display:table-row;
font-size:20px;
height:50px;
margin-bottom:2px;
padding-top:10px;
width:600px;
}
.column--1,
.column--2 {
background:#C4FFCE;
display:table-cell;
text-align:center;
vertical-align:middle;
width:150px;
}
.column--1 {
width:435px;
}
.space {
width:55px;
}
<div class="parent">
<div class="child">
<div class="column--1">column 1</div>
<div class="space"></div>
<div class="column--2">column 2</div>
</div>
<div class="child">
<div class="column--1">column 1</div>
<div class="space"></div>
<div class="column--2">column 2</div>
</div>
<div class="child">
<div class="column--1">column 1</div>
<div class="space"></div>
<div class="column--2">column 2</div>
</div>
<div class="child">
<div class="column--1">column 1</div>
<div class="space"></div>
<div class="column--2">column 2</div>
</div>
<div class="child">
<div class="column--1">column 1</div>
<div class="space"></div>
<div class="column--2">column 2</div>
</div>
<div class="child">
<div class="column--1">column 1</div>
<div class="space"></div>
<div class="column--2">column 2</div>
</div>
<div class="child">
<div class="column--1">column 1</div>
<div class="space"></div>
<div class="column--2">column 2</div>
</div>
<div class="child">
<div class="column--1">column 1</div>
<div class="space"></div>
<div class="column--2">column 2</div>
</div>
<div class="child">
<div class="column--1">column 1</div>
<div class="space"></div>
<div class="column--2">column 2</div>
</div>
</div>