最初のスクロール可能な親を探す
2023-08-10 10:44:37
質問
ある要素をビューポートにスクロールさせなければならない状況があります。問題は、どの要素がスクロール可能であるかがわからないことです。例えば、ポートレートではボディがスクロール可能で、ランドスケープでは他の要素がスクロール可能です(そして、スクロール可能な要素を変更する状況はもっとあります)。
今問題なのは、ビューポートにスクロールさせる必要がある要素がある場合、その最初のスクロール可能な親要素を見つける最良の方法は何でしょうか?
私はデモをセットアップしました。 ここで . このボタンで、2つの異なる状況を切り換えることができます。
<div class="outer">
<div class="inner">
<div class="content">
...
<span>Scroll me into view</span>
</div>
</div>
</div>
本文はスクロール可能か
.outer
何か提案はありますか?
どのように解決するのですか?
スクロールバーが表示されているかどうかを確認し、表示されていない場合は、親を探します。
function getScrollParent(node) {
if (node == null) {
return null;
}
if (node.scrollHeight > node.clientHeight) {
return node;
} else {
return getScrollParent(node.parentNode);
}
}
関連
-
[解決済み] CSSの親セレクタはありますか?
-
[解決済み] JavaScriptのオブジェクトの配列からidでオブジェクトを検索する
-
[解決済み] 最初の要素にクラスを指定するCSSセレクタ
-
[解決済み] CSSでdivを縦にスクロールできるようにする
-
[解決済み】Divの高さが100%で、コンテンツに合わせて拡大される。
-
[解決済み] Google maps API V3 - 同一地点に複数のマーカーを設置する。
-
[解決済み] TypeScriptのdeclare classとinterfaceの違いとは?
-
[解決済み] react-routerのハッシュフラグメントからクエリパラメータを取得する
-
[解決済み] JSHintの'+'前の改行不良の説明
-
[解決済み] position: absolute "が親コンテナではなく、ドキュメントに対する相対的なものであることを強制する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Javascriptによるタッチスクリーンデバイスの検出
-
[解決済み] チェックボックスが選択されているかどうかを確認するjQuery
-
[解決済み] なぜ "use strict "はパフォーマンスを10倍向上させるのか?
-
[解決済み] javascript の関数から `undefined` と `null` のどちらを返すのが良いのでしょうか?
-
[解決済み] WebStormで未解決の変数が大量にある場合の警告に対処する方法は?
-
[解決済み] JavaScriptで:hoverのCSSプロパティを変更する
-
[解決済み] ECMAScriptとは?
-
[解決済み] JavaScript で css プロパティを使用して HTML 要素の背景色を設定する方法
-
[解決済み] querySelectorAllがない場合、ライブラリを使用せずに属性で要素を取得する?
-
[解決済み] JavaScriptの文字列プリミティブとStringオブジェクトの違いは何ですか?