2020-01-07 更新

表示領域からオーバーした文字列を「...」で表示する方法

文字列を表示する時に領域からはみ出した部分を省略記号「...」で表したい場合がよくあるので、そういった時に設定するCSSをメモしておきます。

目次

  • 通常時
  • 1行の場合
  • 複数行の場合

通常時

「white-space: nowrap」だけでは、領域をオーバーして文字列が表示されてしまう。

12345678901234567890


.text_area{
    border:1px solid #aae;
    width:110px;
    white-space: nowrap;
}

次に「overflow: hidden」を設定することで、はみ出た部分は表示されなくなるが、文字が途中で切れた状態で表示されてしまい、ちょうど文字と文字の間であればいいが、そうでない場合は見栄えが大変よろしくない。

12345678901234567890


.text_area{
    border:1px solid #aae;
    width:110px;
    white-space: nowrap;
    overflow: hidden;
}

1行の場合

「text-overflow」に「ellipsis(省略記号)」を設定することで領域からオーバーした文字列が「...」で表示されるようになる。

12345678901234567890


.text_area{
    border:1px solid #aae;
    width:110px;
    white-space: nowrap;
    overflow: hidden;
    -o-text-overflow: ellipsis;
    -webkit-text-overflow: ellipsis;
    text-overflow: ellipsis;
}

複数行の場合

上記の方法では「white-space: nowrap」を設定していることもあり、複数行での表示ができない。複数行で省略記号を用いる場合は、以下の方法で行う。

1234567890123456789012345678901234567890


.text_area{
    border:1px solid #aae;
    width:110px;
    overflow: hidden;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
}

「-webkit-line-clamp」の設定値を変更することで、対応する行数が変化する。ただし、上記の方法は「Chrome」と「Safari」しか対応していないので、使う場合は注意が必要。

CSS】関連記事