2011-08-11 8 views
1

私は新しいcss3フレックスボックスモデルを使ってレイアウトを作ろうとしています。私は高さの100%を占めるページを必要とし、固定フッターとヘッダーを使用し、残りの内容は中央の列にあります。コンテンツの列は、固定された最大幅まで幅の100%を占める必要があります。また、すべてが中央に整列する必要があります。最大幅は、Firefoxの柔軟なボックスモデルでは機能しませんか?

私はそれを正確にthis demoのspecにビルドすることができました。これはクロームやウェブキットベースのブラウザでうまくいきます。しかし、Firefoxでは、 "max-width"プロパティを追加することで、すべてが固定列を左揃えにします。

誰もがこれがFirefoxで動作しない理由を教えてもらえますか?それは仕様の別の解釈ですか、それとも私のコードのエラーですか?

これは、デモのHTMLです:あなたはヤモリに使用しているものは何もするがありませんXULのフレキシボックスモデルは、そこにある

  body, html { 
       width: 100%; 
       height: 100%; 
       padding: 0; 
       margin: 0; 
       background:black; 
      } 

      .container { 
       height: 100%; 
       width: 100%; 
       display: -webkit-box; 
       -webkit-box-orient: vertical; 

       display: -moz-box; 
       -moz-box-orient: vertical; 

      } 

      .header, .footer { 
       background-color: #32403C; 
       height: 40px; 
       width: 100%; 
       margin: 0; 
       line-height: 40px; 
       vertical-align: middle; 
       text-align: center; 
       color: #FFF; 
       -webkit-box-pack: center; 
       -moz-box-pack: center; 
       box-pack: center; 
       display: -moz-box; 
       display: -webkit-box; 
       -webkit-box-flex: 0;  
      } 


      .content { 
       display: -webkit-box; 
       -webkit-box-orient: vertical; 
       -webkit-box-flex: 1; 

       display: -moz-box; 
       -moz-box-orient: vertical; 
       -moz-box-flex: 1; 

       -webkit-box-align:center; 
       -moz-box-align:center; 
       box-align:center; 

       -webkit-box-pack: center; 
       -moz-box-pack: center; 
       box-pack: center; 
      } 

      .fixed { 
       background:#787; 
       -moz-box-flex: 1; 
       -webkit-box-flex: 1; 
       box-flex: 1; 
       width:100%; 
       max-width:480px; 
       overflow:hidden; 
       display: -webkit-box; 
       display: -moz-box; 
       -webkit-box-orient: vertical; 
       -moz-box-orient: vertical; 
      } 

      .someText { 
       -webkit-mask-image: -webkit-linear-gradient(black, black 75%, transparent 95%); 
       -moz-box-flex: 1; 
       -webkit-box-flex: 1; 
       box-flex: 1; 
       overflow:scroll;  

      } 

      .content { background: #876; } 
      .colorLight { background-color: #A6687B; } 
      .colorMedium { background-color: #8C605F; } 
      .colorDark { background-color: #735E5A; } 

答えて

2

<div class="container"> 
     <div class="header">Header</div> 
     <div class="content"> 
      <div class="fixed"> 
       <h1>Title</h1> 
       <div class="someText"> 
        <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vehicula sodales risus quis rhoncus. Donec suscipit lorem ante. Nullam tempor, lorem sit amet faucibus dictum, est nisl aliquam felis, a tempor arcu massa sit amet felis. Donec a blandit mi. Sed posuere, lacus eu scelerisque porttitor, turpis sem aliquam nulla, ut rutrum sem libero a felis. Morbi nec sodales odio. Nulla facilisi. Sed consectetur pellentesque arcu, in laoreet nulla semper ac. Pellentesque vulputate sem eget eros condimentum in malesuada dui convallis. Vivamus tristique velit id justo laoreet vestibulum. Nulla orci nisl, vulputate vitae facilisis sit amet, ultricies id massa. Sed eget faucibus magna. Integer a leo sem, hendrerit fermentum libero.</p> 
        <p>In gravida faucibus dui, quis bibendum est ornare nec. Cras ac metus a dui rhoncus mattis. Nulla ut hendrerit est. Cras sed sem felis, venenatis tincidunt ipsum. Vestibulum id sodales ligula. Nunc sit amet neque vel ante aliquam commodo. Aenean elit felis, imperdiet sagittis lacinia ut, tincidunt accumsan arcu. Vivamus dapibus ligula a est convallis eget tincidunt libero interdum. Nunc mattis, odio et tincidunt egestas, orci ante pharetra nulla, hendrerit ultrices nunc ipsum nec sem. Vestibulum egestas leo pulvinar massa mollis sit amet dapibus velit venenatis. Etiam molestie posuere lacinia. Nam ut nulla elit, ac tincidunt tellus. Nulla mollis metus id ante accumsan et mattis est ultricies. Morbi nec nunc nulla. Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p> 
       </div> 
      </div> 
     </div> 
     <div class="footer"> 
      <div class="fixed">Footer</div> 
     </div> 
    </div> 

と、これはCSSで明らかに読んでいた旧式のCSSフレックスボックスドラフト(まったく異なる表示値などを使用している現在のフレックスボックスドラフトとは関係ない)を使用してください。

特に、display: -moz-boxは10年以上にわたって存在していますが、それはどのような振る舞いをしていますが、あなたが読んでいたフレックスボックスのドラフトはかなり新しく、振る舞いは-moz-boxの振る舞いとはまったく異なります。 WebKitのflexboxの実装は、最初のW3Cのドラフトをポストしているか、それと同時に存在します。したがって、それらのドラフトで話していることに近いです。しかし、やはり、現在のドラフトは初期のドラフトとはまったく異なります。

関連する問題