Web サイトはモバイル H5 側と Web 側で適応させる必要があり、bluma などのフレックス レイアウト ソリューションが使用されます。
H5 で使用されるリストは、react-virtualized を使用してテーブルを描画します
テーブル内の 1 行のデータの特定の詳細を表示するには、通常の解決策は、新しいページまたはポップアップ ウィンドウを使用することです。
ここでは、ポップアップ ウィンドウ ソリューションが使用されており、単一行のデータをクリックした後のデータの詳細には、bluma のモーダル カードが使用されます。
具体的な詳細と例については、https://bulma.io/documentation/components/modal/ を参照してください。
問題の詳細:データの 1 行をクリックすると、ポップアップ ウィンドウに詳細なデータが表示され、モーダル カード全体が Position:fixed; に設定されます。
フッター部分はありません。モーダルカードの高さを画面全体の高さに設定します: 100vh
パフォーマンス:
解決:
modal-card 独自のソリューション:JS + CSS オーバーフロー:非表示
JS を介してポップアップ ウィンドウの下のページ HTML に CSS クラスを動的に追加します。
if ($modalButtons.length > 0) { $modalButtons.forEach(function ($el) { $el.addEventListener('click', function () { var target = $el.dataset.target; openModal(target); } ); });}関数 openModal(ターゲット) { var $target = document.getElementById(target); rootEl.classList.add('is-cliped'); $target.classList.add('is-active');}ページのスクロールを無効にするには、overflow:hidden を使用します。
is-cliped { オーバーフロー:非表示!重要}
ポップアップウィンドウが閉じたら、JS: is-clipped を介してページの CSS クラスを削除します。
function closeModals() { rootEl.classList.remove('is-cliped'); $modals.forEach(function ($el) { $el.classList.remove('is-active'); });}
ただし、この解決策をアプリケーションでテストした結果、問題は解決されず、上記の問題が依然として発生することが判明しました。
位置:固定ソリューションJS + CSS 位置:固定 + スクロールトップ
計画のアイデア:
ポップアップ ウィンドウの前:
constscrollTop = global.document.documentElement.scrollTop || global.pageYOffset || global.document.body.scrollTop;global.document.documentElement.style.position = 'fixed';this.scrollTop =scrollTop;
ポップアップ ウィンドウを閉じます。
closeModalHandler = () => { const { closeOrderHistoryModal } = this.props; global.document.documentElement.style.position = ''; .document.body.scrollTop = this.scrollTop; closeOrderHistoryModal();}
以上がこの記事の全内容です。皆様の学習のお役に立てれば幸いです。また、VeVb Wulin Network をご支援いただければ幸いです。