2011-07-21 11 views
6

Uwaga: Jest to powiązane z this question.Ustawienie szerokości dla przycisku Dojo

Próbuję utworzyć przycisk dojo programowo tak:

var btnOK = new dijit.form.Button({ 
    label: "OK", 
    showLabel: true, 
    style: "height: 20px; width: 50px;" 
}); 

Teraz chociaż określić szerokość, podczas wyświetlania przycisk szerokość jest ustawiony na minimum (czyli tekstu + marża). Powodem opisanym w answer jest to, że dojo zastępuje styl css dla przycisku (class="dijitButtonNode"). Dalej (w tej samej odpowiedzi) szerokość jest ustalana przez nadpisywanie stylów dla tej samej klasy.

Czy można to zrobić (tj. Ustawić szerokość) bez obejścia tego kodu CSS?

Odpowiedz

7

W końcu to rozwiązałem. Aby ustawić szerokość musimy ustawić szerokość użyciu dojo.style funkcję

dojo.create("button",{id: "btnOK",type: "button"},dojo.body()); 

    var btnOK = new dijit.form.Button({ 
       label: "OK", 
       showLabel: true, 
       style: "height: 20px;" 
       }, 
       "btnOK"); 

    dojo.style("btnOK","width","40px"); 
+0

Możesz zaakceptować własną odpowiedź, gdy samodzielnie rozwiązujesz problemy - pomaga wydostać się z nieusuniętej kolejki. – hugomg

+0

@missingno dzięki za przypomnienie Zapomniałem tego :-) – Gaurav

3

pracował dla mnie:

domStyle.set(btnOk.domNode, "width", "100px"); 
    domStyle.set(btnOk.domNode.firstChild, "display", "block"); 
+4

Możesz poprawić swoją odpowiedź, podając pewien kontekst - dlaczego to działa? Czy istnieje dokument referencyjny? – Dhara

+0

Znakomity! Dzięki. – OammieR

+0

zadziałały powyższe kody, ale jak ustawić wysokość? domstyle.set (btnOk.domNode, "height", "30px") nie działa –

0

Innym możliwym rozwiązaniem jest dodanie klasy do przycisku:

<input type="button" data-dojo-props="label : 'Test'" class="normalButton" id="test" data-dojo-type="dijit/form/Button" /> 

W swoim CSS:

.normalButton span{ 
    width: 100px; 
} 

Dodatkowe: jeśli dodasz tę klasę, twoje wyrównanie tekstu zostanie pomieszane. Problem ten można rozwiązać poprzez dodanie następujących reguł CSS:

.{your theme: eg. tundra} .dijitButtonText{ 
    padding: 0; 
} 

Wreszcie, sprawdź my fiddle.

0

Pełna przycisk Szerokość: https://jsfiddle.net/51jzyam7/

HTML:

<body class="claro"> 
    <button id="myButtonNode" type="button"></button> 
</body> 

JS:

require(["dijit/form/Button", "dojo/dom", "dojo/domReady!"], 
    function(Button, dom){ 
    var myButton = new Button({ 
    label: "My big button", 
    class: 'myCSSClass', 
}, "myButtonNode").startup(); 
}); 

CSS:

.dijitButton.myCSSClass{ 
    display: block; 
} 
.dijitButton.myCSSClass .dijitButtonNode{ 
    width:100%; 
} 
Powiązane problemy