Tom
Tom

Reputation: 7223

How to set element height for a fixed number of lines of text

Given some text that occupies about 10 rows, how can I resize its container to only show the first 3 rows and hide the others? Apparently this works, but I think it is not reliable:

.container {
    height: 7.5ex; /* 2.5ex for each visible line */
    overflow: hidden;
}

Can I rely on the fact that height of one row = 2.5ex or is that just a coincidence in the browsers I am using to test?

Upvotes: 35

Views: 35520

Answers (4)

Gunar Gessner
Gunar Gessner

Reputation: 2631

Use rem:

.container {
    height: 3rem; /* 1rem for each visible line */
    overflow: hidden;
}

Upvotes: 3

Bit68
Bit68

Reputation: 1546

You can use the webkit property line-clamp

.container {
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;  
}

It doesn't work on all browsers, but hopefully it will one day.

Upvotes: 3

Davide
Davide

Reputation: 602

you can set the line height of a text and with it knows the exact height of each row and set desired height of your container, simply doing this:

.container {
    line-height:25px;
    height:75px;
    overflow:hidden;
}

Now everything works rightly :)

Upvotes: 1

irishbuzz
irishbuzz

Reputation: 2460

If you are going to use this you should ensure the line-height is always 2.5ex

.container {
  line-height: 2.5ex;
  height: 7.5ex; /* 2.5ex for each visible line */
  overflow: hidden;
}

Demo

Upvotes: 48

Related Questions