2013-09-02 12 views
6

Siehe folgendes Bild:Twitter Bootstrap Legacy: Uniform Höhe auf Spannweiten

enter image description here

Was ich brauche, ist die B-Säule zum Vergrößern auf die erste Spalte Höhe übereinstimmen, oder wenn ich mehrere Spalten hatten sie behauptet immer die gleiche Höhe, Anpassung an die größte Säulenhöhe.

Ich habe eine Weile ohne Erfolg mit <div class="clearfix"></div> und height: 100% gespielt.

Ich benutze 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; 
     } 

Aus irgendeinem Grund die Geige tun ähnelt das Bild nicht mit dem obigen Code, aber wenn man es in eine test.html einfügen es funktioniert richtig.

EDIT:

Und wie kann ich die Höhe der inneren span div s ausrichten?

EDIT 2:

Mit @Coop Führung gelang es mir endlich diese aussortiert zu haben. Ich komme zu dem folgenden Code:

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

Yeh das ist ein uraltes Problem für Flüssigkeitshöhenspannen. Ich mag die CSS-Lösungen nicht, weil sie entweder unordentlich oder nicht abwärtskompatibel sind. Stört es Sie mit jQuery? Wenn nicht, kann ich damit eine Lösung posten. – Coop

+0

@Adrift: Das funktionierte nicht in meinem ursprünglichen Code :(Außerdem muss ich die Breite als die Standard-Bootstrap-Breite beibehalten, da ich später die Spaltenbreite ändern werde, indem ich seine Spannungsklasse ändere. Danke trotzdem :) – diosney

+0

@Coop: Sicher! Jede Lösung ist willkommen!:) Ich bevorzuge eine reine CSS-Version, aber wenn Ihre Arbeit gut ist und es keine CSS-Lösung gibt, werde ich bei Ihrer bleiben! :) – diosney

Antwort

3

Um dies mit einer jQuery-Lösung zu tun, fügen Sie zuerst die Klassehinzuzu allen divs in einer Reihe, die Sie die gleiche Höhe geben möchten. Dann fügen Sie die jQuery unter:

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

Siehe Geige hier: http://jsfiddle.net/VA6D4/

Beachten Sie, dass die jQuery in einer $(window).load sein muss, weil Google Chrome gibt 0 Höhe und Breite, um Bilder, bevor sie geladen werden.

+0

Ja, es scheint, dass jQuery die beste Wette hier ist. Wenn ich eine funktionierende Lösung habe, werde ich sie hier als Kommentar veröffentlichen. – diosney

+0

Kühl. Ich habe mit vielen CSS-Lösungen und anderen Layouts gespielt, um dies in der Vergangenheit zu erreichen, bin aber zu dem Schluss gekommen, dass dieses einfache Stück jQuery die beste Lösung ist. – Coop

+0

Ich habe es geschafft, das zu beheben, indem ich den Code in EDIT 2 benutze. Ich werde deine Antwort als akzeptiert markieren, da du mir sehr geholfen hast :) Danke – diosney

3

Sehen Sie dieses Fiddle Sie es durch Zugabe von großer Polsterung mit großem negativem Marge tun kann, und dann wickeln Sie Ihre Spannweite mit overflow: hidden;

CSS

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

Wow! Ordentlich! Hat gut funktioniert! Kannst du nett zu mir sein und die Theorie dahinter erklären? Wie kann diese Null-Ergebnis-Operation mit Margen, Paddings dazu führen, dass dies funktioniert? – diosney

+0

Aah interessante Lösung. Ich würde gerne auch die Theorie kennenlernen. – Coop

+1

Mmmm, ich glaube, es fing an, es zu bekommen. Nur eine Frage bleibt: Wenn ich ein inneres div innerhalb der Spannweite habe, mit Rahmen und Hintergrundfarbe, und möchte die anderen Spalten Höhe haben, wie würde ich das machen? Wenn ich Ihre Lösung richtig verstehe, wird der untere Rand mit dem übergeordneten Überlauf abgeschnitten, oder? – diosney