1

I have a flexbox container which has some columns, columns having content and content container has a fixed height and I use overflow: hidden to hide overflowing text. As the example shows sometimes I deal on bottom some overlapping text which I would like to truncate. What is the best applicable workaround in this case.

(function($) {
    "use strict";

    const TILE_MAX_HEIGHT = 288;
    const TILE_MIN_HEIGHT = 268;

    var ArticleTile = {
        init: function() {
            this.$tiles = $('.flex__teaser');
            this.iterateTiles();
        },

        iterateTiles: function () {
            var self = this;

            this.$tiles.each(function () {
                var $titleHeight = $(this).find('h1').outerHeight(),
                    $teaserHeight = $(this).find('.flex__content');

                if($titleHeight >= TILE_MIN_HEIGHT) {
                    self.hideTeaser(this)
                }
            })
        },

        hideTeaser: function (el) {
            $(el).find('.flex__content').addClass('hide');
        },

        ellipseContent: function (content) {

        }
    };

    $(document).ready(function() {
        ArticleTile.init();
    });


})($);
.main__content {
  width: calc(965px);
  margin-left: auto;
  margin-right: auto;
}
.flex__container {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  -ms-flex-pack: distribute;
      justify-content: space-around;
}
.flex__container:after {
  content: "";
  -webkit-box-flex: 0;
      -ms-flex: 0 0 380px;
          flex: 0 0 380px;
}
.flex__base {
  -ms-flex-preferred-size: 365px;
      flex-basis: 365px;
  max-width: 365px;
  margin-bottom: 50px;
}
.flex__tile {
  height: 290px;
  overflow: hidden;
}
.flex__title {
  font-family: serif;
  font-style: normal;
  font-weight: 300;
  letter-spacing: 1.3px;
  font-size: 64px;
  line-height: 1.17;
  color: #4e4e4e;
  margin: 18px 0;
  font-size: 36px;
  padding-bottom: 18px;
}
.flex__content {
  text-decoration: none;
  font-size: 18px;
  font-weight: normal;
  font-style: normal;
  font-stretch: normal;
  line-height: 1.67;
  letter-spacing: 0.4px;
}

}
.flex__tile {
  height: 290px;
  overflow: hidden;
}
.flex__title {
  line-height: 1.3em;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="main__content">
  <div class="flex__container">
  <div class="flex__base">
    <div class="flex__tile">
      <div class="flex__header"></div>
      <div class="flex__teaser">
        <h1 class="flex__title">Donec nec urna at leo faucibus bibendum accumsan sit amet ipsum. Sed mollis ligula vitae ipsum scelerisque, in mollis sapien efficitur.</h1>
        <div class="flex__content">
           Duis vel nisl efficitur, pharetra ligula eget, ultricies arcu. Vivamus hendrerit erat metus, at sollicitudin nisi tincidunt in. Ut volutpat elit lobortis mi maximus finibus vitae in tellus. Morbi faucibus rutrum velit et blandit. Nullam et tincidunt nulla. Nunc blandit rhoncus magna, id eleifend risus congue id.
        </div>
      </div>
    </div>
  </div>
  <div class="flex__base">
    <div class="flex__tile">
      <div class="flex__header"></div>
      <div class="flex__teaser">
        <h1 class="flex__title">
          Donec nec urna at leo faucibus bibendum accumsan sit amet ipsum.
        </h1>
        <div class="flex__content">
           Duis vel nisl efficitur, pharetra ligula eget, ultricies arcu. Vivamus hendrerit erat metus, at sollicitudin nisi tincidunt in. Ut volutpat elit lobortis mi maximus finibus vitae in tellus. Morbi faucibus rutrum velit et blandit. Nullam et tincidunt nulla. Nunc blandit rhoncus magna, id eleifend risus congue id.
        </div>
      </div>
    </div>
  </div>
  <div class="flex__base">
    <div class="flex__tile">
      <div class="flex__header"></div>
      <div class="flex__teaser">
        <h1 class="flex__title">
          Donec nec urna at leo faucibus bibendum accumsan sit amet ipsum. Sed mollis ligula vitae ipsum scelerisque.
        </h1>
        <div class="flex__content">
           Duis vel nisl efficitur, pharetra ligula eget, ultricies arcu. Vivamus hendrerit erat metus, at sollicitudin nisi tincidunt in. Ut volutpat elit lobortis mi maximus finibus vitae in tellus. Morbi faucibus rutrum velit et blandit. Nullam et tincidunt nulla. Nunc blandit rhoncus magna, id eleifend risus congue id.
        </div>
      </div>
    </div>
  </div>
  <div class="flex__base">
    <div class="flex__tile">
      <div class="flex__header"></div>
      <div class="flex__teaser">
        <h1 class="flex__title">
          Donec nec urna at leo faucibus bibendum.
        </h1>
        <div class="flex__content">
           Duis vel nisl efficitur, pharetra ligula eget, ultricies arcu. Vivamus hendrerit erat metus, at sollicitudin nisi tincidunt in. Ut volutpat elit lobortis mi maximus finibus vitae in tellus. Morbi faucibus rutrum velit et blandit. Nullam et tincidunt nulla. Nunc blandit rhoncus magna, id eleifend risus congue id.
        </div>
      </div>
    </div>
  </div>
  <div class="flex__base">
    <div class="flex__tile">
      <div class="flex__header"></div>
      <div class="flex__teaser">
        <h1 class="flex__title">
             Donec nec urna at leo faucibus bibendum accumsan sit amet ipsum. Sed mollis ligula vitae ipsum.
        </h1>
        <div class="flex__content">
           Duis vel nisl efficitur, pharetra ligula eget, ultricies arcu. Vivamus hendrerit erat metus, at sollicitudin nisi tincidunt in. Ut volutpat elit lobortis mi maximus finibus vitae in tellus. Morbi faucibus rutrum velit et blandit. Nullam et tincidunt nulla. Nunc blandit rhoncus magna, id eleifend risus congue id.
        </div>
      </div>
    </div>
  </div>
</div>  
</div>
fefe
  • 8,755
  • 27
  • 104
  • 180
  • 1
    What about just using `text-overflow: ellipsis`? – Terry Mar 22 '18 at 13:58
  • well, there is no generic solution for this ... all depend on your content, font-size, title, etc ... you may find the perfect combinaison to avoid this – Temani Afif Mar 22 '18 at 13:59
  • @Terry how would I apply `text-overflow: ellipsis` on this markup? I deal with 2 container – fefe Mar 22 '18 at 14:03
  • 1
    Possible duplicate of [Applying an ellipsis to multiline text](https://stackoverflow.com/questions/33058004/applying-an-ellipsis-to-multiline-text) or [How do I show ellipsis for multiline text?](https://stackoverflow.com/questions/43344984/how-do-i-show-ellipsis-for-multiline-text) – Pete Mar 22 '18 at 14:04
  • @Pete none of the suggested workarounds are working in my case – fefe Mar 22 '18 at 14:19
  • -webkit-line-clamp https://caniuse.com/#search=-webkit-line-clamp is not a workaround – fefe Mar 22 '18 at 14:29
  • have you tried one of the jquery plugins in the answers? eg http://dotdotdot.frebsite.nl/ – Pete Mar 22 '18 at 14:32
  • that one needs a licence is out of scope – fefe Mar 22 '18 at 14:36

0 Answers0