Подтвердить что ты не робот

Как установить стили с помощью ExtJS

Я хотел изменить стили, такие как цвет, размер шрифта, фон и т.д. элемента или виджет 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

И для виджета extJ я попытался использовать Ext.getCmp.

Кто-нибудь знает, как изменить стили элемента html и виджета extJS с помощью extJS, а не CSS?

4b9b3361

Ответ 1

Изменение стиля элементов 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 виджета, используя приведенные выше методы.

Ответ 2

В вашем вопросе есть опечатка в ошибке:

он не применяетсяStyle, но 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'
});

Ответ 3

В виджетах (но только до его рендеринга) возможно следующее: поскольку свойство style применяется во время рендеринга):

Ext.define('Ext.Component', {
  style: {},
  initComponent: function(config) {
    this.callParent(config);
    this.style['background-color'] = 'red';
  }
});

Это полезно, если вы говорите, что используете какое-то определенное значение для какой-либо другой настройки конфигурации.

Как уже указывалось, у вас есть доступ к методу setStyle() инкапсулированного Ext.Element:

component.getEl().setStyle(config);

Наконец, вы можете сразу перейти к мясу и напрямую обратиться к инкапсулированному DOM element:

component.getEl().dom.style.backgroundColor = 'red';