elementまたはextJSウィジェットの色、フォントサイズ、背景などのスタイルを次のコードを使用して変更したかったが、機能しなかった。
Ext.get('mydivid').setStyle({.......}); // does not work
Ext.get('mydivid').applyStyle({.......}); // does not work
Ext.select('mydivid').applyStyle({.......}); // does not work
Ext.query('.myclass').applyStyle({.......}); // does not work
そして、extJsウィジェットの場合、Ext.getCmp
。
CSSではなくextJSを使用してhtml要素とextJSウィジェットのスタイルを変更する方法を知っている人はいますか?
HTML DOM要素のスタイルの変更は非常に簡単です。
[〜#〜] html [〜#〜]
<html>
<head>
<title>Test</title>
</head>
<body>
<div id="el1">Element 1</div>
<div class="el">Element [1]</div>
<div class="el">Element [2]</div>
</body>
</html>
Javascript
Ext.onReady(function() {
Ext.get('el1').setStyle('color', 'red');
Ext.select('.el').setStyle('color', 'green');
});
Ext.query
は、見つかったDOMノードの単純な配列を返すため、直接機能しません。そのため、スタイルを適用するには、結果をループする必要があります。あなたは正確に何をしましたか?
残念ながら、ウィジェットのスタイル設定はそれほど簡単ではありません。ほとんどのウィジェットは、cls
、ctCls
、bodyCls
、またはstyle
などのスタイリング属性を提供しますが、コンポーネントのレンダリング時に適用されます。レンダリング後にウィジェットのスタイルを変更するには、上記のメソッドを使用してウィジェットのDOM要素を直接変更する必要があります。
あなたの質問にタイプミスがあります:
applyStyleではなくapplyStylesです。
applyStylesはExt.Elementのメソッドであり、次のように使用できます。
var win = new Ext.Window({
width: 200,
height: 200
});
win.show();
win.body.applyStyles({
'background-color':'red',
'border': '1px solid blue'
});
ウィジェットでは次のことが可能です(ただし、レンダリング中にstyle
configプロパティが適用されるため、レンダリングされる前のみ)。
Ext.define('Ext.Component', {
style: {},
initComponent: function(config) {
this.callParent(config);
this.style['background-color'] = 'red';
}
});
これは、他の構成設定の特定の値に基づいて行動している場合に役立ちます。
指摘したように、レンダリング後カプセル化されたExt.Element
のsetStyle()メソッドにアクセスできます。
component.getEl().setStyle(config);
最後に、肉に直行し、カプセル化されたDOM element
に直接アクセスできます。
component.getEl().dom.style.backgroundColor = 'red';