フロントエンド開発者がよく遭遇する問題は、ユーザーに情報を提示するためのポップアップ ウィンドウを作成することです。このポップアップ ウィンドウが表示されると、多くの場合、ページ コンテンツをブロックする灰色のマスク レイヤーが伴います。同時に、ページ全体がこのマスクで覆われ、クリックしたりスクロールしたりすることはできません。 解決策 1: オーバーフローを制御し、スクロールを禁止する (iOS とは互換性がありません) PC でこの効果を作成するのは非常に簡単です。画面いっぱいに表示するために HTML の高さを 100% に設定し、ページがスクロールできないように HTML のオーバーフローを非表示に設定するだけです。 html.style.overflow="非表示"; html.style.height="100%"; body.style.overflow="非表示"; body.style.height="100%"; その理由は、モバイル端末がタッチイベントに基づいているためです。タッチイベントに基づいてスクロールを禁止するには、HTML でスクロールを禁止することを前提として、スクロールを禁止する必要があるコンテンツにラップするブロックレベル要素を追加し、このラップするブロックレベル要素の高さを 100% に設定し、overflow:hidden; を設定する必要があります。次に、ここで、必要なブロックレベル要素であるページ全体をラップする body を考えます。スクロールを禁止するように設定することで、モバイルページのスライド時間がページスクロールをトリガーしないようにすることができます。 html.style.overflow="表示可能"; html.style.height="auto"; body.style.overflow="表示可能"; body.style.height="auto"; これらのスタイルは、対応する CSS プロパティのデフォルトのスタイルとまったく同じです。 解決策 2: 絶対/固定レイアウトにより、ジェスチャ スクロール イベントのバブルが防止されます (PC では効果がありません) モバイル端末のスクロールが画面のタッチイベントに基づいているからこそ、2番目のソリューションが生まれました(Taobao Mobileはこのソリューションを採用しています)。 ソリューション 2 の完全なテスト ソース コードを以下に掲載します。 <!DOCTYPE html> <html> <ヘッド> <メタ文字セット="UTF-8"> <タイトル></タイトル> <スタイル> .メインコンテンツ{ 位置:相対; 幅:100%; 背景色:#ccc; 高さ:2000ピクセル; } .メインコンテンツ .トリガー{ 幅:200px; 高さ:100px; フォントサイズ:30px; 色:#000; } .メインコンテンツ.bottom{ 位置:絶対; 下:0; 左:0; 幅:100%; 高さ:200px; 背景色:赤; } .ブラックシールド{ 位置:固定; トップ:0; 左:0; 幅:100%; 高さ:100%; 背景色:rgba(10,10,10,0.4); zインデックス:10; } .black-shield .info{ フォントサイズ:40px; 色:#000; 境界線:1px実線; zインデックス:20; } </スタイル> </head> <本文> <div class="main-content"> <button id="trigger" class="trigger">オン/オフ</button> <div class="bottom"></div> </div> <div id="シールド" class="black-shield" style="display:none;"> <div id="info" class="info">現在の黒い画面がポップアップ表示された後は、ページをスライドすることはできません。現在のテキストをクリックして、黒い画面を閉じます</div> </div> <スクリプト> 関数test2(){ var showShield=false; var シールド = document.getElementById("シールド"); var トリガー = document.getElementById("トリガー"); var info = document.getElementById("info"); var 本文 = document.querySelector("本文"); var html = document.querySelector("html"); //クリックすると黒い画面が表示されますtrigger.addEventListener("click",function(){ shield.style.display="ブロック"; }、間違い); //クリックすると黒いカーテンが閉じます info.addEventListener("touchstart",function(){ シールドスタイルの表示="なし"; }、間違い); //ブラックスクリーンレイヤーのタッチイベントをブロックします shield.addEventListener("touchstart",function(e){ e.stopPropagation(); e.preventDefault(); }、間違い); } テスト2(); </スクリプト> </本文> </html> これで、フロントエンドページのポップアップマスクによるページスクロール防止に関する記事は終了です。ポップアップマスクによるページスクロール防止に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 |
>>: 数ステップでサイバーパンク2077風の視覚効果を実現するCSS
目次序文:システム要件:インストール環境:古いバージョンをアンインストールします: yum は具体的...
以下に記録されているように、WIN10システムにMYSQLをダウンロードしてインストールするための詳...
MySQL には、msi インストールと zip 解凍の 2 つのインストール方法があります。 zi...
基本概念操作の前に、まずいくつかの基本的な概念を理解する必要がありますディスクLinux システムで...
1. 既存のnginxがipv6をサポートしているかどうかを確認する既存の nginx が ipv6...
この記事の例では、カード配布アニメーションを実装するためのJSの具体的なコードを参考までに共有してい...
nginx のサーバーと場所の構成を簡単に整理してみましょう。たとえば、URL: www.mask_...
この記事では、VMware WorkstationにKylinをインストールする方法を参考までに紹介...
次のコマンドを実行します: glxinfo | grep レンダリング結果が「はい」の場合、グラフィ...
目次序文インストールと使用方法モジュラー管理Vuex の状態永続性要約する序文Vue 開発では、ユー...
目次変換前:変換後: 0x0の基本0x1 「固定高さ」の仮想リストを実装する原理:最適化: 0x2 ...
1.1. ダウンロード:公式ウェブサイトから zip パッケージをダウンロードします。私は 64 ビ...
目次1. JavaScriptで配列を作成する方法2. 配列メソッドの概要3. 方法の詳細な説明1....
開発を行う際に、次のような状況に遭遇することがよくあります。 a.swf が Web ページに追加さ...
注記記事表示リストインターフェースを開発する場合、情報の基本的な概要を提供するために記事ヘッダーコン...