2013-09-02 3 views
6

上に均一な高さ以下の画像を参照してください:Twitterのブートストラップレガシー:スパン

enter image description here

私は、最初の列の高さに合わせて、B列を拡大することで、または私はいくつかの列を持っていた場合、彼らは常に維持して必要なもの同じ高さ、最大の列の高さに調整します。

私はしばらくの間、<div class="clearfix"></div>height: 100%で成功しなかった。

私はTwitter Bootstrap 2.3.2を使用しています。

HTML:

<div id="main" class="row-fluid"> 
     <div class="span6"> 
      <div> 
       ABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 
       BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 
       ABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 
       BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 
       ABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 
       BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 
       ABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 
       BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 
       ABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 
       BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 
       BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 
       BBBBBBBBBBBBBBBBBBBBBBBBBB 
      </div> 
     </div> 
     <div class="span6"> 
      <div> 
       B 
      </div> 
     </div> 
    </div> 

はCSS:

@import url("http://twitter.github.com/bootstrap/assets/css/bootstrap.css"); 

     #main { 
      height: 5em; 
     } 
     .span6 { 
      background-color: lightgray; 
      border: 1px solid red; 
     } 

     .span6 > div { 
      background-color: lightblue; 
      border: 1px solid green; 
     } 

フィドルは、上記のコードで画像を似ていないいくつかの理由がありますが、test.htmlに貼り付けた場合それは適切に動作します。

EDIT:

そして、どのように私は、内側span div Sの高さを揃えることができますか?

EDIT 2:

@Coopガイダンスでは、私は最終的に、これは整理持つことができました。私は、次のコードに来る:

var content_height = []; 

jQuery('.row-fluid > div') 
    .each(function() { 
     content_height.push(jQuery(this).css({minHeight: 0}).height()); 
    }) 
    .each(function() { 
     jQuery(this).css({ 

     minHeight: Math.max.apply(Math, content_height) 
     }); 
    }); 
+1

これは、流体高さスパンでは古くからの問題です。私はCSSソリューションが嫌いです。なぜなら、それらは乱雑であるか、後方互換性がないからです。 jQueryを使用しても構いませんか?もしそうでなければ、私はそれを使って解決策を投稿することができます。 – Coop

+0

@Adrift:それは私の元のコードではうまくいきません:(さらに、スパンクラスを変更して後でカラムの幅を変更するので、デフォルトのブートストラップ幅として幅を維持する必要があります。)ありがとうとにかく:) – diosney

+0

@Coop:確かに!どんな解決策も大歓迎です!:)私は純粋なCSSの1つを好むが、あなたの作品がうまくいけばCSSの解決策がないなら、私はあなたに固執するだろう! :) – diosney

答えて

3

であなたのスパンをラップすることができます参照してください。 jQueryソリューションでこれを行うには

最初にクラスを追加します同じ高さを与えたい行のすべてのdivにを割り当てます。 はその後、以下のjQueryを追加します。彼らはロードする前に、Google Chromeは、画像に0高さと幅を与えるので、jQueryの$(window).loadにあることが必要であることをhttp://jsfiddle.net/VA6D4/

注:

$('.eHeight').each(function() { 
    var eHeight = $(this).parent().innerHeight(); 
    $(this).outerHeight(eHeight); 
}); 

をここにフィドルを参照してください。

+0

ええ、それはjQueryがここで最善の策だと思われます。私が実際の解決策を取ったとき、私はここにコメントとして投稿します。 – diosney

+0

クール。私は過去にこれを達成するために、多くのCSSソリューションや他のレイアウトを試してきましたが、jQueryのこの単純なビットが最善の解決策であるという結論に達しました。 – Coop

+0

EDIT 2のコードを使用して修正することができました。あなたが私に多くの助けをしてくれたので、あなたの答えを受け入れるようにします:)ありがとう – diosney

3

このFiddleあなたは大きな負のマージンで大きなパディングを追加することによって、それを行うと、その後overflow: hidden;

CSS

.sameheight { 
    margin-bottom: -99999px; 
    padding-bottom: 99999px; 
    background-color:green; 
} 
.wrap { 
    overflow: hidden; 
} 
+0

うわー!ニート!うまくいった!あなたは私と親切で、後ろの理論を説明できますか?マージン、パディングを使用したこのゼロ結果の演算は、これをどのように動作させますか? – diosney

+0

興味深い解決策です。理論をあまりにも知りたいのですが。 – Coop

+1

Mmmm、私はそれを取得し始めたと思う。ちょうど質問が残っています:私は境界内と背景色で、スパンの内側のdivがあり、他の列の高さを持っていたい場合、私はそれをやりますか?ソリューションが正しく理解されていれば、下の境界線は親のオーバーフローでクリップされます。 – diosney

関連する問題