メインコンテンツへスキップ

オーバーレイ

美しいオーバーレイ、ツールチップ、ポップオーバー、その他必要なものを配置するためのコンポーネントのセットです。

概要

React-Bootstrapのオーバーレイコンポーネントについて知っておくべきこと。

  • オーバーレイは、サードパーティライブラリのPopper.jsに依存しています。これはReact-Bootstrapに自動的に含まれていますが、より高度なユースケースについてはAPIを参照する必要があります。
  • <Tooltip>および<Popover>コンポーネントは、それ自体を配置しません。代わりに、<Overlay>(または<OverlayTrigger>)コンポーネントがrefおよびstyleプロパティを注入します。
  • Tooltipは、<Overlay>コンポーネントによって注入された特定のプロパティを予期します。
  • disabled要素のツールチップは、ラッパー要素でトリガーする必要があります。

オーバーレイ

Overlayは、ツールチップの配置と可視性を制御するための基本コンポーネントです。これはPopper.jsのラッパーであり、トランジションと可視性の切り替えのサポートを追加します。

オーバーレイの作成

オーバーレイは、少なくとも2つの要素で構成されます。配置される要素である「オーバーレイ」と、オーバーレイが配置される基準となる要素である「ターゲット」です。また、ツールチップやポップオーバーのように、「矢印」要素を持つこともできますが、これはオプションです。注入されたプロパティの詳細については、Popperのドキュメントを確認してください。

結果
ロード中...
ライブエディター

オーバーレイレンダリングのカスタマイズ

Overlayは、レンダリング動作をカスタマイズするために使用できる多くのプロパティを注入します。Popperが適切に測定および配置できる前に、オーバーレイを表示する必要がある場合があります。React-Bootstrapでは、ツールチップとポップオーバーは、オーバーレイの初期位置が正しくないという問題を回避するために、不透明度と位置を設定します。これがどのように行われるかの例については、Tooltipの実装を参照してください。

OverlayTrigger

上記のようなパターンは非常に一般的ですが、冗長であるため、一般的なユースケースを支援するために<OverlayTrigger>コンポーネントが含まれています。遅延表示または非表示の機能や、組み合わせることができるいくつかの異なる「トリガー」イベントも備えています。

トリガーコンポーネントは、<OverlayTrigger>が追加を試みるため、refを受け入れることができる必要があります。関数コンポーネントには、forwardRef()を使用できます。

結果
ロード中...
ライブエディター

トリガー動作のカスタマイズ

より高度な動作のために、<OverlayTrigger>は、設定されたtriggerプロパティに対応する注入されたrefとイベントハンドラーを渡す関数子を受け入れます。

プロパティを手動で任意の要素に適用したり、分割したりできます。以下の例は、オーバーレイの可視性をトリガーする要素とは異なる要素にオーバーレイを配置する方法を示しています。

結果
ロード中...
ライブエディター

ツールチップ

アンカータグのよりスタイリッシュな代替としてのツールチップコンポーネント title属性。

ツールチップを表示するには、以下のリンクにカーソルを合わせてください。

結果
ロード中...
ライブエディター

Overlayが注入したプロパティをTooltipコンポーネントに直接渡すことができます。

結果
ロード中...
ライブエディター

または、代わりにTooltip要素をOverlayTriggerに渡します。

結果
ロード中...
ライブエディター

ポップオーバー

iOSにあるようなポップオーバーコンポーネント。

結果
ロード中...
ライブエディター

<Tooltip>と同様に、Popoverの配置を制御できます。

結果
ロード中...
ライブエディター

無効な要素

disabled属性を持つ要素はインタラクティブではなく、ユーザーがそれらにカーソルを合わせたりクリックしたりしてポップオーバー(またはツールチップ)をトリガーすることはできません。回避策として、ラッパー<div>または<span>からオーバーレイをトリガーし、無効な要素のpointer-eventsをオーバーライドする必要があります。

結果
ロード中...
ライブエディター

コンテナーの変更

オーバーレイが追加されるDOM要素を制御するためにcontainerを指定できます。これは、スタイルがオーバーレイと競合する場合に特に役立ちます。

結果
ロード中...
ライブエディター

位置を動的に更新する

オーバーレイのサイズが変更されるたびに把握することはできないため、位置を変更する場合は、変更に応じてオーバーレイの位置を更新するために手動で操作する必要があります。

このため、Overlayコンポーネントは、オーバーレイコンポーネントが自身の位置を変更するために使用できるscheduleUpdate()メソッドを持つpopperプロパティも注入します。

結果
ロード中...
ライブエディター

API

Overlay

OverlayTrigger

Tooltip

Popover

PopoverBody

PopoverHeader