2015-05-21 5 views
0

Я хочу добавить пользовательский класс CSS в divjit/layout/ContentPane, чтобы я мог сам его стилизовать.Пользовательский класс CSS для dijit/layout/ContentPane

Это связано с тем, что у меня в TabContainer есть несколько вкладок, где расположены мои ContentPane, и я не хочу удваивать границы. Использование границы вокруг Tab будет удвоить границу, чтобы я удалил левую границу вкладок. На первой вкладке TabContainer мне нужна левая граница.

Для этого я попытался использовать первый ContentPane собственный CSS-класс, который это сделает.

Как вы видите, я пишу здесь, я не нашел способ сделать это.

Я попробовал его в дата-додзё-реквизита с

<div data-dojo-type="dijit/layout/ContentPane" title="FunnyTitle" data-dojo-props="class:'firstTab'">

Так это не работает. Я пытался добавить его, как я делаю это в простой HTML элемент с классом = «firstTab»

<div data-dojo-type="dijit/layout/ContentPane" title="FunnyTitle" class="firstTab">

Оба способа не добавить свой класс в ContentPane.

Так как это делается?

+0

Вы проверили http://stackoverflow.com/questions/10636360/dojo-dijit-layout-tabcontainer-how-to-add-class- to-tab? – connexo

+0

Это работает для Dojo 1.7. Я получил 1.10 здесь, поэтому «pane2button», который используется там, больше не существует. – Keksdose

ответ

2

Свойство class на самом деле не используется для такого рода целей, но оно используется для идентификации типа виджета.

Однако атрибут class должен работать, потому что декларативные виджеты обычно сохраняют свои родительские атрибуты. Если у меня есть следующий HTML:

Это в конечном счете визуализируется в:

<div class="dijitContentPane test" data-dojo-type="dijit/layout/ContentPane" id="myContent" widgetid="myContent"> 
    Hello 
</div> 

Однако, обратите внимание, что при использовании dijit/layout/ContentPane Внутри dijit/layout/TabContainer много дополнительных CSS добавляется, possibily перекрывая свой собственный CSS.

Например, для подмены цвет фона вкладки внутри dijit/layout/TabContainer, я должен был использовать следующий селектор CSS:

.dijitTabContainerTop-dijitContentPane.test2 { 
    background-color: #D4D4D1; 
} 

Демо: http://jsfiddle.net/Lcog9saj/

Но также следует помнить, что границы генерируемые TabContainer, не применяются к самому ContentPane, а к элементу с именем класса .dijitTabContainerTop-container (часть самого TabContainer).


Если это действительно не работает, то вы всегда можете получить доступ к domNode свойству виджета, который вы пытаетесь изменить, например:

require(["dijit/registry", "dojo/ready", "dojo/dom-class"], function(registry, ready, domClass) { 
    ready(function() { 
     domClass.add(registry 
      .byId("myContentPane") 
      .get("domNode"), "test2"); 
    }); 
}); 
+1

Извините, я виноват. Я не был достаточно конкретным. Ваш пример добавляет класс к «Контент». Я хочу добавить класс к самой вкладке, которую TabContainer генерирует из ContentPane. Или, если вы посмотрите на мой пример, я имею в виду ту вещь, где появится текст «FunnyTitle». – Keksdose

0

Это так просто, что я Жду» Получить его.

Все, что вам нужно сделать, это добавить идентификатор в ContentPane.

Доджо генерирует widgetID с ним, как «dijit_layout_TabContainer_0_tablist_myID»

Если сам TabContainer имеет идентификатор, он может быть различным. Просто взгляните на сгенерированный код.

Теперь вы можете получить его с помощью dijit.byId.

В конце концов, это выглядит примерно так:

var tab = dijit.byId("dijit_layout_TabContainer_0_tablist_myID"); 
 
domClass.add(tab.domNode,"myClassName");

domClass является частью додзё. Для его использования вам просто нужно потребовать его «dojo/dom-class»

+1

Я вижу, что вы смешиваете старый и новый код API Dojo. 'domClass' действительно Dojo 1.7+, но' dijit.byId() 'следует заменить загрузкой модуля' dijit/registry' и с помощью 'registry.byId()'. – g00glen00b

+0

Да, это так. Спасибо за ваш намек. Btw. мой ответ не был полностью правильным. Это вызывает ошибки, если ContentPane находится внутри диалогового окна. Поэтому, если это произойдет, вам нужно также получить ContentPane ID. Dojo создаст еще один идентификатор для таблоконтейнера без изменения номера после закрытия диалога. – Keksdose