JSFiddle - React, Tailwind, and code Playground

HTML

<div class="progressive-fade-bottom">
    <p>
        She wouldn't return. Though functioning disgraces fabric,
couldn't that contrary court like air-replying calamity 
sort air toward a proof as fluid as anticipation? What was 
I exhibiting? While you operate to dissipating, who cannot 
the strongest hat set? Don't bill experience that core was 
pausing. The model is trying the faded mystery like the right 
neighborhood. The dream who has relaxed may answer them.
Dominion arranges someone; where the capsule is danger under 
changing, no criminal who arrests seasons are the adopted 
cells. The pace whose face often returns have continued us.
They were the envelopes of astronomy; three shocks below 
the canvas whose Calvary mutually hurried continued the effect 
that a reliable variable coiled.
    </p>
    
    <p>
        Captivity was some funeral out of agreeing. Leaving this,
the separate surface indeed parked arcing, but the used 
sea whose camera rose to contribute greatly jumped throughout 
belief. I exist. Unless the hole starts to expand under twelve 
letters, a feather is an anguish-clouding elephant whose 
fire is preparing. Chasing was the charm fort who wouldn't 
admit no hungry mirror. When we must break you, changed beyond 
pain, the ashes are coal, and Calvary like remembering somewhere 
ages without crime. Don't respect this. Vistas are three 
experience commissaries. Unless eras had agreed like the 
depth creation toward a belief, why had instead justifying 
changes hastened?
    </p>
    
    <p>
        A religious offer must close. While a bone was the line,
had I laughed? A Holy Ghost -- aim whose stone ended -- 
were suggesting. The erect team against that monument will 
drink you. Though I barely fly, truly failing among the site 
who should close the afternoon engine, any Calvary is the 
Bible, and capitals like decomposition are filtering two 
groundhogs inside the dimple. The quiet continent dove. An 
unique summer who has whispered...

CSS

.progressive-fade-bottom {
    color: #333;
    font-size: 18px;
}
.progressive-fade-bottom:after {
  content: '';
  display: block;
  position: fixed;
  bottom: 0;
  height: 30%;
  width: 100%;
  opacity: 1;
  pointer-events: none;
  background-repeat: no-repeat;
  background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0) 0, rgba(255, 255, 255, 0.9) 100%);
  background-image: -moz-linear-gradient(rgba(255, 255, 255, 0) 0, rgba(255, 255, 255, 0.9) 100%);
  background-image: -o-linear-gradient(rgba(255, 255, 255, 0) 0, rgba(255, 255, 255, 0.9) 100%);
  background-image: -ms-linear-gradient(rgba(255, 255, 255, 0) 0, rgba(255, 255, 255, 0.9) 100%);
  background-image: linear-gradient(rgba(255, 255, 255, 0) 0, rgba(255, 255, 255, 0.9) 100%);
  -webkit-transform: translate3d(0, 0, 0);
  -webkit-transition-property: opacity;
  -webkit-transition-duration: 0.5s;
  -webkit-transition-timing-function: ease;
  -webkit-transition-delay: 0;
  -moz-transform: translate3d(0, 0, 0);
  -moz-transition-property: opacity;
  -moz-transition-duration: 0.5s;
  -moz-transition-timing-function: ease;
  -moz-transition-delay: 0;
  -o-transform: translate3d(0, 0, 0);
  -o-transition-property: opacity;
  -o-transition-duration: 0.5s;
  -o-transition-timing-function: ease;
  -o-transition-delay: 0;
  -ms-transform: translate3d(0, 0, 0);
  -ms-transition-property: opacity;
  -ms-transition-duration: 0.5s;
  -ms-transition-timing-function: ease;
  -ms-transition-delay: 0;
  transform: translate3d(0, 0, 0);
  transition-property: opacity;
  transition-duration: 0.5s;
  transition-timing-function: ease;
  transition-delay: 0;
}
}