HTMLツール

無料 Custom Highlights APIジェネレーター

DOMを変更せずにテキスト範囲をスタイリングするCSS ::highlight()とJavaScript Highlightオブジェクトを生成します。

ツールを読み込み中...

Custom Highlights APIジェネレーターとは

Custom Highlights API(Baseline 2026、Chrome 105+)は、DOMを変更せずにブラウザ内のテキスト範囲をスタイリングする方法を提供します。テキストをspan要素でラップしてインラインスタイルを適用する代わりに、Rangeオブジェクトを作成し、それらをHighlightオブジェクトに収集し、CSS.highlightsレジストリに名前で登録します。すると::highlight()疑似要素がそれらの範囲にスタイルを適用します。ハイライトはDOMを変更しないため、検索ハイライト、ページ内検索結果、構文ハイライトなど、一時的な視覚効果に最適であり、DOMに一時的なspanラッパーを散らかすのを避けられます。

クイックアンサー

Custom Highlights APIは、DOMを変更せずにCSSを介して任意のテキスト範囲をスタイリングします。CSS.highlights.set()を使用して名前付きハイライトを登録し、::highlight()疑似要素でスタイリングします。color、background-color、text-decoration、text-shadowをサポートしています。Chrome 105+、Safari 18.2+(Baseline 2026)。ページ内検索、構文ハイライト、検索結果マーカーに最適で、DOMをクリーンに保ちます。

Last updated: 2026-06-02

制限事項

  • ブラウザサポート:Chrome 105+、Edge 105+、Safari 18.2+。Firefoxはバージョン138の時点でAPIをサポートしていません。Firefoxおよび他のサポートされていないブラウザには、DOMベースのフォールバック(spanラッピング)が必要です。
  • ::highlight()は限られたCSSプロパティのセットをサポートしています。color、background-color、text-decoration、text-decoration-color、text-decoration-style、text-shadow、およびストローク関連プロパティ。font-size、padding、margin、displayなどのレイアウトプロパティはハイライトに適用できません。
  • ハイライトはDOMが変更されたときに自動的に維持されません。ハイライトされた範囲と重複するテキストコンテンツの追加、削除、変更はハイライトを無効にします。ターゲットテキストに影響するDOM変更の後は、ハイライトを再作成する必要があります。

Sources:MDN Web Docs · W3C Specifications · jquery.app on GitHub

使い方

  1. テキストコンテンツをエディタに書き込むか貼り付けるか、サンプルテキストを使用します。このツールはテキスト内の範囲にハイライトがどのように適用されるかを示します。
  2. ハイライト名(::highlight() CSSセレクタに使用)と、ハイライトするテキストパターンまたは範囲を設定します。単語マッチング、正規表現マッチング、または手動範囲指定から選択します。
  3. ハイライトスタイリングをカスタマイズします。背景色、テキスト色、ボーダー半径、下線オプション。::highlight()疑似要素は、color、background-color、text-decoration、text-shadowを含むCSSプロパティのサブセットをサポートしています。
  4. ハイライトを作成および管理するための生成されたJavaScriptと、それらをスタイリングするためのCSSをコピーします。出力には、ウェブページに直接埋め込める自己完結型の例が含まれます。

主な用途

  • すべての検索語の出現箇所をspan要素でラップしたり既存のDOM構造を乱したりせずにマークする、ページ内検索ハイライトを実装します。
  • 正規表現パターンマッチングに基づいてキーワード、文字列、コメントのハイライトを作成することで、ドキュメントサイトのコードブロックに構文ハイライトを追加します。
  • テキストの2つのバージョン間で追加、削除、変更された単語をハイライトするテキスト比較ツールを構築し、各タイプに異なる::highlight()色を使用します。

用途

使用例

ページ内検索ハイライト

ドキュメントサイトがライブ検索ハイライトを実装します。ユーザーが検索ボックスに入力すると、JavaScriptが検索語のすべての出現箇所のRangeオブジェクトを作成し、search-matchという名前のハイライトとして登録し、CSS ::highlight(search-match)が黄色の背景を適用します。ユーザーが検索をクリアすると、CSS.highlights.delete()を呼び出してハイライトが削除されます。DOMはクリーンなままです。クリーンアップするspan要素はありません。

