インターフェイス(モーダル)をブロックするがオーバーレイがない「ajaxローダーダイアログ」を表示しようとしています。
これは、ダイアログを初期化する方法です。
$("<div></div>").dialog({
modal: true,
dialogClass: "noOverlayDialog",
autoOpen: false, //opened later
...
});
オーバーレイを非表示にするために、次の CSS を追加しました。
.ui-dialog.noOverlayDialog + .ui-widget-overlay { opacity: 0 !important; }
ただし、オーバーレイを呼び出すとdialog("open")
、Javascript を使用して非表示にしたかのように、オーバーレイのフラッシュが消えます。display:none;
またはを使用しても同じ効果がありvisibility:hidden
ます。
オーバーレイを削除するのが css であることを確認するために、css の行を削除したところ、オーバーレイが常に表示されるようになりました。
なぜこうなった?私は、静的 CSS にこの種の動作をさせるべきではなく、オーバーレイをフラッシュなしですぐに非表示にする必要があると考えました。
直感的な解決策が見つからない場合は、代わりにモーダル オプションを false に設定してオーバーレイをすべて防止し、コードを記述してモーダル動作を取得することもできます。いずれにせよ、実用的なソリューションが必要です。