【CSS超解説】複数行のテキストがはみ出ないようにする3つの方法とサンプルコード

2024-05-17

HTML、CSS、および省略記号(…)を使用して、複数行のあふれを処理する方法

要件

このチュートリアルを完了するには、以下のものが必要です。

  • 基本的な HTML と CSS の知識
  • テキストエディタ

手順

  1. HTML でコンテンツを作成する

まず、省略記号を使用するコンテンツを含む HTML を作成します。次の例では、div 要素内に複数の行のテキストが含まれています。

<div class="content">
  Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
  1. CSS でスタイルを定義する

次に、CSS を使用して、省略記号を表示する要素をスタイル設定します。以下の例では、text-overflow: ellipsis プロパティを使用して、content クラスを持つ要素内のテキストがコンテナをオーバーフローしたときに省略記号を表示します。

.content {
  width: 200px;
  height: 50px;
  overflow: hidden;
  white-space: normal;
  text-overflow: ellipsis;
}

この CSS コードは次のことを行います。

  • widthheight プロパティを使用して、content 要素のサイズを定義します。
  • overflow: hidden プロパティを使用して、要素の内容が境界からはみ出ないようにします。
  • white-space: normal プロパティを使用して、テキストが折り返されるようにします。
  • text-overflow: ellipsis プロパティを使用して、テキストがオーバーフローしたときに省略記号を表示します。

結果

上記のコードをブラウザで表示すると、content 要素内のテキストが 2 行に表示されます。3 行目のテキストは省略記号 (...) で置き換えられます。

代替方法

-webkit-line-clamp プロパティを使用する

WebKit ブラウザ (Chrome、Safari など) では、-webkit-line-clamp プロパティを使用して、要素内に表示される行数を制限できます。この方法は、省略記号を表示する代わりに、最後の行のみを表示する場合に便利です。

.content {
  -webkit-line-clamp: 2; /* 2 行のみ表示 */
}

注意事項

  • text-overflow: ellipsis プロパティは、すべてのブラウザでサポートされているわけではありません。古いブラウザでは、省略記号が表示されない場合があります。
  • -webkit-line-clamp プロパティは WebKit ブラウザのみでサポートされています。他のブラウザでは動作しません。

デモ

このチュートリアルでは、CSS を使用して、HTML 要素内の複数行のテキストがコンテナをオーバーフローしたときに、省略記号 (...) をどのように表示するかについて説明しました。2 つの異なる方法を紹介しましたので、ニーズに合った方法を選択してください。




<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>HTML、CSS、および省略記号(…)を使用して、複数行のあふれを処理する方法</title>
  <style>
    .content {
      width: 200px;
      height: 50px;
      overflow: hidden;
      white-space: normal;
      text-overflow: ellipsis;
    }
  </style>
</head>
<body>
  <div class="content">
    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
  </div>
</body>
</html>

CSS

.content {
  width: 200px;
  height: 50px;
  overflow: hidden;
  white-space: normal;
  text-overflow: ellipsis;
}

上記以外にも、省略記号を表示する方法はいくつかあります。詳細は、以下のリソースを参照してください。




CSS で省略記号を表示するその他の方法

text-overflow: ellipsis プロパティと max-width プロパティを組み合わせる

この方法は、要素の幅を制限し、テキストがオーバーフローしたときに省略記号を表示します。

.content {
  max-width: 200px;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.content {
  display: inline-block;
  max-width: 200px;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.content {
  -webkit-line-clamp: 2; /* 2 行のみ表示 */
}

JavaScript を使用して、要素内のテキストの長さに基づいて省略記号を動的に表示することもできます。

const contentElement = document.querySelector('.content');
const textLength = contentElement.textContent.length;
const maxLength = 20; // 省略記号を表示する最大文字数

if (textLength > maxLength) {
  contentElement.textContent = contentElement.textContent.substring(0, maxLength - 3) + '...';
}

使用する方法は、要件と使用するブラウザによって異なります。

  • WebKit ブラウザでのみ省略記号を表示したい場合: -webkit-line-clamp プロパティを使用します。
  • より動的な制御が必要な場合: JavaScript を使用します。

各方法の動作を確認するには、以下の CodePenデモをご覧ください。

      省略記号の表示方法については、以下のリソースも参考にしてください。


        html ellipsis css


        VimでHTMLファイル編集を快適にする設定とプラグイン

        Vimには、HTMLタグの自動補完機能が備わっています。これは、開始タグを入力すると、自動的に閉じタグを挿入してくれる機能です。例えば、<div>と入力すると、Vimは自動的に<div>と入力します。この機能を有効にするには、filetype plugin indent onという設定をvimrcファイルに追加する必要があります。...


        CSSの子要素セレクタ:親要素と子要素の関係を活かしたスタイル適用

        CSSを使って子要素にスタイルを適用するには、いくつか方法があります。それぞれの特徴と使い分けを以下に説明します。子要素セレクタこれは最も基本的な方法で、親要素と子要素の関係を使ってスタイルを適用します。記法は以下の通りです。例:この例では、.parent クラスを持つ要素の子要素である <p> 要素全てに、赤色で太字のスタイルが適用されます。...


        【CSSレイアウトの極意】要素をdivに収めるテクニック:クリアランス、overflow、Flexboxなどを徹底比較

        このチュートリアルでは、CSSにおける要素のフローティングと、「div」要素からはみ出す問題について、詳細かつ分かりやすく解説します。初心者の方でも理解しやすいように、概念、原因、解決策を段階的に説明していきます。要素のフローティングとは?...


        【応用】jQueryで複数選択されたチェックボックスの値を取得する方法

        :checked セレクタを使う以下のコードは、name属性がfruitsのチェックボックスのうち、チェックされているもの全てを取得します。prop() メソッドを使う以下のコードは、id属性がmy-checkboxのチェックボックスの値を取得します。...


        【保存版】CSSでウィンドウ幅50%の背景色を設定する方法: 豊富なサンプルコード付き

        方法1:擬似要素を使うこの方法は、擬似要素 :before または :after を使って、要素の後ろに幅50%の背景色付きの疑似要素を作成します。このコードは、要素に赤い背景色の帯を左側に配置します。帯の幅はウィンドウ幅の50%で、要素の高さと同じ高さになります。...


        SQL SQL SQL SQL Amazon で見る



        JavaScriptでHTMLタグの内容が長すぎる場合に省略記号(...)を挿入する方法

        HTMLタグの内容が長すぎる場合、画面からはみ出して見づらくなってしまうことがあります。 そこで、JavaScriptを使って、内容が長すぎる場合に省略記号(...)を挿入する処理を実装することで、見やすくすることができます。解説getElementByIdを使って、省略記号を挿入したい要素を取得します。


        HTMLとCSSで実現するスマートな2行省略:詳細ガイドとサンプルコード

        まず、省略したい文章を内包する要素を用意します。例えば、<p>要素や<div>要素などが一般的です。次に、CSSを使って要素のスタイルを設定します。以下の3つのプロパティが重要になります。width: 要素の幅を制限します。この幅を超える部分は省略されます。


        text-overflow: ellipsis; が機能しない?原因と解決策

        CSS プロパティ text-overflow: ellipsis; は、テキストが要素の幅を超えた場合に省略記号を表示する便利な機能です。しかし、いくつかの状況下では期待通りに機能しない場合があります。原因text-overflow: ellipsis; が機能しない主な原因は以下の3つです。