There are several ways to achieve this. The simplest thing is to place an image with a gradient (from white to transparent) right at the top of the text div, so that it covers everything that goes on top.
You can also use the CSS gradient and place it at the top. Sort of:
background: -moz-linear-gradient(top, rgba(0,0,0,0.65) 0%, rgba(0,0,0,0) 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(0,0,0,0.65)), color-stop(100%,rgba(0,0,0,0))); background: -webkit-linear-gradient(top, rgba(0,0,0,0.65) 0%,rgba(0,0,0,0) 100%); background: -o-linear-gradient(top, rgba(0,0,0,0.65) 0%,rgba(0,0,0,0) 100%); background: -ms-linear-gradient(top, rgba(0,0,0,0.65) 0%,rgba(0,0,0,0) 100%); background: linear-gradient(top, rgba(0,0,0,0.65) 0%,rgba(0,0,0,0) 100%); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='
It was created using this useful tool: Ultimate CSS Gradient Generator
Make sure that the element containing the gradient fixed inside the page, if scrolling the entire page or fixed at the top of another scrollable div in the case when you only need to scroll the text.