和往常一样,我在使用ie和CSS时遇到了一个问题。我正在使用GWT DockPanel创建一个网站,有一个标题,一个主要部分和一个页脚,所有的垂直面板,我在运行时添加不同的复合材料/元素。
RootPanel rootPnl = RootPanel.get("rootContainer");
final DockPanel dockPanel = new DockPanel();
dockPanel.setWidth("100%");
dockPanel.setHeight("100%");
rootPnl.add(dockPanel);
final VerticalPanel headerPanel = new VerticalPanel();
headerPanel.setSpacing(10);
headerPanel.setStyleName("gwt-HeaderPanel");
dockPanel.add(headerPanel, DockPanel.NORTH);
dockPanel.setCellHeight(headerPanel, "100px");
final VerticalPanel mainPanel = new VerticalPanel();
mainPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
mainPanel.setStyleName("gwt-MainPanel");
dockPanel.add(mainPanel, DockPanel.CENTER);
final VerticalPanel footerPanel = new VerticalPanel();
dockPanel.add(footerPanel, DockPanel.SOUTH);
dockPanel.setCellHeight(footerPanel, "150px");
可以看到,我添加了CSS样式。主面板看起来像这样:
.gwt-MainPanel {
width: 100%;
height: 100%;
padding: 20px;
background-color: #353334;
-moz-box-shadow: 0 2px 2px 0px #232323;
-webkit-box-shadow: 0 2px 2px 0px #232323;
box-shadow: 0 2px 2px 0px #232323;
}
所以我把高度设置为中心单元格的100%,这在Firefox中是正常工作的,但是Internet Explorer完全忽略了它。我怎样才能使IE填充的DockPanel的中心部分也垂直?我已经搜索了它,并尝试例如向html页面添加不同的DOCTYPEs。
请查看这里的实际示例。
谢谢
您将VerticalPanel
的高度设置为DockLayout
中间的100%,但您没有将中间单元格高度设置为100%。试一试:
dockPanel.setCellHeight(mainPanel, "100%");
无论如何,使用表格和百分比会导致一些微妙的问题,这些问题通常需要你自己处理。总是问自己"百分之百是什么"。
同时,引用DockPanel
中的javadoc:
这个小部件在标准模式下具有在怪癖模式下不存在的限制。DockPanel中包含的子部件不能使用百分比来调整大小。将子部件的高度设置为100%不会导致子部件填充可用的高度。
如果你需要解决这些限制,使用DockLayoutPanel代替,但要明白它不是这个类的替代品。它需要标准模式,并且最容易在RootLayoutPanel(而不是RootPanel)下使用。
使用<!DOCTYPE html>
将页面设置为标准模式,这意味着这将无法正常工作,并且在怪癖模式下,您必须自己进行实验。
还可以考虑使用基于Layout
的方法,正如javadoc所建议的那样。由于整个页面使用单个div(即rootContainer
),因此使用起来应该很轻松。看到https://developers.google.com/web-toolkit/doc/latest/DevGuideUiPanels LayoutPanels .
不要混淆布局面板和非布局面板。如果你正在使用布局面板,那么不要使用垂直面板和绝对面板。看一下这个问题和它被接受的答案,了解更多细节。