テンプレートデータファイルは次のとおりです。 https://github.com/Hoektronics/BotQueue/blob/master/views/bot/dashboard_list.ejs
テキストに基づいて、パディングと列ヘッダーを考慮して、テーブルの10列のうち8列を作成して、必要な最小幅のみを取得しようとしています。
サンプル画像では、4番目と9番目の列以外のすべてが最小幅を占めるようにします。技術的には、9つの列ヘッダーがあり、最後のヘッダーにはcolspanが2あります。最後のヘッダーはspan3です。必要な最小幅をパーセンテージ列で占め、残りをプログレスバーまたは合格/表示/不合格ボタンで占めたいです。
列4は、オーバーフローしたテキストを省略記号で置き換えるように設定されています。
サンプル画像:
一部のセルを非常に小さな幅に設定し、white-space: nowrap
プロパティを適用するというトリックがあります。
<table>
<tr>
<td class="min">id</td>
<td class="min">tiny</td>
<td>Fills space</td>
<td>Fills space</td>
<td class="min">123</td>
<td class="min">small</td>
<td>Fills space, wider</td>
<td>Fills space</td>
<td class="min">thin</td>
</tr>
</table>
td {
width: auto;
}
td.min {
width: 1%;
white-space: nowrap;
}
上記のフィドルでもわかるように、nowrap
はテーブルセルに強制的に改行を防止し、幅を可能な限り小さくします。
注:thead
がある場合は、td
のスタイリングをth
にも適用します。
長い列を自動的に楕円に折りたたむには、 text-overflow: Ellipsis
が探しているものです。
td.cell-collapse {
max-width: 200px;
overflow: hidden;
text-overflow: Ellipsis;
}
これには、overflow
をhidden
に設定し、width
またはmax-width
に固定値を設定する必要もあります。幅を制限するセルにcell-collapse
クラスを追加します。
Bootstrapのtable
クラスは、このアプローチを台無しにするwidth: 100%;
を設定します。 table { width: inherit !important; }
で修正できます
注:テーブルセルには既にwidth: auto;
があるため、このアプローチのテーブルは既に全幅になっています。
純粋なCSSベースのアプローチが現在のすべてのブラウザーで一貫して機能するようになったため、以前のJavascriptベースのソリューションは削除されました。元のコードは、リンクされた JSfiddle で引き続き利用でき、コメントアウトされています。
列に必要なサイズがわかっていて、それらが固定されている場合は、固定テーブルレイアウトを使用することをお勧めします。各列がとる固定%を指定できます。
同様の状況で私を助けたリンクはここにあります http://css-tricks.com/fixing-tables-long-strings/