How do I fit long text into a fixed width column where I have room for only one line of text? The text needs to be cut to a fixed width (lets say to 100px) and I would like to add dots "..." at the end. Something like this for example:
Given string:
Some really long string that I need to fit in there!
Desired output in fixed-开发者_JAVA技巧width-column should be:
Some really long string...
You can do this with CSS alone:
.box {
-o-text-overflow: ellipsis; /* Opera */
text-overflow: ellipsis; /* IE, Safari (WebKit) */
overflow:hidden; /* don't show excess chars */
white-space:nowrap; /* force single line */
width: 300px; /* fixed width */
}
Note: You will want to check on the latest browser support.
Just with some CSS like answer of Gordon. Just added the display:block
property for an inline element like <a>
or <p>
:
a#myText{
display: block;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
width: 300px;
}
You could use it with many browser like you can see on this link : http://caniuse.com/#search=text-overflow
I had a similar problem, the way I solved it was to strip the string down to 60 characters and append an '...' to the end of it.
An ugly solution? Yes, but unless there is a jQuery solution it's probably your best bet.
If you're using Smarty, this is how I solved the problem:
{$my_string|truncate:60}
Here's a function I use to truncate strings. Like most of the suggestions here, it uses substr to truncate the string, but it will avoid splitting the string mid-word:
function truncate_text($string, $min_chars, $append = ' …') {
$chars = strpos($string, " ", $min_chars);
$truncated_string = substr($string, 0, $chars) . $append;
return $truncated_rstring;
}
I think simple cutting text after N characters isn't what you're looking for. It's not a solution because the following text have both 15 character length: iiiiiiiiiiiiiii, mmmmmmmmmmmmmmm - notice that the second "word" is about three times longer than the first one.
JavaScript might be a solution:
First prepare your mark-up:
<p id="abc">{TEXT}</p>
Where
{TEXT}
is your text truncated to 150 characters +...
Now when we've got a good base for JavaScript we can try to make what you're looking for:
<html> <head> <style type="text/css"> #abc { width: 100px; } </style> <script type="text/javascript"> document.addEventListener("DOMContentLoaded", function() { var ref = document.getElementById("abc"); var text = ref.text; ref.removeChild(ref.firstChild); ref.appendChild(document.createTextNode("...")); var maxHeight = ref.offsetHeight; var pos = 0; while (ref.offsetHeight <= maxHeight) { var insert = text.substring(0, ++pos) + "..."; var finalReplace = ref.replaceChild(document.createTextNode(insert), ref.firstChild); } ref.replaceChild(finalReplace, ref.firstChild); }, false); </script> </head> <body> <p id="abc">My very, very, very, very, very, very, very long text...</p> </body> </html>
精彩评论