Ext.applcation の起動メソッド内にロードマスクを追加して、表示時にウィンドウなどのフローティングコンポーネントもカバーするようにするにはどうすればよいですか?
現在、マスクは機能しますが、開いているウィンドウはカバーされません。
CSSを使用したソリューションを好みました:
body.x-masked .x-mask {
z-index: 20000;
}
ウィンドウの z-index は 19001 なので、20000 は悪くありません。
すべてがロードされたときに非表示になるカスタムローダーを作成できます...
1.本文にhtmlホルダーを作成します。
<div id="loading-mask"></div>
<div id="loading">
<span id="loading-message">Loading. Please wait...</span>
</div>
2. css を追加してマスクを適切に配置します。
#loading-mask {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #ffffff;
z-index: 1;
}
#loading {
position: absolute;
top: 40%;
left: 45%;
z-index: 2;
font-family: tahoma,arial,verdana,sans-serif;
font-size: 12px;
}
#loading span {
padding: 5px 30px;
display: block;
}
3. Ext.onReady 呼び出しの外側で js 関数を作成します。
function hidePreloader() {
var loadingMask = Ext.get('loading-mask');
var loading = Ext.get('loading');
// Hide loading message
loading.fadeOut({ duration: 0.2, remove: true });
// Hide loading mask
loadingMask.setOpacity(0.9);
loadingMask.shift({
xy: loading.getXY(),
width: loading.getWidth(),
height: loading.getHeight(),
remove: true,
duration: 1,
opacity: 0.1,
easing: 'bounceOut'
});
}
4.すべてのコンポーネントとタスクが完了して準備ができたら、hidePreloader メソッドを呼び出します。この場合、app.js 起動メソッドの読み込みが完了した後です。次に例を示します。
listeners: {
afterrender: function(form) {
hidePreloader();
}
}