1

Web アプリにパネルがあり、次のようにスタイル属性を設定しています。

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

これはクロムで完全に機能し、期待どおりに要素を中央に配置します。ただし、IE では、要素が画面の左側に固定されます。

この問題を回避する方法はありますか?

4

3 に答える 3

2

他のブラウザーとは異なり、margin:auto は、quirks モードではなく標準モードを強制した場合にのみ Internet Explorer で機能します。

UiApp は、(a) 最初のアプリ作成時に GuiBuilder コンポーネントをロードして標準モードを強制するか、(b) 標準モードを明示的に要求しない限り、デフォルトで quirks モードの CSS ルールになります。

これにより、標準モードに設定されるため、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 では動作しません。ただし、標準モードのスタイルは quirks モードとは異なる方法で解釈されることがあるため、注意してください。これにより、レイアウトの他の側面が変更される可能性があります。

いくつかのメモ:

  • setStandardsMode は、アプリの最初の作成時 (つまり、doGet 内) でのみ考慮され、後でハンドラーで設定しようとすると無視されます。
  • GuiBuilder のレイアウト ルールは標準モードを前提としているため、暗黙的に標準モードが強制されます。doGet 中に (明示的に、または別のコンポーネントを読み込んだために) 標準モードに設定されていないアプリのコールバックで GuiBuilder コンポーネントを読み込むと、quirks モードであるため、レイアウトとスタイルに微妙な変更が生じる可能性があります。
于 2012-12-06T14:14:32.550 に答える
0

私はこの問題のためにグーグルで問題#2159を記録しました。

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

于 2012-12-05T08:19:08.017 に答える
0

CSS スタイル属性に正規化されたフォームを使用する

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

サポートされているスタイル属性のリストはこちらで確認できます

于 2012-12-04T15:14:06.367 に答える