2013-09-02 13 views
6

Zobacz następujący obraz:Twitter Bootstrap Legacy: Uniform wysokość o rozpiętości

enter image description here

Co potrzebne jest, aby powiększyć kolumnie B, aby dopasować pierwszą wysokość kolumny, albo gdybym miał kilka kolumn zawsze utrzymuje tej samej wysokości, dostosowując się do największej wysokości kolumny.

Grałem przez chwilę bez żadnego sukcesu z <div class="clearfix"></div> i height: 100%.

Używam 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; 
     } 

Z jakiegoś powodu skrzypce nie przypomina obraz z powyższym kodem, ale jeśli wkleić go do test.html działa poprawnie.

EDIT:

i jak mogę wyrównać wysokość wewnętrznej span div s?

EDIT 2:

Z kierunkiem @Coop I wreszcie udało się to załatwić. I doszli do następującego kodu:

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 to jest starość problemem dla wysokości płynu rozciąga. Nie lubię rozwiązań CSS to dlatego, że jesteś albo brudny lub nie kompatybilny wstecz. Czy chcesz używać jQuery? Jeśli nie, mogę opublikować rozwiązanie z tym. – Coop

+0

@Adrift: To nie działało w moim oryginalnym kodzie :(Poza tym, muszę zachować szerokość jako domyślną szerokość Bootstrap, ponieważ zmienię później szerokość kolumny, zmieniając jego klasę zakresu. Thanks anyway :) – diosney

+0

@Coop: Pewnie! Każde rozwiązanie jest mile widziane!:) Wolę czysty CSS, ale jeśli twoje działa dobrze i nie ma rozwiązania CSS, to będę trzymać się twojego! :) – diosney

Odpowiedz

3

aby to zrobić za pomocą roztworu jQuery:

najpierw dodać klasę eHeight dla wszystkich elementów div z rzędu, które chcesz nadać tej samej wysokości. Następnie dodać jQuery poniżej:

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

widoczny na skrzypce tutaj: http://jsfiddle.net/VA6D4/

Należy pamiętać, że jQuery musi być w $(window).load ponieważ Google Chrome daje 0 wysokość i szerokość do zdjęć przed ich ładować.

+0

Tak, wydaje się, że jQuery jest tutaj najlepszy. Kiedy mam działające rozwiązanie, opublikuję go tutaj jako komentarz. – diosney

+0

Cool. Grałem z wieloma rozwiązaniami CSS i innymi układami, aby osiągnąć to w przeszłości, ale doszedłem do wniosku, że ten prosty kawałek jQuery jest najlepszym rozwiązaniem. – Coop

+0

Udało mi się to naprawić za pomocą kodu w EDIT 2. Zaznaczę twoją odpowiedź jako zaakceptowaną, ponieważ bardzo mi pomogłeś :) Dzięki – diosney

3

Zobacz ten Fiddle Można to zrobić dodając duży wyściółkę z dużym marginesem ujemnym, a następnie owinąć przęsło z overflow: hidden;

CSS

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

Wow! Schludny! Działało dobrze! Czy możesz być uprzejmy ze mną i wyjaśnić teorię? Jak ta operacja zerowego wyniku z marginesami może spowodować, że to zadziała? – diosney

+0

Aah ciekawe rozwiązanie. Też chciałbym poznać teorię, proszę. – Coop

+1

Mmmm, myślę, że zaczęło się to. Pozostaje tylko pytanie: jeśli mam wewnętrzny div wewnątrz przęsła, z obramowaniem i kolorem tła i chcę mieć wysokość innych kolumn, jak bym to zrobił? Jeśli poprawnie zrozumiem twoje rozwiązanie, dolna krawędź zostanie obcięta z nadrzędnym przepełnieniem, prawda? – diosney