210

I have div with the following css style:

width:335px; float:left; overflow:hidden; padding-left:5px; 

When I insert, into that div, a long line of text, it's breaking to a new line and displays all the text. What I want is to have only one line of text that will not line-break. When the text is long, I want this overflowing text to disappear.

I was thinking about setting the height but it seems to be wrong.

Maybe if I add height that is the same as the font, it should work and not cause any problems in different browsers?

How can I do that?

0

10 Answers 10

493

If you want to restrict it to one line, use white-space: nowrap; on the div.

Sign up to request clarification or add additional context in comments.

5 Comments

But then it doesn't show the ellipsis if the text goes beyond the dimension specified. stackoverflow.com/questions/26342411/…
It works, great. But I need ... if there are more character to show because when length of line long and it goes out of written div.
This acts weird if the hidden text contains hyper links. If I were to tab through the page it would cause the link in the hidden text to scroll onto the screen, when it should be hidden.
The overflow styles need to be applied to the innermost block or inline-block element. And if you have an inline-block, you'll need max-width: 100% on that.
You may also need max-width: 100% on some containing elements. I don't have time to produce an example, so can't post an answer.
95

If you want to indicate that there's still more content available in that div, you may probably want to show the "ellipsis":

text-overflow: ellipsis; 

This should be in addition to white-space: nowrap; suggested by Septnuits.

Also, make sure you checkout this thread to handle this in Firefox.

3 Comments

I believe you must use text-overflow: ellipsis; with overflow: hidden; and white-space: nowrap; to make it work
caniuse.com/#feat=text-overflow aka. yes, you can. Consider putting the whole content in the title attribute, so the user has still access to it.
mine just shows in one line and doesn't populate the DIV before showing the ellipsis... stackoverflow.com/questions/26342411/… (jsfiddle.net/ofrj55j4/20)
81

You can use this css code:

text-overflow: ellipsis; overflow: hidden; white-space: nowrap; 

The text-overflow property in CSS deals with situations where text is clipped when it overflows the element's box. It can be clipped (i.e. cut off, hidden), display an ellipsis ('…', Unicode Range Value U+2026).

Note that text-overflow only occurs when the container's overflow property has the value hidden, scroll or auto and white-space: nowrap;.

Text overflow can only happen on block or inline-block level elements, because the element needs to have a width in order to be overflow-ed. The overflow happens in the direction as determined by the direction property or related attributes.

Comments

19

the best code for UX and UI is

white-space: nowrap; text-overflow: ellipsis; overflow: hidden; display: inherit; 

Comments

13

I was able to achieve this by using the webkit-line-clamp and the following css:

div { display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; } 

3 Comments

line-clamp doesn't have great support across browsers though: caniuse.com/?search=line-clamp
@AlexandervanOostenrijk Support seems fine now, does this way have any down or upsides compaired to the nowrap-ellipiss option?
Perfect answer....line-clamp saved my day
13

I solved it by using:

white-space: nowrap; overflow: hidden; text-overflow: ellipsis; 

.txt1{width:100px;} .txt2{width:200px;} .mytext{ white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
<div class="txt1 mytext"> A B C D E F G H I K L M N O P Q R S T V X Y Z </div> <div class="txt2 mytext"> A B C D E F G H I K L M N O P Q R S T V X Y Z </div> <div class="txt3 "> A B C D E F G H I K L M N O P Q R S T V X Y Z </div>

Comments

10
width:200px; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; 

Define width also to set overflow in one line

Comments

1

if addition please, if you have a long text please you can use this css code bellow;

text-overflow: ellipsis; overflow: visible; white-space: nowrap; 

make the whole line text visible.

Comments

0

Yea, If you want it to be one line tall, use white-space: nowrap; on the div or list. Whatever you are using it for it should work.

Comments

-2

I had the same issue and I solved it by using:

display: inline-block; 

on the div in question.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.