Salvador Dali Salvador Dali - 6 months ago 107
HTML Question

Fading out text on overflow with css if the text is bigger than allowed

I am trying to create a text fade-out effect when the amount of text is bigger than the row can handle. I am achieving this with the mixture of

max-height
,
overflow
and
linear-gradient
. Something like this.

max-height:200px;
overflow:hidden;
text-overflow: ellipsis;
background: -webkit-linear-gradient(#000, #fff);


The full fiddle is available. I am trying to achieve effect similar to this one enter image description here

and I am kind of close. The problem is that in my case text start to fade-out from the very beginning and I want it to start fading out only if it is really close to maximum size. Lets say start fading out if it is already 150px. Also I am using only
-webkit
prefix and I assume that there may be other prefixes that I can add for other rendering engines.

Is there a way to do this in pure CSS?

Answer

Looks like your requirement is just to fade out the text beginning at a certain height (about 150px), the text (if any) presenting at that height is considered as overflow. So you can try using some kind of transparent linear gradient layer placed on top of the text area, we can achieve this in a neat way using the pseudo-element :before like this:

.row:before {
  content:'';
  width:100%;
  height:100%;    
  position:absolute;
  left:0;
  top:0;
  background:linear-gradient(transparent 150px, white);
}

Fiddle