word-break: break-all と word-wrap: break-word の徹底比較

2024-04-02

CSSにおける word-break: break-all と word-wrap: break-word の違い

word-breakword-wrap は、長い単語やURLが要素の幅を超えた場合の処理を制御する CSS プロパティです。 それぞれ異なる動作をするため、状況に応じて使い分けることが重要です。

word-break: break-all

  • 長い単語を文字単位で分割し、要素の幅内に収まるように改行します。
  • 日本語のような非アルファベット言語でも有効です。
  • ハイフン (-) やアンダーバー (_) などの記号を含む単語も分割されます。
  • 見た目が崩れる可能性があるため、注意が必要です。
  • 見た目を崩さずに長い単語を扱いたい場合に有効です。

比較表

プロパティ対象分割方法注意点
word-break: break-all全ての単語文字単位見た目が崩れる可能性がある
word-wrap: break-word英単語のみ単語単位日本語には影響しない

使用例

  • 長いURLを要素内に収めたい場合は word-break: break-all を使用します。
  • 見た目を崩さずに長い英単語を扱いたい場合は word-wrap: break-word を使用します。

補足

  • word-wrap: break-word は CSS3 で導入されたプロパティです。
  • word-breakbreak-all 以外にも break-wordkeep-all などの値を設定できます。



<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>word-break と word-wrap のサンプル</title>
  <style>
    .container {
      width: 200px;
      border: 1px solid #ccc;
      padding: 10px;
    }
    
    .break-all {
      word-break: break-all;
    }
    
    .break-word {
      word-wrap: break-word;
    }
  </style>
</head>
<body>
  <div class="container">
    これは非常に長いURLです: https://www.example.com/this/is/a/very/long/url/that/needs/to/be/wrapped/to/fit/within/the/container
  </div>
  
  <div class="container break-all">
    これは非常に長いURLです: https://www.example.com/this/is/a/very/long/url/that/needs/to/be/wrapped/to/fit/within/the/container
  </div>
  
  <div class="container break-word">
    これは非常に長いURLです: https://www.example.com/this/is/a/very/long/url/that/needs/to/be/wrapped/to/fit/within/the/container
  </div>
</body>
</html>
  • 上記のコードは、word-break: break-allword-wrap: break-word の動作を示すサンプルです。
  • 3つの .container 要素があり、それぞれ異なるプロパティを設定しています。
  • 1つ目の .container 要素は、長いURLが要素の幅を超えて表示されます。
  • 2つ目の .container 要素は、word-break: break-all を設定することで、長いURLが文字単位で分割され、要素の幅内に収まるように改行されます。



長い単語を折り返すその他の方法

hyphens プロパティは、単語の途中でハイフン (-) を挿入することで、長い単語を折り返すことができます。

.container {
  hyphens: auto;
}

white-space プロパティは、単語の間隔を制御することで、長い単語を折り返すことができます。

.container {
  white-space: nowrap;
}

overflow プロパティは、要素の内容が溢れた場合の処理を制御することで、長い単語を折り返すことができます。

.container {
  overflow: hidden;
  text-overflow: ellipsis;
}

JavaScript を使用して、長い単語を検出して折り返すこともできます。

const elements = document.querySelectorAll('.container');

elements.forEach((element) => {
  const text = element.textContent;
  const words = text.split(' ');

  words.forEach((word) => {
    if (word.length > 20) {
      element.innerHTML = element.innerHTML.replace(word, `${word.slice(0, 20)}-<br>${word.slice(20)}`);
    }
  });
});
  • 見た目をできるだけ崩したくない場合は、hyphens プロパティを使用するのがおすすめです。
  • 単語の間隔を調整したい場合は、white-space プロパティを使用するのがおすすめです。
  • 要素内に収まるように単語を省略したい場合は、overflow プロパティを使用するのがおすすめです。
  • より柔軟な制御が必要な場合は、JavaScript を使用するのがおすすめです。

css word-wrap


HTMLページでテキスト選択を無効にするメリットとデメリット

CSSを使うCSSの user-select プロパティを使うことで、テキストの選択を無効にすることができます。上記のコードを適用したい要素に unselectable クラスを付与することで、その要素内のテキストを選択できなくなります。JavaScriptを使うことで、より柔軟にテキストの選択を制御することができます。...


上級者向け!PHP、HTML、CSSで高度なレイアウトのPDFファイルを作成する

mPDFライブラリを使うmPDFは、PHPでPDFファイルを生成するためのオープンソースライブラリです。HTMLとCSSを直接記述してPDFファイルを作成することができ、非常に多くの機能が備わっています。手順mPDFライブラリをダウンロードしてインストールします。...


CSSのみで背景画像を自由自在に操る!拡大縮小・配置・繰り返し表示の3つの方法

以下の3つの方法を紹介します。background-size プロパティを使用するこれは最も簡単な方法です。background-size プロパティを使用して、背景画像のサイズを指定できます。contain は、画像の縦横比を維持しながら、要素内に収まるようにサイズを調整します。cover は、要素全体を覆うように画像を拡大縮小します。...


【解決策あり】IE8でTwitter Bootstrap 3が動かない?原因と対処法を徹底解説

Twitter Bootstrap 3は、Webサイトの開発を迅速かつ簡単に支援する人気のフロントエンドフレームワークです。しかし、Internet Explorer 8(IE8)のような古いブラウザでは、いくつかの問題が発生する可能性があります。...


HTML、CSS、JavaScript を使用して Glyphicons のサイズを動的に変更する方法

CSS の font-size プロパティを使用して、Glyphicon のフォントサイズを変更できます。これは、最も簡単で汎用性の高い方法です。この例では、すべての Glyphicons のサイズが 24 ピクセルに設定されます。特定の Glyphicon のサイズのみを変更するには、selector を調整する必要があります。...