しばらく時間がかかりましたが、ここにフィドルとJSコードがあります。
私のソリューションでは、要素のリレーショナルサイズを考慮し、比例して要素を拡大します。例:スペースの50%を占めていたdivは、ulをストレッチした後も50%を占めます。
(ただし、パディングとボーダーを追加すると問題が発生します。これに対する解決策があれば、私も興味があります!)
JS:
$(function() {
var $allUl = $('ul');
setNewPercentages($allUl);
function getTallestUl($uls) {
var max = 0;
var $ulTallest;
$uls.each(function(i,e) {
console.log( $(this).height() > max);
if( $(this).height() > max) {
$ulTallest = $(this);
max = $(this).height();
}
});
return $ulTallest;
};
function adjustPercentages($ul) {
$ul.find('li').each( function(i,e) {
var $this = $(this)
, ulHeight = $ul.height()
, liHeight = $this.height()
, percentage = (liHeight / ulHeight * 100);
$this.css('height', percentage + '%');
});
};
function setNewPercentages($uls) {
var $tallest = getTallestUl($allUl).addClass('tallest');
var heightTallest = $tallest.height();
$uls.not('.tallest').each(function(i,e) {
adjustPercentages($(this));
$(this).css('height', heightTallest);
});
};
});
フィドル