2017-07-18 7 views
0

Ich verwende Bootstrap auf meiner Website und ich habe einige jQuery hinzugefügt, um jede Spalte die Höhe der höchsten Spalte zu machen. Das funktioniert gut, aber das Problem ist, dass die Höhe nicht zeilenspezifisch ist. Die Höhe wird also nur auf das höchste Element der gesamten Seite eingestellt. Wie kann ich diesen Code so ändern, dass jedes Element in einer Zeile nur auf das höchste Element in derselben Zeile gesetzt wird?Gleiche Höhe Spalten pro Zeile

$(function() { 
 
    function equalHeight(group) { 
 
     var maxHeight = 0; 
 
     group.each(function() { 
 
      $(this).removeAttr('style'); 
 
      maxHeight = Math.max(maxHeight, $(this).height()); 
 
     }); 
 
     group.css({ height: maxHeight + 'px' }); 
 
    } 
 
    equalHeight($('.equal')); 
 
});
.equal { 
 
background:yellow; 
 
margin-bottom:40px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> 
 
<div class="container"> 
 
    <div class="row"> 
 
    <div class="col-sm-3 equal"> 
 
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
 
    </div> 
 
    <div class="col-sm-3 equal"> 
 
    Donec consequat malesuada sapien sit amet lacinia. In faucibus, felis nec condimentum volutpat, ante felis dictum dui, eget tincidunt arcu risus id nisl. Suspendisse faucibus neque at massa elementum, id porta nunc semper. 
 
    </div> 
 
    <div class="col-sm-3 equal"> 
 
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam condimentum odio velit, in tempus purus posuere eget. 
 
    </div> 
 
    <div class="col-sm-3 equal"> 
 
    <strong>ALL HEIGHTS ARE BASED ON THIS COLUMN: </strong>Sed sodales augue sed est vulputate gravida. Mauris rutrum, felis vitae tincidunt fermentum, ipsum ipsum porta felis, quis cursus tortor metus in sapien. In at eros malesuada, facilisis enim eget, volutpat tellus. In accumsan odio in urna suscipit auctor. Integer iaculis leo sit amet felis consectetur sodales. Nulla lobortis nec justo at fermentum. Donec efficitur in est eu volutpat. Etiam sed felis id lorem pretium auctor. Aenean placerat, neque ac posuere feugiat, justo ex gravida ante, et semper diam velit eu dolor. Duis efficitur maximus odio, viverra imperdiet odio dictum vitae. 
 
    </div> 
 
    </div> 
 
    <div class="row"> 
 
    <div class="col-sm-3 equal"> 
 
    Cras dignissim eget enim et auctor. 
 
    </div> 
 
    <div class="col-sm-3 equal"> 
 
    Mauris massa quam, tincidunt in nulla gravida, viverra vulputate est. Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
 
    </div> 
 
    <div class="col-sm-3 equal"> 
 
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
 
    </div> 
 
    <div class="col-sm-3 equal"> 
 
    Nulla venenatis pharetra sapien, et lobortis diam commodo rutrum. Sed varius sit amet lectus ac condimentum. Maecenas lacinia ligula eget ultricies dictum. Proin a eros velit. Sed facilisis vehicula mauris, nec egestas augue vulputate ac. 
 
    </div> 
 
    </div> 
 
</div>

+0

prüfen Sie diesen Link https://stackoverflow.com/questions/19695784/how-can-i-make-:

function equalizeHeight(group) { var maxHeight = 0; group.each(function(index) { var divHeight = $(this).height(); if(divHeight > maxHeight) { maxHeight = divHeight; } }); group.css('height', maxHeight); } 

Diese Funktion kann wie so genannt werden bootstrap-columns-all-the-same-height –

Antwort

1

CSS Lösung:

Sie können das übergeordnete div-display: flex. In diesem Fall wird die CSS wie so aussehen:

.row { 
    display: flex; 
} 

Beispiel: https://jsfiddle.net/koralarts/e50wonqz/

Javascript Lösung:

In der Lösung Javascript, ich durchgeschleift jeder der rows mit der Klasse equal als im Gegensatz zu der columns Schleife mit der Klasse.

Dies wird sicherstellen, dass unser Anwendungsbereich innerhalb der row statt aller columns zur Verfügung steht.

$('.equal').each(function() { 
    equalizeHeight($(this).children('div')); 
}); 

https://jsfiddle.net/koralarts/e50wonqz/4/

+0

Leider funktioniert das nicht, da ich IE 9+ – user13286

+0

Ok cool unterstützen muss. Mal sehen, ob ich dir eine andere Lösung bringen kann. – Koralarts

+0

@ user13286 lassen Sie mich wissen, ob das für Sie funktioniert. – Koralarts

1

Es ist ein Plugin in JQuery

https://github.com/mattbanks/jQuery.equalHeights check this out.

$('.equal').equalHeights(); 
+0

Ich würde lieber kein Plugin verwenden, danke für den Vorschlag. – user13286

+0

Okay, es ist nicht ein großes Plugin meiner Meinung nach (function ($) { $ .fn.equalHeights = function() {var maxHeight = 0, $ this = $ (this); $ this. each (function() { var height = $ (this) .innerHeight(); if (Höhe> maxHeight) {maxHeight = Höhe;} }); return $ this.css ('height', maxHeight); }; // Plugin automatisch initialisieren $ ('[data-equal]'). Je (function() { var $ this = $ (this), Ziel = $ this.data ('equal'); $ this.find (Ziel) .equalHeights(); }); }) (jQuery); –

+0

es nur 4-5 Reihen von Codes Datei src: https://github.com/mattbanks/jQuery.equalHeights/blob/master/jquery.equalheights.js –