2012-08-09 52 views
2

我正在使用Dojo tabContainer。 快速问题:如果您正在处理Dojo容器,您是否必须在CSS中指定像素中的小部件大小? 从我所看到的,得到一个TabContainer实际显示的唯一方法是通过CSS给它一个绝对大小。标签容器的高度dojo

更新:我想通了,元素bodyhtml失踪的height属性,因此它被计算为0。所以,现在如果我将它们设置为100%,我将展示的形式......但,这将是巨大的! (只要页面)。这个想法是把它的高度设置为auto,这样它就“只要它需要......”是甚至可能的?

在我的HTML我有类似:

... 
<body> 
    <div id="loginForm"> </div> 
</body> 
... 

我那么有那么代码:

require(["app/widgets/LoginForm"], function(loginForm){ 
    // Create the "application" object, and places them in the right spot. 
    loginForm = new LoginForm({} , 'loginForm'); 
    loginForm.startup(); 
}); 

LoginForm的是一个简单的基于模板的部件与下面的模板:

<div data-dojo-attach-point="tabContainer" data-dojo-type="app.TabFading" data-dojo-props="tabPosition:'top'" style="height:100%">   

    <div data-dojo-type="dijit.layout.ContentPane" data-dojo-attach-point="loginPane" data-dojo-props="title: 'Login'"> 
    <form data-dojo-type="dijit.form.Form" data-dojo-attach-point="loginForm" method="POST"> 
     <label for="${id}_login">Login</label> 
     <input name="login" id="${id}_login" data-dojo-attach-point="login" data-dojo-type="dijit.form.ValidationTextBox" data-dojo-props="required:true"/> 
     <label for="${id}_password">Password</label> 
     <input name="password" id="${id}_password0" data-dojo-attach-point="password" data-dojo-type="app.ValidationPassword" /> 
     <input type="submit" data-dojo-attach-point="button" data-dojo-type="app.BusyButton" label="Login!" /> 
    </form> 
    </div> 
</div> 
</div> 

该CSS与基本一样:

#loginForm { 
width: 300px; 
margin: 0 auto; 
padding: 20px; 

-moz-border-radius: 20px; 
-webkit-border-radius: 20px; 

/*** Background Gradient - 2 declarations one for Firefox and one for Webkit ***/ 
background: -moz-linear-gradient(19% 75% 90deg,#FCFCFC, #CCCCCC); 
background:-webkit-gradient(linear, 0% 0%, 0% 100%, from(#FCFCFC), to(#CCCCCC)); 

/*** Shadow behind the box ***/ 
-moz-box-shadow:0px -5px 300px #a9a0a0; 
-webkit-box-shadow:0px -5px 300px #a9a0a0; 
} 

body { 
    background-color: #fcfcfc; 
    font: 9pt/1.5em Helvetica Neue, Helvetica, Arial, sans-serif; 
    margin: 0 0; 
} 

我必须使TabContainer的唯一的办法实际出现是有它的height:300px - 否则,计算出的高度为0

这是它是如何意思是什么?或者我做错了什么?

回答

25

如果在ContentPane或TabContainer上将属性doLayout设置为false,它应该自动将高度设置为内容大小。 dijit布局容器的doLayout属性默认为true,然后需要将特定高度应用于该属性。

+2

我不能,不能表达我的感谢这个答案。大家请评论这个UP UP UP。我在这方面浪费了太多时间......真的,谢谢。 – Merc 2012-08-10 01:23:33

+1

这是字面上的生活变化。这在哪里记录?它应该在Dojo文档中更加突出! – streetlight 2014-03-20 11:50:08

+1

你是非常好的人=) – 2014-05-01 09:57:49