Visual viewport API
VisualViewport は視覚的ビューポート API のインターフェイスで、指定されたウィンドウの視覚的ビューポートを表します。 iframe があるページでは、コンテナーページだけでなく、それぞれの iframe にも固有のウィンドウオブジェクトが存在します。ページ上の各ウィンドウには、そのウィンドウに関連付けられたプロパティを表す固有の VisualViewport が存在します。
ウィンドウの視覚的ビューポートは、 Window.visualViewport を使用して取得することができます。
EventTarget VisualViewport
対応ブラウザ
| 機能 | デスクトップ | モバイル | ||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Safari | Chrome Android | Safari iOS | |
| 61 | 79 | 91 | 13 | 61 | 13 | |
| height は VisualViewport インターフェイスの読み取り専用プロパティで、視覚的ビューポートの高さを CSS ピクセルで返します。現在の文書が完全にアクティブでない場合は、0 を返します。 | 61 | 79 | 91 | 13 | 61 | 13 |
| offsetLeft は VisualViewport インターフェイスの読み取り専用プロパティで、視覚的ビューポートの左端の、レイアウトビューポートの左端からのオフセットを CSS ピクセル単位で返します。現在の文書が完全にアクティブでない場合は 0 が返されます。 | 61 | 79 | 91 | 13 | 61 | 13 |
| offsetTop は VisualViewport インターフェイスの読み取り専用プロパティで、視覚的ビューポートの上端の、レイアウトビューポートの上端からのオフセットを CSS ピクセル単位で返します。現在の文書が完全にアクティブでない場合は 0 が返されます。 | 61 | 79 | 91 | 13 | 61 | 13 |
| pageLeft は VisualViewport インターフェイスの読み取り専用プロパティで、初期包含ブロックの原点を基準とした視覚的ビューポートの左端の x 座標を CSS ピクセルで返します。または、現在の文書が完全にアクティブでない場合は 0 を返します。 | 61 | 79 | 91 | 13 | 61 | 13 |
| pageTop は VisualViewport インターフェイスの読み取り専用プロパティで、初期包含ブロックの原点を基準とした視覚的ビューポートの上端の y 座標を CSS ピクセルで返します。または、現在の文書が完全にアクティブでない場合は 0 を返します。 | 61 | 79 | 91 | 13 | 61 | 13 |
| resize は VisualViewport インターフェイスのイベントで、視覚的ビューポートがリサイズされた際に発行されます。これによって、通常はレイアウトビューポートに固定されている要素を、視覚的ビューポートがズームされた際に相対的に位置指定することができます。 | 62 | 79 | 91 | 13 | 62 | 13 |
| scale は VisualViewport インターフェイスの読み取り専用プロパティで、視覚的ビューポートに適用されたピンチズームの拡大縮小係数を返します。現在の文書が完全にアクティブでない場合は 0、出力端末がない場合は 1 を返します。 | 61 | 79 | 91 | 13 | 61 | 13 |
| scroll は VisualViewport インターフェイスのイベントは、視覚的ビューポートがスクロールされた際に発行されます。これによって、通常はレイアウトビューポートに固定されている要素を、視覚的ビューポートがスクロールされた際に相対的に位置指定することができます。 | 62 | 79 | 91 | 13 | 62 | 13 |
| scrollend は VisualViewport インターフェイスのイベントで、視覚的ビューポートのスクロール操作が終了したときに発行されます。これにより、スクロール操作が完了したときに要素を更新することができます。例えば、 VisualViewport/resizeevent イベントと VisualViewport/scrollevent イベントを使用して、ピンチズームやスクロールが行われる際に要素が視覚的ビューポートに固定されるようにし、scrollend を使用してスクロールが終了したときに新しいコンテンツで要素を更新することができます。 | 126 | 126 | 150 | | 126 | |
| width は VisualViewport インターフェイスの読み取り専用プロパティで、視覚的ビューポートの幅を CSS ピクセルで返します。現在の文書が完全にアクティブでない場合は、0 を返します。 | 61 | 79 | 91 | 13 | 61 | 13 |
| visualViewport は Window インターフェイスの読み取り専用プロパティで、特定のウィンドウの視覚的ビューポートを表す VisualViewport オブジェクトを返します。 | 61 | 79 | 91 | 13 | 61 | 13 |
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (62)
- onresize`イベントハンドラプロパティはサポートされていません。
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (62)
- onresize`イベントハンドラプロパティはサポートされていません。
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (62)
- `onscroll` イベントハンドラプロパティはサポートされていません。
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (62)
- `onscroll` イベントハンドラプロパティはサポートされていません。
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (126)
- `onscrollend` イベントハンドラプロパティはサポートされていません。バグ 325307785 を参照してください。
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (126)
- `onscrollend` イベントハンドラプロパティはサポートされていません。バグ 325307785 を参照してください。
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (126)
- `onscrollend` イベントハンドラプロパティはサポートされていません。バグ 325307785 を参照してください。
実務での使いどころ
-
Visual viewport API の活用
VisualViewport は視覚的ビューポート API のインターフェイスで、指定されたウィンドウの視覚的ビューポートを表します。
注意点
- 古いブラウザでは対応していない場合がある。
実装メモ
- 一部の API はセキュアコンテキスト (HTTPS) やユーザー操作起点を必要とする。利用前に要件を確認すること。