変化する数の子要素を含むことができる固定サイズの親要素があります。これらはすべて、同じサイズで固定のx/y比で表示する必要があります。そして、それらはすべて、親要素のサイズをオーバーフローさせずに、できるだけ大きく表示する必要があります。(わかった?)
私が作成したjsfiddleを見ると、私が望むように動作することがはるかに明確になります。
ここで重要なのはこの関数です。
function layout(parent, parentHeight, parentWidth, children, ratio) {
var totalArea = parentHeight * parentWidth;
var elements = children.length;
var height = 0, width = 0, area = 0, cols = 0, rows = 0;
for (height = parentHeight; height > 0; height--) {
width = height * ratio;
area = width * height * elements;
cols = Math.floor(parentWidth / width);
rows = Math.ceil(elements / cols);
if (area <= totalArea && cols * width < parentWidth && rows * height < parentHeight) {
break;
}
}
$(children).width(width - 10).height(height - 10);
$(parent).width(parentWidth).height(parentHeight);
}
そしてそれは動作しますが、それはかなり不格好なようです。CSSだけでこれを行う方法があるはずだと私は感じ続けていますが、CSSのレイアウト規則は常に頭を痛め、とにかく頭を包み込むことはできません。または、それが失敗した場合は、機能する値を決定する前に、100の異なる値を手動で試す必要のない方法があるはずです。
これを改善する方法についての提案はありますか?