我已经挣扎了几个星期试图破解这个坚果,所以我不确定这是不可能的,或者是否是我缺乏编码剁......或两者兼而有之。我不是程序员,我是Dojo Toolkit的新手。
我有一个使用BorderContainer布局的网站。我正在尝试创建一个效果,我可以使用按钮打开和关闭将包含控件的下拉类型框。我需要在页面加载时隐藏此下拉列表,然后在单击按钮时打开。
我的问题是,当我打开下拉列表时,它会将其下方的内容窗格推离浏览器窗口的底部。当下拉列表打开时,我需要较低的ContentPane以保持适合浏览器窗口的剩余空间。另外,我希望下拉列表位于可滚动容器之外的下面的内容中,这就是为什么我将它设置为位于它下面的嵌套BorderContainer之外。
我已经创建了一个简化版的代码来演示我的挑战(请参阅下面的链接)。如果您加载页面,您可以看到中心ContentPane滚动内容。但是,如果您再单击该按钮,则下拉列表会在内容上方展开。然后当您滚动时,您会注意到您无法看到整个窗格,因为它位于浏览器窗口底部下方的无人区域中。我假设因为div设置为display:none on load,它的大小不计入页面加载。然后,当您通过按下按钮打开它时,它的大小是附加的,下面的窗格不知道如何调整大小或考虑新元素。
我尝试过使用visibility属性,但是当div仍然关闭时会留下一个空隙。我修改了一些控制显示承诺高度的代码,但我的每个下拉框都有不同的大小,所以我更喜欢将高度设置为“auto”而不是指定的像素大小。
有没有人知道如何才能实现这一点,以便下窗格适合空间而不会推开屏幕?
以下是该页面的示例:
http://equium.com/scaffold.html
(我在尝试将完整的HTML页面作为代码示例插入时遇到了一些问题,所以如果这是一种更好的方式来处理它,有人可以让我知道嵌入所有代码的最佳方法,我会很感激它)。
感谢提前,我真的很乐意回应任何人的反馈。
答案 0 :(得分:2)
您可能需要查看dojox.layout.ExpandoPane
(但请注意,我认为它只适用于顶部和左侧区域一段时间)。
另外,我建议稍微简化/改变你的布局。见这里的例子:
(可能需要进行一些调整才能得到你想要的东西。)
您遇到的真正问题可能是BorderContainer不知道视图的某些部分已调整大小。 ExpandoPane通过告诉BorderContainer在动画完成后重新布局来处理这个问题。
答案 1 :(得分:1)
它在IE8.0下运行。当下拉框打开时,只需将鼠标从页面上按下并拖动到底部,就可以看到内容被推送到页面外。它看起来浏览器无法检测到它,也无法将其添加到“滚动条”帐户。
答案 2 :(得分:0)
我建议取出除顶层之外的所有BorderContainers,其中mainPage为id。
将您的{stuff here} div放入mainPage BorderContainer,在ContentPane之后使用Close / Open按钮。确保将其设为dojotype dijit.layout.ContentPane,设置layoutpriority,并将region设置为top。单击“打开/关闭”按钮时,将高度设置为0 / x,而不是设置显示。
再次尝试您的网页。如果这不能解决问题,您可能需要调用布局,调整大小或两者,以向BorderContainer指示它需要评估其所有子项并正确调整“中心”窗格的大小。像dijit.byId(“mainPage”)。layout();在更改任何BorderContainer子项的高度后,任何人按下“关闭/打开”按钮时执行此操作。
答案 3 :(得分:0)
也许dijit.form.DropDownButton符合您的需求。单击该按钮时,将显示一个工具提示,可以填充所需的任何内容。正如您指定的那样,下拉工具提示仅在您单击按钮时显示,并且根本不会混淆底层布局。工具提示位于页面的“顶部”。