0

几个星期以来,我一直在努力解决这个问题,所以我不确定这是不可能的,还是我缺乏编码能力……或者两者兼而有之。我不是程序员,我是 Dojo Toolkit 的新手。

我有一个使用 BorderContainer 布局的站点。我正在尝试创建一种效果,我可以使用按钮打开和关闭将包含控件的下拉类型框。我需要在页面加载时隐藏此下拉菜单,然后在单击按钮时打开。

我的问题是,当我打开下拉列表时,它会将其下方的内容窗格推离浏览器窗口的底部。当下拉菜单打开时,我需要下部 ContentPane 保持在浏览器窗口的剩余空间内。此外,我希望下拉菜单位于其下方内容的可滚动容器之外,这就是为什么我将其设置为位于其下方的嵌套 BorderContainer 之外的原因。

我创建了一个简化版本的代码来展示我的挑战(见下面的链接)。如果加载页面,您可以看到中心 ContentPane 滚动内容。但是,如果您随后单击该按钮,则会在内容上方展开一个下拉 div。然后,当您滚动时,您会注意到您看不到完整的窗格,因为它位于浏览器窗口底部下方的无人区。我假设因为 div 在加载时设置为 display:none,所以页面加载时不考虑它的大小。然后,当您通过按下按钮打开它时,它的大小是相加的,下面的窗格不知道如何调整大小或考虑新元素。

我试过使用可见性属性,但是当它仍然关闭时,它会给 div 留下一个空白。我已经修改了一些代码来控制显示承诺的高度,但是我的每个下拉框的大小都会不同,所以我更喜欢将高度设置为“自动”而不是指定的像素大小。

有谁知道我如何做到这一点,以便下部窗格适合空间而不会推开屏幕?

这是该页面的示例:

http://equium.com/scaffold.html

(我在尝试将完整的 HTML 页面作为代码示例插入此处时遇到了一些问题,因此,如果这是一种更好的处理方式,并且有人可以让我知道嵌入所有代码的最佳方式,我将不胜感激。)

谢谢提前,我真的很感激任何人的反馈。

4

4 回答 4

2

您可能想看一下dojox.layout.ExpandoPane(尽管请注意,我认为它只在顶部和左侧区域正常工作了一段时间)。

另外,我建议稍微简化/更改您的布局。请参见此处的示例:

http://jsfiddle.net/taFzv/

(它可能需要一些调整才能得到你想要的。)

您遇到的真正问题可能是 BorderContainer 不知道视图的某些部分已调整大小。ExpandoPane 通过告诉 BorderContainer 在其动画完成后重新布局来处理这一点。

于 2011-10-02T20:47:47.130 回答
1

它在IE8.0下工作。当下拉框打开时,在页面上按住鼠标并拖动到底部,您可以看到内容被推到页面外。它看起来浏览器无法检测到它并且无法将其添加到“滚动条”帐户。

于 2012-03-15T06:54:56.007 回答
0

我建议取出所有 BorderContainers,除了你的顶层,那个以 mainPage 作为 id 的。

将您的 {stuff here} div 放入 mainPage BorderContainer 中,在 ContentPane 之后使用关闭/打开按钮。确保将其设为 dojotype dijit.layout.ContentPane,设置 layoutpriority,并将区域设置为顶部。单击打开/关闭按钮时将高度设置为 0/x,而不是设置显示。

再次尝试您的页面。如果这不能解决它,您可能需要调用布局、调整大小或两者,以向 BorderContainer 指示它需要评估其所有子级并正确调整“中心”窗格的大小。像 dijit.byId("mainPage").layout(); 在您更改任何 BorderContainer 子项的高度后,只要有人按下关闭/打开按钮,请执行此操作。

于 2011-10-04T01:00:00.127 回答
0

也许dijit.form.DropDownButton会满足您的需求。单击按钮时,会显示一个工具提示,可以填充您想要的任何内容。正如您指定的那样,下拉工具提示仅在您单击按钮时显示,并且根本不会与底层布局混淆。工具提示位于页面的“顶部”。

于 2011-10-31T16:27:41.283 回答