ヘッダーとフッターの高さを柔軟に変更できるレイアウトを構築しようとしています。中央のセクションが残りのスペースを消費します。中央にオーバーフローがあると、この中央セクションだけにスクロール バーが表示されます。
Safari と Chrome で正常に動作するコードは次のとおりです。
<!DOCTYPE html>
<html>
  <head>
    <style>
      html, body {
        margin: 0;
        padding: 0;
        height: 100%;
      }
      .l-fit-height {
        display: table;
        height: 100%;
      }
      .l-fit-height > * {
        display: table-row;
        height: 1px;
        background-color: red;
      }
      .l-fit-height-expanded {
        height: auto;
        background-color: blue;
        display: table-row;
      }
      .l-scroll-content {
        height: 100%;
        overflow-y: auto;
      }
    </style>
  </head>
  <body>
    <div class="l-fit-height">
      <section>
        Header
      </section>
      <section class="l-fit-height-expanded">
        <div class="l-scroll-content">
          <p>Foo</p>
          <p>Foo</p>
          <p>Foo</p>
          <p>Foo</p>
          <p>Foo</p>
          <p>Foo</p>
          <p>Foo</p>
          <p>Foo</p>
          <p>Foo</p>
          <p>Foo</p>
          <p>Foo</p>
          <p>Foo</p>
          <p>Foo</p>
          <p>Foo</p>
          <p>Foo</p>
        </div>
      </section>
      <section>
        Footer
      </section>
    </div>
  </body>
</html>
私の人生では、Firefoxで動作が異なる理由を理解できません。中央のコンテンツは高さを正しく拡張しますが、コンテンツの高さ以上に縮小することはありません。
何が正しい振る舞いなのかを知ることは困難です。何か案は?
編集
同様の設定例: http://jsfiddle.net/t3mZF/
興味深いことに、.l-fit-height-row-contentが then に変更されたdisplay: table-cell場合、WebKit と Gecko は同じ動作を示すか、オーバーフローを無視します。
が使用されている場合display: block、WebKit は目的の動作を提供します (スクロール バーとフッターはビュー ポートの下部に残ります) が、Firefox はスクロール バーの追加を拒否し、代わりに画面の下部からフッターを押し出します (ビュー ポートのスクロール バー - ではなく、中間内容)。
Bugzillaチケットもオープンしました