1

この jsFiddleを見て、唯一のボタンを押してリストを埋めてください。ご覧のとおりDIV、リスト内の要素は、含まれる親を埋めるためにサイズ変更されます。このコードは、私がやりたいことを正確に実行しますが、これを実装する方法は、一見単純なタスクには複雑すぎると思います。内部要素に高さを割り当てるアルゴリズムのコードは次のとおりです。

fill = function() {
    //Loop through all elements once to get total weight
    var totalWeight = 0;
    var totalHeight = $("#container").height() - 15; //need a little extra empty space at the buttom
    $(".list").each(function(i) {
      totalWeight += parseInt($(this).attr('weight'));
      totalHeight -= parseInt($(this).css('margin'));
    });

    //Loop though the element a second time to set the relative height
    $(".list").each(function(i) {
       var element = $(this);
       element.css("height", (element.attr("weight") / totalWeight) * totalHeight);
    });
}

私の質問は、私たちができる最善のことですか? 適切なクロスブラウザー互換性を備えたこの機能を実現する方法が他にありますか? 新しい Firefox、Chrome、および Safari のみをサポートする必要があります。ここでフレックスボックスについて読んで、その有望な仕様を調べていましたが、フレックスボックスがブラウザー間で一貫して重み付けされた柔軟なレイアウトを実行できるようには見えません。私が間違っている場合は、これを達成する方法の簡単な例を教えてください。

このタイプの重み付けされた柔軟な線形レイアウトは珍しくありません。たとえば、レイアウト オプションの 1 つとして Android SDK で使用できます。要素に割り当てられた重み値を基準にして、要素のサイズを変更して親コンテナーを埋める推奨される方法は何ですか? 可能であれば、純粋な CSS ソリューションは素晴らしいでしょう。

4

1 に答える 1

1

Just a quick look over it, after about 30 mins googling. I may do a demo but don't really hav much time.

Have you looked here

  1. html5rocks
  2. coding.smashmag...
  3. tutsplus
  4. umarr
  5. w3c
  6. benfrain

There are some good examples on the 6th one

edit: I was looking thought the firefox developer section on their website and found
developer.mozilla...

I also found another example with a download!! github..

this might give you some direction for firefox and the rest should be in the other links I have provided

于 2012-11-10T09:53:50.710 に答える