How to stop text from taking up more than 1 line?

289,212

Solution 1

div {
  white-space: nowrap;
  overflow: hidden;
}
<div>testing quite a lot of text that just doesn't wrap because it is too long a run-on sentance with so many useless words for you to not read today despite every effort you make to do so including stretching your browser width to the maximum length unless however you utilized your browser's zooming out feature or manually modifying the CSS in which case you are definitely cheating and ruining this fun little game of me typing out as many words as can be fitted into one ridiculously long run-on sentence of the twenty-first century anno domini using my traditional keyboard and two monitors at 1080p while going through every effort to painstakingly ramble on and on but just not exactly repeating myself short of reusing a couple of words in multiple places throughout this HTML even though that would be about a thousand times easier than what I'm currently doing on this day to pointlessly avoid work regardless of its futility given that it'll only create consequences for myself in having to work harder to catch up later of course all of that notwithstanding moderation efforts to tone back my extensive efforts to make this somewhat enjoyable to read while making it as long as possible who may or may not revert this edit in spite of its usefulness since the previous edit only contained four words that could not possibly wrap even without the CSS changes due to their short nature which is invariably going to create more questions than it answers such as can be found in the comments section which is exactly why I created this effort in order to address one of those about the purpose of the overflow attribute which if you have modified you will now see lets you read the entirety of this text through the benefits of horizontal scrolling features but on the other hand if only overflow was used and text-wrap was left out then you will continue to see a vertical scrollbar unless you set a fixed height for this div in which case you certainly should see that vertical overflow is hidden though that would only happen if you did not put this example into fullscreen short of having your viewport set to a small enough height which can actually be further defined to a designated number of lines as opposed to one by using a height set to a multiple of the CSS property defined by line-height which could be a percentage of white-space and that would indeed hide the vertical overflow of this mountain of text which I'm really quite surprised that you managed to linger on here to read through its frivolous nature on the famed site known by programmers as Stack Overflow and for that I congratulate you for potentially wasting your time</div>

Note: this only works on block elements. If you need to do this to table cells (for example) you need to put a div inside the table cell as table cells have display table-cell not block.

As of CSS3, this is supported for table cells as well.

Solution 2

You can use the CSS white-space property to achieve this.

white-space: nowrap;

Solution 3

Using text-overflow: ellipsis will add the ... at the last.

div {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

Solution 4

Sometimes using &nbsp; instead of spaces will work. Clearly it has drawbacks, though.

Solution 5

Just to be crystal clear, this works nicely with paragraphs and headers etc. You just need to specify display: block.

For instance:

<h5 style="display: block; text-overflow: ellipsis; white-space: nowrap; overflow: hidden">
  This is a really long title, but it won't exceed the parent width
</h5>

(forgive the inline styles)

Share:
289,212
Admin
Author by

Admin

Updated on July 07, 2021

Comments

  • Admin
    Admin almost 3 years

    Is there a word-wrap or any other attribute that stops text from wrapping? I have a height, and overflow:hidden, and the text still breaks.

    Needs to work in all browsers, before CSS3.

  • Admin
    Admin about 15 years
    Unfortunately, I can't do it in this circumstance
  • Drew Landgrave
    Drew Landgrave about 9 years
    Also consider "text-overflow: ellipsis;" It adds the ... at the end of your text if it goes outside the bounds of your container's width
  • Alex Angelico
    Alex Angelico almost 7 years
    I think the "this only works on block elements" comment is right. If you try this in an anchor, paragraph, heading, etc, this does not work. You need to do something like p.oneline { white-space:nowrap; overflow:hidden; display:block;}
  • David A. Gray
    David A. Gray about 6 years
    Beware of hiding overflow; it means business.
  • Admin
    Admin almost 6 years
    can anyone please explain why overflow property is set to hidden here?
  • richardwhatever
    richardwhatever about 2 years
    this is the one