CSS : テキストが設定した幅を超えた場合、「...」を表示させる (text-overflow)

テキストを設定する要素に限らずではあるが、その要素に設定した横幅よりもテキストの長さの方が長い場合に、末尾に「...」(エリプシス)を表示させる方法についてまとめる。

HTMLファイル

以下のようなHTMLコードを用意する。

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>DEMO</title>
    <link rel="stylesheet" href="./style.css">
  </head>
  <body>
    <table border="1">
      <thead>
        <tr>
          <th>ID</th>
          <th>氏名</th>
          <th>メールアドレス</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>1001</td>
          <td>伊藤士郎</td>
          <td>sirou@aaa.com</td>
        </tr>
        <tr>
          <td>1002</td>
          <td>佐々木芙美</td>
          <td>humi-sample@bbb.com</td>
        </tr>
      </tbody>
    </table>
  </body>
</html>

CSSファイル

htmlファイルと同階層に作成されるものとする。名前は、style.cssで作成。

以下のコードを記述する。今回は、thとtdに対して、末尾に「...」(エリプシス)を表示させるよう設定。

table {
  width: 50%;
  table-layout: fixed;
  border-collapse: collapse;
}

th, td {
  overflow: hidden; /* 溢れたテキストを隠す */
  text-overflow: ellipsis; /* 溢れたテキストに「...」を表示 */
  white-space: nowrap; /* テキストを1行に制限 */
}

/* thとtdの最初の要素の幅を指定   */
th:first-child, td:first-child {
  width: 10%; 
}

/* thとtdの2番目の要素の幅を指定   */
th:nth-child(2), td:nth-child(2) {
  width: 30%; 
} 

/* thとtdの3番目の要素の幅を指定   */
th:nth-child(3), td:nth-child(3) {
  width: 50%; 
}

動作を確認

画面の幅を調整し、テーブルの幅を狭めた場合に「...」(エリプシス)が表示されていれば実装完了。

 

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です