【发布时间】:2015-04-12 07:30:21
【问题描述】:
我的网站包含一系列 div(由绿色框表示),我每行只需要 3 个。但它们的高度并不相同,所以它会推动其他 div 不对齐。
请看这里:
如果您向下滚动,这是我的演示网站,显示完整的问题:http://testsite24.netai.net/public/demo.html
这是其中一个 div(绿色框)的代码示例:
<div class="block personal fl">
<!-- CONTENT -->
<div class="content">
<p class="price">
<p class="vignette" style="background-image:url()"></p>
</p>
</div>
<ul class="features">
<li class="titlebox">59 Acre Paradise</li>
<li>Kings County</li>
<li>Offered at $95,000</li>
</ul>
</div>
您能否提供一种解决方案,使所有 div 高度都相同,以便它们保持对齐?该解决方案必须适用于 IE8+。也许是一个脚本来识别行中最长的 div 并使其他两个高度相同?
以前我使用过这个脚本,但是 IE8/IE9 不支持 FlexWrap,所以我不得不放弃它。有任何想法吗?谢谢!!
<script>
;( function( $, window, document, undefined )
{
'use strict';
var s = document.body || document.documentElement, s = s.style;
if( s.webkitFlexWrap == '' || s.msFlexWrap == '' || s.flexWrap == '' ) return true;
var $list = $( '.list' ),
$items = $list.find( '.list__item__inner' ),
setHeights = function()
{
$items.css( 'height', 'auto' );
var perRow = Math.floor( $list.width() / $items.width() );
if( perRow == null || perRow < 2 ) return true;
for( var i = 0, j = $items.length; i < j; i += perRow )
{
var maxHeight = 0,
$row = $items.slice( i, i + perRow );
$row.each( function()
{
var itemHeight = parseInt( $( this ).outerHeight() );
if ( itemHeight > maxHeight ) maxHeight = itemHeight;
});
$row.css( 'height', maxHeight );
}
};
setHeights();
$( window ).on( 'resize', setHeights );
$list.find( 'img' ).on( 'load', setHeights );
})( jQuery, window, document );
</script>
【问题讨论】:
-
为什么不用css而不是javascript
-
有人问过这个问题[之前][1]。他们收到了几个答案。 [1]:stackoverflow.com/questions/28119377/…
-
欣赏它,但他们的例子似乎允许不同的高度 div,只要对齐不受影响。我正在为每一行寻找相同高度的 div。
标签: javascript jquery html alignment height