JSFiddle - React, Tailwind, and code Playground
HTML
<div class="data-holder">
<div id="whitish"></div>
<div id="shadow"></div>
<div class="block">hello</div>
<div class="block">hello</div>
<div class="block">hello</div>
<div class="block">hello</div>
<div class="block">hello</div>
<div class="block">hello</div>
<div class="block">hello</div>
<div class="block">hello</div>
<div class="block">hello</div>
<div class="block">hello</div>
<div class="block">hello</div>
<div class="block">hello</div>
<div class="block">hello</div>
<div class="block">hello</div>
<div class="block">hello</div>
<div class="block">hello</div>
<div class="block">hello</div>
<div class="block">hello</div>
<div class="block">hello</div>
<div class="block">hello</div>
<div class="block">hello</div>
<div class="block">hello</div>
<div class="block">hello</div>
<div class="block">hello</div>
<div class="block">hello</div>
<div class="block">hello</div>
<div class="block">hello</div>
<div class="block">hello</div>
<div class="block">hello</div>
<div class="block">hello</div>
</div>
CSS
.data-holder {
width: 200px;
height: 300px;
border: 1px solid #ddd;
overflow: auto;
position: relative;
}
#shadow {
position: absolute;
left: 0;
height: 30px;
width: 180px;
z-index: 9999;
display: none;
background: radial-gradient(farthest-side at 50% 0, rgba(0,0,0,.2), rgba(0,0,0,0)) 0 100%;
}
#shadow + div {
padding-top: 10px;
}
#whitish {
background: #fff;
position: absolute;
top: 0;
width: 100%;
height: 10px;
z-index: 999999;
}
.block {
background: #f00;
}
JavaScript
$(document).ready(function(){
$('.data-holder').scroll(function(){
$("#shadow, #whitish").css({'top': $('.data-holder').scrollTop() + 'px'});
var y = $('.data-holder').scrollTop();
if( y > 0 ){
$("#shadow").show();
} else {
$("#shadow").hide();
}
});
})