マルチカラー構文ハイライト

コードスニペットビューアが、3つの個別の名前付きハイライトを使用してキーワードを青、文字列を緑、コメントを灰色でハイライトします。JavaScriptの正規表現が各トークンカテゴリにマッチし、Rangeオブジェクトを作成し、keyword-highlight、string-highlight、comment-highlightの3つのハイライトを登録します。各ハイライトには異なる色の独自の::highlight() CSSルールがあります。DOM内の元のコードテキストは変更されません。

よくあるミス

  • DOMに接続されていない要素でハイライトを使用する。Rangeオブジェクトはターゲット要素がドキュメントツリー内にあることを必要とします。ターゲットコンテンツがレンダリングされた後に、通常はDOMContentLoadedハンドラ内でハイライトを作成してください。
  • ::highlight()がすべてのCSSプロパティをサポートしていると思い込む。color、background-color、text-decoration、text-shadow、およびいくつかの他の視覚プロパティのみをサポートしています。font-size、padding、margin、displayなどのプロパティはハイライトに適用できません。
  • ハイライトがテキスト選択やアクセシビリティツリーに影響しないことを忘れる。Custom Highlights APIは純粋に視覚的です。ハイライトはアクセシビリティツリーに表示されず、スクリーンリーダーによってアナウンスされず、テキスト選択動作に影響しません。

検証

  1. 生成されたHTMLをChrome 105+で開きます。検索ボックスに検索語を入力し、テキスト内のすべての出現箇所がハイライトスタイリング(背景色、テキスト色)で表示され、DOMインスペクタにspan要素が表示されないことを確認します。
  2. Chrome DevToolsで要素を検査し、DOMにspan要素が追加されていないことを確認します。コンソールでCSS.highlights.keys()が登録されたハイライト名を返し、::highlight()疑似要素がStylesパネルに表示されることを確認します。

FAQ

Custom Highlights APIジェネレーターのFAQ

Custom Highlights APIはテキストをspan要素でラップするのとどう違いますか?

テキストをspan要素でラップするとDOMツリーが変更されます。テキストノードが分割され、要素が追加され、ドキュメント構造が変更され、CSSセレクタ、テキスト操作、支援技術が壊れる可能性があります。Custom Highlights APIは既存のテキストノードを参照するRangeオブジェクトを作成し、DOMを変更しません。ハイライトはブラウザのアクセシビリティツリー、JavaScriptセレクタ、テキストコンテンツAPIから見えません。これにより、基になるドキュメント構造に干渉してはならない一時的な視覚効果にハイライトが最適になります。

::highlight()は複数のHTML要素にまたがるテキストをスタイリングできますか?

いいえ。ハイライトは単一のTextノード内のテキストのみを参照できます。目的のハイライトが複数の要素にまたがる場合(たとえば、段落で始まりリンクで終わるフレーズ)、各Textノードセグメントに対して個別のHighlightオブジェクトを作成する必要があります。生成されたコードは、複数要素の範囲を個別のTextノード範囲に分割することでこれを処理します。

DOMが変更されたとき、ハイライトはどうなりますか?

ハイライトは特定のTextノードを参照する特定のRangeオブジェクトに結び付けられています。DOMが変更された場合(テキストコンテンツが変更された、要素が削除された、新しいノードが挿入された)、影響を受けるテキストノードのハイライトは無効になるか切り離される可能性があります。Custom Highlights APIはDOMの変更時にハイライトを自動的に更新しません。ハイライトされたテキスト範囲に影響するDOM変更の後は、ハイライトを再作成する必要があります。

Custom Highlights APIをサポートしているブラウザは?

Custom Highlights APIはBaseline 2026で、Chrome 105+、Edge 105+、Safari 18.2+でサポートされています。Firefoxはバージョン138の時点でサポートしていません。ページ内検索や検索ハイライトについては、サポートされていないブラウザ向けにテキストをspan要素でラップするフォールバックを提供してください。生成されたコードには機能検出とオプションのフォールバックパスが含まれています。

関連ツール

その他のhtmlツール

こちらもお試しください

こちらもお試しください