テキスト末尾を3点リーダーにする方法

Cover Image for テキスト末尾を3点リーダーにする方法
Yuichi Kanno
Yuichi Kanno

久しぶりに実装した3点リーダーについてまとめます。
そこまで難易度は高くないものの、実装する間隔が空くと毎回調べている気がしたので、ここらで一度記事として残そうと思いました。

3点リーダーとは

まず3点リーダーとはなんぞやということですが、
文章の末尾を省略するときにある「...」という点々のことです。

3つの点で表現することが多いので3点リーダーと呼ばれています。

実装方法

省略したいテキストの要素にスタイルを付与してあげます。

<div class="text">あいうえおかきくけこさしすせそ</div>
.text {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

3点リーダー自体(... の部分)は text-overflowプロパティにより実現されます。
それぞれのプロパティの詳細な使用は下記を参照してください。

https://developer.mozilla.org/ja/docs/Web/CSS/text-overflow
https://developer.mozilla.org/ja/docs/Web/CSS/overflow https://developer.mozilla.org/ja/docs/Web/CSS/white-space

またdisplay: flex; を指定している場合、text-overflow: ellipsis; は効きません。
解決策としては「flexの子要素をdivタグなどでwrapする」などがあります。
(詳しくはこちらの記事を参照)

複数行対応

1行のテキストの時は上記対応で良いのですが、複数行のテキストの最終行の末尾を省略したい時もありますよね。

その場合は下記のように実装します。

.text {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}

-webkit-line-clampプロパティにより指定した行数のテキスト末尾を3点リーダー表示します。上記の場合は3行目を3点リーダー表示します。
※IEには対応していません。

https://developer.mozilla.org/ja/docs/Web/CSS/-webkit-line-clamp

終わりに

簡単でしたね!!

次回以降はすぐ実装出来るようにしておきたいです。