Languages
[Edit]
EN

CSS - text-overflow: ellipsis with nested display: flex elements

6 points
Created by:
DEX7RA
580

In this article, we're going to have a look at how to in a simple way in pure CSS cut overflowing text for multiple nested elements with flex-box.

Overflow text cutting in pure CSS.
Overflow text cutting in pure CSS.

Quick solution:

// ONLINE-RUNNER:browser;

<style>

    .parent-fix {           /*  with display: flex; styled element   */
    	min-width: 0;
    }
    
    .text-shortcut {        /*  with display: block; styled element  */
      	text-overflow: ellipsis;
        white-space: nowrap;
        overflow: hidden;
    }

</style>

<div style="width: 100px; display: flex">
  <div class="parent-fix" style="display: flex">
    <div class="text-shortcut">
      Very long text here, Very long text here, Very long text here
    </div>
  </div>
</div>

 

A more complicated practical example

A verry common problem when we try to make CSS shortcut for text is: when we try to combine flex-box layout (display: flex;) with text-overflow: ellipsis.

The solution for this problem is to use min-width: 0 for parent element that we want to shortcut text.

Note: when div.shortcut element will be in flex-box mode (display: flex), text-overflow: ellipsis will be not working.

Conclusion: use ellipsis always with block element, wrapping text with aditional element when it is necessary.

// ONLINE-RUNNER:browser;

<!doctype html>
<html>
<head>
  <style>

    div { padding: 5px; border: 1px solid red; }
    
    div.h-container { display: flex; }
    div.v-container { display: flex; flex-direction: column; }
    div.item { flex: 1; }
    
    div.fix {
    	min-width: 0; /* <--------------- required */
    }
    
    div.shortcut  {
      	text-overflow: ellipsis; /* <---- required */
        white-space: nowrap; /* <-------- required */
        overflow: hidden; /* <----------- required */
    }

  </style>
</head>
<body>
  <div class="h-container">
    <!-                          |fix here (for flex element)                   ->
    <!-                          v                                              ->
    <div class="item v-container fix">
      <div class="item shortcut">  <!- ---------- shortcut here (block element) ->
        Very long text here, Very long text here, 
        Very long text here, Very long text here
      </div>
      <div class="item">
        Nothing here
      </div>
    </div>
    <div class="item">
      Nothing here
    </div>
  </div>
</body>
</html>

 

Alternative titles

  1. CSS - text-overflow: ellipsis with nested display: flex elements (flexbox)
Donate to Dirask
Our content is created by volunteers - like Wikipedia. If you think, the things we do are good, donate us. Thanks!
Join to our subscribers to be up to date with content, news and offers.

CSS

Native Advertising
🚀
Get your tech brand or product in front of software developers.
For more information Contact us
Dirask - we help you to
solve coding problems.
Ask question.

❤️💻 🙂

Join