QR Code (QR コード) コンポーネント New
Ignite UI for React QR Code は、スキャン可能な QR (Quick Response) コードをインライン SVG としてレンダリングします。コードは任意の文字列値からクライアント側で生成され、サイズ、誤り訂正、中央ロゴをカスタマイズできます。
ライブ デモ
React QR Code のデモは、URL 文字列からコードをレンダリングし、モジュールの形状、サイズ、中央ロゴを切り替えることができます。
構造
React QR Code は、3 つの位置検出パターンのコーナー、エンコードされたデータ モジュール、クワイエット ゾーンの余白、およびオプションの中央ロゴで構成される正方形の SVG グラフィックです。
2. QR マトリックス: リンク先またはデータ ペイロードを格納するエンコードされたマトリックスです。
3. クワイエット ゾーン: スキャナーがコードを確実に読み取れるようにするための、コード周囲の空白領域です。
4. 中央ロゴ (オプション): ブランド ロゴやカスタム アイコンを表示するために使用される、オプションの中央コンテナーです。
5. 位置検出パターンのコーナー: スキャナーがコードを正しく検出して向きを判別できるようにする、コーナーの正方形のマーカーです。
<igc-qr-code>
└── svg[role="img"]
├── <title> // "QR code: <value>" or the aria-label value
├── ::part(background) // background rect
├── <mask> // rendered when logo-src is set
├── <g> // masked when logo-src is set
│ ├── ::part(dots) // data modules path
│ ├── ::part(corner-square) // outer finder-pattern squares (×3)
│ └── ::part(corner-dot) // inner finder-pattern dots (×3)
└── <image> // center logo, rendered when logo-src is set
作業の開始
React QR Code を使用するには、まず Ignite UI for React の作業の開始 トピックに従って基本的なプロジェクトのセットアップを行い、その後、コンポーネントを登録してください。
QR Code には igniteui-react 19.9.0 以降が必要です。
IgrQrCode ラッパーとテーマをインポートします:
import { IgrQrCode } from 'igniteui-react';
import 'igniteui-webcomponents/themes/light/bootstrap.css';
値を指定して QR Code をレンダリングします:
<IgrQrCode value="https://www.infragistics.com"></IgrQrCode>
デフォルトでは、128×128 ピクセルの QR コードが、4 モジュールのクワイエット ゾーンの余白、誤り訂正 M、正方形のモジュールとコーナーでレンダリングされます。
使用方法
スキャン可能な QR コードをレンダリングするには、value に任意の文字列を設定します。コンポーネントは、最もコンパクトなエンコード モード (数字、英数字、またはバイト) と、値が収まる最小の QR バージョンを選択します。value をクリアすると SVG が削除されます。
誤り訂正
errorLevel を使用して、L、M (デフォルト)、Q、または H の誤り訂正レベルを選択します。レベルが高いほど、損傷したり覆われたりしたコードをより多く復元できますが、コードの密度は高くなります。予測可能なモジュール寸法が必要な場合は、version を使用して 1 から 40 までの QR バージョンを固定します。未設定のままにすると、value が収まる最小のバージョンが使用されます。
<IgrQrCode
value="https://www.infragistics.com"
version={4}
errorLevel="H">
</IgrQrCode>
サイズ
size を使用してレンダリングされる幅と高さをピクセル単位で設定し、margin を使用してクワイエット ゾーンを QR モジュール単位で設定します。クワイエット ゾーンは size の内側に描画されるため、margin を大きくするとモジュールは小さくなります。
<IgrQrCode
value="https://www.infragistics.com"
size={256}
margin={2}>
</IgrQrCode>
中央ロゴ
コードの中央に画像をレンダリングするには logoSrc を設定します。コンポーネントは、その下にあるモジュールをマスクします。logoSize は、安全なロゴ領域の最大値 (H レベルでコードの 9%) に対する 0 から 1 までの比率としてロゴのサイズを設定します。logoMargin は、ロゴの周囲にピクセル単位で空白を追加します。
ロゴが現在の errorLevel で許容される範囲を超えてコードを覆うことはありません。デフォルトの M レベルでは、約 0.44 を超える logoSize の値は同じ上限サイズでレンダリングされるため、最大のロゴを表示するには errorLevel を H に設定してください。
logoSrc は、通常の URL と data:image/* URI を受け入れます。安全でないスキーム (javascript: や vbscript: など) を持つソースおよび画像以外の data: URI は拒否され、ロゴはレンダリングされません。
<IgrQrCode
value="https://www.infragistics.com"
errorLevel="H"
logoSrc="/assets/logo.png"
logoSize={0.5}
logoMargin={4}>
</IgrQrCode>
形状
dotStyle を使用してデータ モジュールと位置検出パターンの内側のドットの形状を設定し、squareStyle を使用して位置検出パターンの外側の四角形の形状を設定します。どちらも square (デフォルト)、circle、または rounded を受け入れます。
<IgrQrCode
value="https://www.infragistics.com"
dotStyle="rounded"
squareStyle="rounded">
</IgrQrCode>
使用すべき場合と使用すべきでない場合
使用すべき場合: QR コードは、ページを開く、アプリをダウンロードする、リンクを検証するなどのデジタル アクションへ、印刷物や静的な画面から素早く移動する手段をユーザーに提供します。
使用すべきでない場合: スキャナーなしで読み取れる必要がある情報や、直接のボタン、リンク、短縮 URL の方がリンク先への誘導に適している場合には、QR コードの使用を避けてください。
![]() | ![]() |
| Do | Don’t |
明確なリンク先があり、周囲に十分な空白を確保できる、短く意図の明確なアクションに QR コードを使用します。 | 重要なコンテンツを QR コードだけで提供したり、ユーザーが簡単にスキャンできない場所に配置したりすることは避けてください。 |
![]() | ![]() |
| Do | Don’t |
スマートフォンのカメラが素早くスキャンできるように、前景を暗く、背景を明るく (理想的には白地に黒) 保ちます。 | スキャナーが検出できない、暗い背景上の明色の QR コードや、コントラストの低いブランド カラーの色合いは避けてください。 |
プロパティ
React QR Code は、エンコードされる値、コードの密度、サイズ設定、ロゴ、および形状のカスタマイズのためのプロパティを公開します。
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
value |
string |
— | QR コードにエンコードされる文字列。 |
version |
number |
— | QR バージョン (1–40)。設定されていない場合は、value が収まる最小のバージョンが使用されます。 |
errorLevel |
'L' | 'M' | 'Q' | 'H' |
'M' |
誤り訂正レベル。ロゴ サイズの上限も決定します。 |
size |
number |
128 |
レンダリングされる幅と高さ (ピクセル単位)。 |
margin |
number |
4 |
クワイエット ゾーンの余白 (QR モジュール単位)。 |
logoSrc |
string |
— | オプションの中央ロゴ画像のソース URL。 |
logoSize |
number |
0.4 |
安全なロゴ領域の最大値に対する比率 (0–1) としてのロゴ サイズ。 |
logoMargin |
number |
— | ロゴの周囲の余白 (ピクセル単位)。 |
dotStyle |
'square' | 'circle' | 'rounded' |
'square' |
データ モジュールと位置検出パターンの内側のドットの形状。 |
squareStyle |
'square' | 'circle' | 'rounded' |
'square' |
位置検出パターンの外側の四角形の形状。 |
スタイル設定
React QR Code の外観は、CSS 変数、CSS パーツ、およびテーマ システムによって制御されます。
スタイル設定変数
| 変数 | 変更内容 |
|---|---|
--ig-qr-code-background |
QR コードの背景色。デフォルトは white です。 |
--ig-qr-code-dark-color |
データ モジュールの色。オーバーライドされない限り、コーナーの四角形/ドットの色にも使用されます。デフォルトは black です。 |
--ig-qr-code-corner-square-color |
位置検出パターンの外側のコーナーの四角形の色。--ig-qr-code-dark-color にフォールバックします。 |
--ig-qr-code-corner-dot-color |
位置検出パターンの内側のコーナーのドットの色。--ig-qr-code-dark-color にフォールバックします。 |
スタイル パーツ
| パーツ | スタイル対象 |
|---|---|
background |
QR コードの背景の矩形。 |
dots |
QR コードのデータ モジュール (ドット)。 |
corner-square |
位置検出パターンの外側のコーナーの四角形。 |
corner-dot |
位置検出パターンの内側のコーナーのドット。 |
Sass テーマ
qr-code-theme() でテーマを作成し、tokens ミックスインに渡します。
@use "igniteui-theming/sass/themes" as *;
$custom-qr-code-theme: qr-code-theme(
$background: #ffffff,
$dark-color: #1a1a2e,
$corner-square-color: #c0392b,
$corner-dot-color: #1a1a2e
);
:root {
@include tokens($custom-qr-code-theme);
}
CSS 変数
Sass のビルド ステップなしでローカルなスタイル設定が必要な場合は、コンポーネントの CSS 変数を直接設定します。
igc-qr-code {
--ig-qr-code-background: var(--ig-gray-50);
--ig-qr-code-dark-color: var(--ig-primary-800);
--ig-qr-code-corner-square-color: var(--ig-secondary-800);
}
igc-qr-code::part(corner-dot) {
fill: var(--ig-success-500);
}
Tailwind によるスタイル設定
Tailwind ユーティリティ クラスを QR Code の CSS 変数と組み合わせます。最初に Ignite UI テーマで Tailwind をセットアップ してください:
@import "tailwindcss/theme.css";
@import "tailwindcss/utilities.css";
light-qr-code ユーティリティを適用して QR Code にテーマ変数を付与し、その後、任意のプロパティ クラスで個々の変数をオーバーライドします。! プレフィックスはユーティリティを important としてマークし、コンポーネントのデフォルト スタイルより優先されるようにします。
<IgrQrCode
value="https://www.infragistics.com"
className="!light-qr-code [--ig-qr-code-dark-color:#1a1a1a] [--ig-qr-code-background:#f7df1e]">
</IgrQrCode>
アクセシビリティ
React QR Code は静的なグラフィックであり、スクリーン リーダーはその SVG の <title> を通じて読み上げます。
キーボード インタラクション
QR Code はフォーカス可能ではなく、キーボード入力に応答しません。
スクリーン リーダー / ARIA
レンダリングされる <svg> には role="img" と、スクリーン リーダーが読み上げる <title> があります。タイトルのデフォルトは QR code: <value> です。代わりにより意味のあるフレーズを読み上げるには、aria-label を設定してください。
<IgrQrCode
value="https://www.infragistics.com/products"
ariaLabel="Scan to visit our product page">
</IgrQrCode>
アクセシビリティ準拠
インフラジスティックスは、アクセシビリティ準拠 トピックで、Section 508 および WCAG 2.1 ガイドライン領域における Ignite UI for React のアクセシビリティ サポートを文書化しています。
| 基準 | コンポーネントの準拠方法 |
|---|---|
| 1.1.1 非テキスト コンテンツ | SVG の <title> が、aria-label から取得されるか value から導出されるテキストによる代替を提供します。 |
| 1.4.11 非テキストのコントラスト | 白い背景上のデフォルトの黒いモジュールは、グラフィカル オブジェクトに対する 3:1 のコントラスト比を上回ります。 |
| 4.1.2 名前、役割、値 | SVG は role="img" を公開し、<title> をアクセシブル名として使用します。 |
ユーザー側の責任:
- スキャン後に何が起こるかを晴眼のユーザーが理解できるように、QR Code に短い可視の行動喚起を併記してください。
- エンコードされた
valueが不透明な場合 (トークンや短い識別子など) は、読み上げられるテキストが意味を持つようにaria-labelを指定してください。 - CSS 変数をオーバーライドする際は、スキャナーがコードを確実に読み取れるように、モジュールの色と背景の間に十分なコントラストを維持してください。
トラブルシューティング
React QR Code のトラブルシューティング ガイダンスは、一般的な統合およびレンダリングの問題について、問題 → 原因 → 解決策の形式で説明します。
QR コードがスキャンできないのはなぜですか?
モジュールと背景のコントラストが低すぎる、画面上でコードが小さすぎる、またはクワイエット ゾーンの余白が小さすぎることが原因です。確実にスキャンできるようにするには、デフォルトの white 上の black の色に戻し、size を大きくして、margin を 4 モジュール以上にしてください。
ロゴが設定した logoSize より小さいのはなぜですか?
ロゴは、現在の errorLevel の安全な領域に上限が設定されています。最大のロゴを許可するには、errorLevel を H に設定してください。
ロゴが表示されないのはなぜですか?
logoSrc が拒否されるソース (安全でないスキームまたは画像以外の data: URI) を使用しているか、画像の読み込みに失敗しています。有効な画像 URL または data:image/* URI を使用してください。その後に有効なソースを割り当てると、ロゴがレンダリングされます。
QR コードがダーク テーマに自動的に切り替わらなかったのはなぜですか?
暗い背景上の明色のコードは確実にスキャンできないため、QR Code の色はグローバルのライト/ダーク テーマに連動して反転しません。UI のダーク バリアント用に色を変更するには、--ig-qr-code-background と --ig-qr-code-dark-color を明示的に設定してください。
既知の制限
React QR Code には次の制限があります。
- QR Code にはスロットやイベントはありません。
- QR Code の視覚的な構造は標準化された固定のレイアウトに従うため、右から左 (RTL) のコンテキストでは反転されません。
API リファレンス
QR Code の完全な API サーフェスについては、次の API リファレンスを参照してください。
IgrQrCode
依存関係
React QR Code は、作業の開始 で追加するテーマ スタイルシートを必要とします。その他のランタイム依存関係はありません。
その他のリソース
サポートおよび関連する Ignite UI ドキュメントについては、次のリソースを参照してください。
関連コンポーネント
QR Code はスタンドアロンの表示プリミティブです。関連する視覚的コンテンツが必要な場合は、次のコンポーネントを検討してください。
FAQ
value プロパティは任意の文字列を受け入れます。一般的な用途には、URL、プレーン テキスト、支払い参照情報、ワンタイム セットアップ トークン、Wi-Fi 認証情報、vCard ペイロードなどがあります。コンポーネントは、入力が収まる最もコンパクトなエンコード モード (数字、英数字、またはバイト) を自動的に選択します。
いいえ。QR Code コンポーネントは、外部の QR 生成ライブラリに依存せず、文字列の value から完全にクライアント側で SVG を生成します。発生するネットワーク リクエストは、URL から読み込まれる中央ロゴ画像に対するもののみです。
logoSize の比率 (デフォルトは 0.4) は、安全なロゴ領域の最大値 (誤り訂正レベル H でコードの 9%) に対する割合です。QR Code は、コードがスキャン可能な状態を維持できるように、現在の errorLevel の安全な領域にロゴの上限を設定します。最大のロゴを許可するには、errorLevel を H に設定してください。
QR Code は igniteui-react パッケージに含まれています。



