1

我的网络应用程序中有面板,我正在设置样式属性,如下所示:

panel.setStyleAttribute('margin-left', 'auto').setStyleAttribute('margin-right','auto');

这在镀铬中非常糟糕,如预期的那样使元素居中。但是在 IE 中,元素被卡在屏幕的左侧。

有没有办法解决这个问题?

4

3 回答 3

2

与其他浏览器不同,margin:auto 仅在您强制标准模式而不是怪癖模式时在 Internet Explorer 中有效。

UiApp 默认使用 quirks 模式 CSS 规则,除非 (a) 您在初始应用程序创建时加载 GuiBuilder 组件,这会强制标准模式,或者 (b) 您明确要求标准模式。

这会将您设置为标准模式,因此也可以在 IE 中工作:

function doGet() {
  var app = UiApp.createApplication().setStandardsMode(true);
  return app.add(app.createLabel('centered').setStyleAttributes(
      {marginLeft: 'auto',
       marginRight: 'auto',
       width: '100px'}));
}

请注意setStandardsMode(true) - 没有它,它将无法在 IE 中工作。不过要小心,因为标准模式样式的解释有时与怪癖模式不同,因此这可能会改变布局的其他方面。

一些注意事项:

  • setStandardsMode 仅在初始应用程序创建时(即在 doGet 中)受到尊重,如果您稍后尝试在处理程序中设置它,则会被忽略。
  • GuiBuilder 的布局规则采用标准模式,这就是隐式强制标准模式的原因。如果您在 doGet 期间未设置为标准模式的应用程序的回调中加载 GuiBuilder 组件(显式地或因为您加载了另一个组件),由于它处于怪癖模式,布局和样式可能会发生细微的变化。
于 2012-12-06T14:14:32.550 回答
0

对 CSS 样式属性使用规范化形式

panel..setStyleAttribute('marginLeft', 'auto').setStyleAttribute('marginRight','auto')

您可以在此处查看支持的样式属性列表

于 2012-12-04T15:14:06.367 回答
0

我已经用谷歌记录了这个问题的问题#2159。

http://code.google.com/p/google-apps-script-issues/issues/detail?id=2159

于 2012-12-05T08:19:08.017 回答