パーセンテージを使用してテーブルセルの最大幅を設定するにはどうすればよいですか?


100
<table>
<tr>
<td>Test</td>
<td>A long string blah blah blah</td>
</tr>
</table>

<style>
td{max-width:67%;}
</style>

上記は動作しません。パーセンテージを使用してテーブルセルの最大幅を設定するにはどうすればよいですか?


「動作しない」を展開してください。
Sparky

1
あなたのtdの親が特定の幅を持っていることを確認する必要があります(あなたが幅を渡すことであっても:100%;本体からtdまでのすべての方法、または親(ここでは:tr)に1000pxまたはあなたが好むものを与えることができます。それは常に親で定義された正確なピクセルを使用して、彼らはサイズが持っているように、子供のための%%にピクセルを変換CSSの%%使用して相対的な親にする。
フィリップ・マイスナー

ちなみに、max-widthはSafariとChromeで動作するようになりました。どれくらいの期間サポートされているのかわかりません。
ジェイコブ

回答:


71

CSS 2.1仕様のmax-widthの定義によれば、「テーブル、インラインテーブル、テーブルセル、テーブル列、および列グループに対する「min-width」および「max-width」の影響は定義されていません。」したがって、td要素にmax-widthを直接設定することはできません。

2番目の列を最大で67%だけ使用する場合は、幅(テーブルセルの実際の最小幅)を33%に設定できます(例の場合)。

td:first-child { width: 33% ;}

両方の列にこれを設定しても、ブラウザが列の幅を等しくする傾向があるため、うまく機能しません。


実際、max-widthはSafariとChromeで動作します。どれくらいの期間サポートされているのかわかりません。
ジェイコブ

114

古い質問ですが、table-layout: fixedtableタグのcssプロパティを使用してこれが可能になりました。以下のこの質問からの回答CSSのパーセント幅と表のセルのテキストオーバーフロー

これはを使用して簡単に行えますtable-layout: fixedが、このCSSプロパティについて多くの人が知らないため、少し注意が必要です。

table {
  width: 100%;
  table-layout: fixed;
}

ここで更新されたフィドルで実際にそれを見てください:http : //jsfiddle.net/Fm5bM/4/


2
ありがとう!幅が設定されていないセルの幅が再計算されないことを意味して修正されたのではないかと心配でしたが、幸いにもそうではありません。
fassl 2015

4
jsfiddleでwidthプロパティを削除しても、max-widthはまだ機能しないため、これがどのように問題を解決するかはわかりません。
frezq 2017

4
@superphonic混乱していると思います。max-widthそのjsfiddleでを削除すると、幅は同じままになるため、max-widthそれを設定するのはそれではありません。max-width: 10%最初にと置き換えると、より明確になる場合tdがあります。変更されないことがわかります。jsfiddle.net/w3f8ey22/1
frezq

4
table-layout:修正してもOPの問題は解決しません。それは魔法のようにテーブルセルで「最小幅」を機能させません。table-layout:fixedが削除されている場合、両方の参照フィドルの表示に違いはありません。
cmerriman 2017

2
それは質問に関連していないとして、この答えは誤解を招くされる
ゾルタンスーレーパゴダ

8

これは文字どおり1年後のことですが、共有したいと思いました。私は同じことをやろうとしていて、うまくいったこの解決策に出くわしました。テーブル全体の最大幅を設定し、希望の効果を得るためにセルサイズを操作しました。

テーブルを独自のdivに配置し、テーブル全体で必要に応じて、divの幅、最小幅、最大幅を設定します。次に、作業して他のセルの幅と最小幅を設定し、divの最大幅を効果的に前後に操作して、必要な最大幅を実現できます。

<div id="tablediv">
<table width="100%">
 <tr>
  <td class="tdleft">Test</td>
  <td>A long string blah blah blah</td>
 </tr>
</table>
</div>

それからあなたのスタイルに入れてください:

#tablediv {
    width:90%;
    min-width:800px
    max-width:1500px;
}
.tdleft {
    width:20%;
    min-width:200px;
}

確かに、これはセル自体の「最大」幅を提供しませんが、そのようなオプションの代わりに機能する可能性があるいくつかの制御を可能にします。それがあなたのニーズに合うかどうかわかりません。私は、ページのナビゲーション側をポイントまで拡大または縮小したいという状況で、最近のすべてのワイドスクリーンで機能したことを知っています。


0

パーセントは絶対サイズを基準にする必要があります。これを試してください:

<table>
<tr>
<td>Testasdas 3123 1 dasd as da</td>
<td>A long string blah blah blah</td>
</tr>
</table>

<style>
table{width:200px;}
td{width:65%;border:1px solid black;}
</style>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.