1 つのブロックが利用可能なすべてのスペースを占有し、他のブロックがコンテンツに合わせて縮小する水平レイアウトを作成する必要があります。
例えば:
<div class="grid">
<div class="expand">Long text label</div>
<div class="shrink">Button</div>
</div>
2 行のより複雑な例 (実際のグリッド):
<div class="grid">
<div class="row">
<div class="shrink">...</div>
<div class="expand">...</div>
<div class="shrink">...</div>
<div class="shrink">...</div>
</div>
<div class="row">
<div class="shrink">...</div>
<div class="expand">...</div>
<div class="shrink">...</div>
<div class="shrink">...</div>
</div>
</div>
私の要件:
- 大きなブロックは、たとえ短くても、使用可能なすべてのスペースを埋める必要があります
- 小さなブロックはコンテンツに収まる必要があります
- 大きなブロック (通常はテキスト ラベル) は、使用可能なスペースよりも 1 単語大きい場合があるため、この場合は切り詰める必要があります。
- マルチワードの場合、大きなブロックは折り返されるべきではありません
- 小さなブロックは折り返すべきではありません (ただし、複数のボタンまたはアイコンの場合は、コンポーネントごとに 1 つのブロックを作成することで解決できます)。
- 複数の行をサポートします (つまり、列を揃える必要があります)。
AndroidとiOSのスマートフォンをターゲットにしています。
この回答のコードを適応させようとしましたが、複数の行で機能させることができませんでした。また、ソース コードは順不同である必要があり、混乱を招きます (ただし、私のユース ケースではブロックされません)。ここに jsfiddle があります: http://jsfiddle.net/k3W8L/