列内で伸縮できるテーブルが欲しいのですが、cssの最小幅と最大幅に少し問題があります。
また、これがどのように機能するかについていくつかの矛盾する答えがあるようです:
次のものが欲しい
table{
width:100%;
}
.a, .b, .c
{
background-color: red;
}
.a
{
min-width: 10px;
max-width: 20px;
}
.b
{
min-width: 40px;
max-width: 45px;
}
.c
{
}
<table>
<tr>
<td class="a">A</td>
<td class="b">B</td>
<td class="c">C</td>
</tr>
</table>
javascriptなしでこれを達成する方法はありますか(つまり、テーブルで列の制約されたストレッチ)?
以下は、いくつかの異なるCSS設定で実際にレンダリングされるものの表です。
テーブルの動作は異なります。時には直感に反して。
解決策は、テーブルセルでmax-width
の代わりにwidth
を使用することです。
その場合、セルは指定された幅を下回らないように聞こえますが、実際には縮みます。
cに制限はありません。テーブルの幅を70ピクセルにすると、a、b、cの幅はそれぞれ16、42、12ピクセルになります。
テーブル幅が400ピクセルの場合、上記のグリッドで期待するとおりに動作します。
テーブルのサイズが小さすぎる(a.min + b.min + Cのコンテンツより小さい)場合にのみ失敗します。テーブル自体は指定された幅よりも広くなります。
フィドルに基づいてスニペットを作成し、すべての境界線とパディングと境界線間隔を削除して、幅をより正確に測定できるようにしました。
table {
width: 70px;
}
table, tbody, tr, td {
margin: 0;
padding: 0;
border: 0;
border-spacing: 0;
}
.a, .c {
background-color: red;
}
.b {
background-color: #F77;
}
.a {
min-width: 10px;
width: 20px;
max-width: 20px;
}
.b {
min-width: 40px;
width: 45px;
max-width: 45px;
}
.c {}
<table>
<tr>
<td class="a">A</td>
<td class="b">B</td>
<td class="c">C</td>
</tr>
</table>