2011-07-21 132 views
6

注意:这与this question有关。Dojo按钮设置宽度

我想以编程方式创建道场按钮这样的:

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

现在即使我指定的宽度,同时显示该按钮的宽度设置为最小(即文本+保证金)。 answer中解释的原因是dojo覆盖按钮的css样式(class="dijitButtonNode")。进一步(在相同的答案中)宽度是通过覆盖同一类的样式设置的。

是否有可能做到这一点(即设置宽度)没有这种CSS解决方法?

回答

7

最后,我解决了它。要使用dojo.style功能

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

当你自己解决问题时,你可以接受你自己的答案 - 帮助把它从未确认的队列中解放出来。 – hugomg

+0

@missingno感谢提醒我忘了:-) – Gaurav

3

为我工作组,我们必须设置宽度宽度:

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

你可以通过提供一些上下文来改善你的答案 - 为什么这个工作?有参考文件吗? – Dhara

+0

棒极了!谢谢。 – OammieR

+0

上面的代码有效,但是如何设置高度? domstyle.set(btnOk.domNode,“height”,“30px”)不起作用 –

0

另一种可能的解决方案是将类添加到按钮:

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

在您的CSS中:

.normalButton span{ 
    width: 100px; 
} 

额外:如果你添加这个类,你的文本对齐将会混乱。这可以通过添加以下CSS规则来解决:

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

最后,检查出my fiddle

0

全宽按钮: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%; 
}