コンポーネント
← すべてのコンポーネント

要素の移送

stimeo--portal

connect で要素を別の DOM 位置(例: body 直下)へ移送し、disconnect で後始末する。

stimeo--portal コントローラは要素を別の DOM 位置へ移送します。祖先の overflow: hidden・transform・重なり文脈を抜け出す必要があるオーバーレイの共有土台です。connect で content ターゲット(無ければ this.element)を to(既定 body)に一致する最初の要素へ、position に従って append / prepend で移送し、原位置にコメントプレースホルダを残します。disconnect では restore が真なら原位置へ戻し、そうでなければ除去するため、孤児ノードを残しません(Turbo 遷移含む)。移送ノードは data-portaled を持ち、宛先と共に mount / unmount を発火します。挙動のみで配置計算は持たず(stimeo-ui/positioning と組む)、フォーカストラップも行いません(Focus Scope / 各オーバーレイと組む)。Turbo では content ターゲット形を推奨し、コントローラが原位置の source に残ることで disconnect が確実に発火します。移送はプレースホルダで冪等化され、観測器が要素移動時に出す connect/disconnect の churn にも耐えます。

実行中

カードは connect で <body> へ移送されるため、この切り取られたボックスを抜け出してビューポート隅に浮きます。

私は <body> 直下に描画されています — 上の破線ボックスの外です。

用途: overflow: hidden や z-index / transform に阻まれるツールチップ/ポップオーバー/モーダルを <body> 直下へ逃がし、クリップや重なり順の問題を避けます。