Reputation: 999
I am making a site which will display some videos from the YouTube API, and truncates the video description to 170 characters on the server side. They have to go in a narrow box so whenever it contains URLs or long words which make it wrap a lot, it can sometimes overflow out of the container. Is there a client side way to truncate the strings and add an ellipsis on the end (I could use overflow:hidden but I can't use an ellipsis with that. It's my last resort).
Here below is an image of what I'm trying to do:
Upvotes: 4
Views: 4360
Reputation: 39777
You could use text-overflow:ellipses; but unfortunately this only works with white-space:nowrap
which is I don't think you need.
What you can do is do overflow:hidden
like you intended and fake ellipses with pseudo-element :after
.
Imaginge you have you DIV with text:
<div id="text">
(really long text here)
</div>
Styled like this:
#text {
background:white;
width:150px;
height:100px;
position:relative;
overflow: hidden;
}
Just add to it
#text:after {
content:'...';
position:absolute;
bottom:0;
right:0;
background:inherit
}
And bingo: http://jsfiddle.net/tFZEb/3/
Upvotes: 4
Reputation: 16706
The only native way to end with ellipsis a multiline text is -webkit-box & -webkit-line-clamp wich has very low support.
div{
width:150px;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2; /* number of lines to show */
-webkit-box-orient: vertical;
}
example http://jsfiddle.net/rmy2Y/
else you need to find some css hacks or js scripts.
Upvotes: 6