Я написал довольно сложный виджет, который использует OnDemandList для создания виджета, который позволяет полностью редактировать (включая добавление) хранилища.CSS-классы и виджеты: три вопроса
Теперь ... Я не совсем гуру CSS (совсем наоборот), и мне бы понравилось руководство, просто чтобы проверить, что я делаю вещи полусмысленно.
Когда я создаю редактор в моем виджете, я:
buildRendering: function(){
// ...
this.domNode = put('div');
// ...
},
postCreate: function(){
// ...
// This is here, because if I set the class in buildRendering, it gets zapped by className (the widget's declaration)
put(this.domNode, '.editable-list');
// ...
},
Затем, когда редактор добавляется динамически:
put(row.element, editingWidget.domNode);
put(editingWidget.domNode, '.editable-list-row-editor');
Я также необходимость, чтобы убедиться, что каждая строка имеет положение: абсолютное, чтобы редактор попадал в нужное место:
domStyle.set(row.element, 'position', 'relative');
В CSS, у меня есть:
.editable-list-row-editor {
position: absolute;
top: 0;
z-index: 20;
}
Вопросы:
1) Можно ли с точки зрения наилучшей практики, даже добавить стиль, как я сделал с domStyle.set(row.element, 'position', 'relative');
...? Или я сделаю это с помощью CSS? Я сделал это программно, потому что это действительно важно, что это relative
.
2) Все в порядке с CSS, чтобы оставить вещи как можно более неспецифическими? Идея заключается в том, что пользователи могут (и, вероятно, будут) писать свои собственные CSS, и переопределять вещи, написав более конкретные правила ... правильно? Или, может быть, я должен был бы написать:
.editable-list .editable-list-row-editor {
position: absolute;
top: 0;
z-index: 20;
}
Или лучше:
.editable-list .row-editor {
position: absolute;
top: 0;
z-index: 20;
}
...?
3) Из того, что я вижу, классы CSS для виджетов должны быть установлены в postCreate
, а не buildRendering
, иначе Dojo, кажется, использует className
для зап ничего, что был установлен там ... это то, что вы обычно делаете с виджет, создающий собственный domNode?
Мой добрый лорд, какой фантастический ответ ... – Merc