HOME>WEBプログラム覚書>[HTML5/CSS3]ChromとFirefoxのdisplay: box;レンダリングの違い

[HTML5/CSS3]ChromとFirefoxのdisplay: box;レンダリングの違い

Firefoxのdisplay: box;はいろいろと問題があるみたいなんだけど、 並べられる要素にoverflow: hidden;を設定して中の要素にdisplay: box;を設定するとdisplay: box;が設定された要素の高さが無視されるって違いもあった。

言葉で書くとよくわからないのでコードを書くとこんな感じ。

HTML

  1. <div class="outer">
  2.     <div class="contents">
  3.         <h1>コンテンツ</h1>
  4.         <p>overflow: hidden、display: box</p>
  5.  
  6.         <article class="index">
  7.             <div><img src="/storage/codes/html5/display_box/img.jpg" /></div>
  8.             <p>画像の説明</p>
  9.         </article>
  10.     </div>
  11.     <div class="sidebar">
  12.         <ul>
  13.         <li>メニュー</li>
  14.         </ul>
  15.     </div>
  16. </div>
  17.  

CSS

  1. .outer {
  2.     width: 640px;
  3.     padding: 16px;
  4.     background: #333333;
  5.     display: -webkit-box;
  6.     display: -moz-box;
  7.     display: -o-box;
  8.     display: box;
  9. }
  10.  
  11. .contents {
  12.     width: 400px;
  13.     margin-right: 20px;
  14.     background: #FFFFFF;
  15.     /* hiiden */
  16.     overflow: hidden;
  17. }
  18.     .contents article.index {
  19.         width: 400px;
  20.         border: 1px solid #CCCCCC;
  21.         /* box */
  22.         display: -webkit-box;
  23.         display: -moz-box;
  24.         display: -o-box;
  25.         display: box;
  26.     }
  27.  
  28. .sidebar {
  29.     width: 220px;
  30.     background: #E9E9E9;
  31. }
  32.  

実行結果

outerをdisplay: box;としてコンテンツとサイドバーを並べる。コンテンツにoverflow: hidden;を設定して コンテンツの子要素(article)にdisplay: box;を設定するとarticleの高さが無視されるみたい。(確認したのはFirefox 10.0.2)

この場合、コンテンツの高さは見出しと文章だけとみなされて、サイドバーの高さで合わせられる。 chromの場合、articleの高さも含まれるみたいなので全て表示される。

articleのdisplay: box;を外すとコンテンツの高さに合わせられる。

コンテンツのoverflow: hidden;を外すとarticleの高さも計算される。

とまぁ解決策はあるし、こういう指定はすること無いと思うので特に困ることはないんだけど、動作としてはどちらが正しいんだろ?

投稿日 2012年3月13日 01:24
カテゴリ HTML/CSS
タグ CSS3 | HTML5 | ブラウザ
トラックバック URL http://www.kantenna.com/cgi-bin/mt504/mt-tb.cgi/1284

コメント

コメントする
Name
Email Address
URL