2017-07-18 85 views
0

我在我的网站上使用Bootstrap,并且添加了一些jQuery使每列成为最高列的高度。这工作正常,但问题是高度不是特定于行的。因此,高度将被设置为整个页面中最高的元素。我怎样才能改变这个代码,使一行中的每个元素都被设置为同一行中最高的元素?每行高度相等的列

$(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

检查此链接 https://stackoverflow.com/questions/19695784/how-can-i-make- bootstrap-columns-all-the-same-height –

回答

1

CSS解决方案:

可以div设置父display: flex。在这种情况下,CSS看起来就像这样:

.row { 
    display: flex; 
} 

例子:https://jsfiddle.net/koralarts/e50wonqz/

JavaScript解决方案:

在JavaScript的解决方案,我通过每个rows的环带班equal为反对通过columns循环与所述类。

这将确保我们的范围在row之内,而不是所有可用的columns

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

    group.css('height', maxHeight); 
} 

此功能可以被称为像这样:

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

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

+0

不幸的是,这不会工作,因为我需要支持IE 9 + – user13286

+0

好酷。让我们看看我能否给你另一个解决方案。 – Koralarts

+0

@ user13286让我知道,如果这对你有用。 – Koralarts

1

有jQuery中

插件

https://github.com/mattbanks/jQuery.equalHeights检查了这一点。

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

我宁可不使用插件,但是谢谢你的建议。 – user13286

+0

好了它不是一个大在我看来插件 (函数($){ $ .fn.equalHeights =函数(){VAR = maxHeight 0, $此= $(本); $此。每个(函数(){ VAR高度= $(本).innerHeight(); 如果(高度> maxHeight){maxHeight =高度;} }); 返回$ this.css( '高度',maxHeight ); }; //自动初始化插件 $('[data-equal]')。each(function(){ var $ this = $(this), target = $ this.data('equal'); $ this.find(target).equalHeights(); }); })(jQuery); –

+0

它只是4-5行代码文件 src:https://github.com/mattbanks/jQuery.equalHeights/blob/master/jquery.equalheights。js –