2012-05-31 8 views
7

動的に作成された任意の数の列を含むことができるページの場合は、100%の表が必要です。各列には非常に長い単語が含まれているため、すべてが1ページに収まらない場合があります。これを修正するには、table-layout: fixedを使用しました。これにより、ページの表のすべての列が表示されます。問題は、各列の幅を動的にしたいから、列に短い単語がある場合は、長い単語のものよりも短くする必要があるということです。例えば、jsfiddle動的な列を持つテーブルが固定されたレイアウト

表1には常にすべての列が示されていますが、ページの幅が十分に広い場合は、他の列に空き領域があってもワードが分割されます。

表2は、ページが列よりも広いが、最初の列が画面の外に他の列を他のオブジェクトにプッシュするときに機能します。

すべてを手に入れる方法はありますか?テーブルには、フィットする必要があるよりも幅の広い列と列が常に含まれていますか?私はそれがテーブルをあふれさせなければならないならば、言葉を壊すことを望む。

私はjs/jqueryの解決策を受け入れることができましたが、可能であればCSSが望ましいです。

編集:

小さなテーブル: 注:asasdasdasdasdasdasdasdasdasdasdasdテーブルがこれより大きくすることができないので、短縮さワードです。

+--------------------+----------+---------+ 
|asasdasdasdasdasdasd|qweqweqweq|zxczxczxc| 
|asdasdasdasdasd  |   |   | 
+--------------------+----------+---------+ 

大きなテーブル: 注:すべての列は、好ましくは、それらが均等に分散空のスペースで増加、等しい大きさではありません。

+--------------------------------------+-------------+------------+ 
|asasdasdasdasdasdasdasdasdasdasdasd |qweqweqweq |zxczxczxc | 
+--------------------------------------+-------------+------------+ 
+0

があり、細胞の大きいデータであり、データが短い場合、それはなしで収まる必要があるときは、テキストの折り返しをしたいということです空白? – MSUH

+0

@MSUH私は自分の投稿を編集して解明しようとしました。長すぎると長い単語でも折り返したいと思っています。スペースが残っている場合は、テーブルに均等に配布することがベストです。 – olofom

答えて

1

私は、これが出発点となる可能性が理解している場合:プロパティを:すべての

var tds; 

$("table").each(function() { 

    tds = $("td"); 

    for(var x = 0; x < tds.length; x++){ 
     tds.eq(x).css('max-width', '100px'); 
    } 

}); 
+0

この解決策の問題は、幅をピクセル値に設定することであり、列の数とその幅はわかりません。テーブルの幅が768pxの20個のカラムがあり、テーブルの幅が1080pxのカラムが2つあるかもしれません...そして、このJSはCSSで非常に簡単に行えます: 'table#t2 td {max-width:300px; } ':) – olofom

+0

テーブルの列の数と画面またはドキュメントの幅を計算し、この割合で最大幅:100ピクセルを代入できますか?これは解決策ですか? –

+0

私はそれがうまくいくかどうかはわかりません。このシーンを考えてみましょう:私は幅が10列、縦が1000ピクセルです。最初の9個の列はそれぞれ10個だけ必要で、10個目は910個の列を簡単に使用できます。最大幅はどうあるべきですか?彼らはそれぞれ1/10になることもあります。したがって、最大幅は910pxまたは100pxにする必要がありますか? – olofom

0

まず「固定テーブルレイアウト」を削除します。

が、これはあなたのケースで完璧に動作するはずです、次のコードを試してみてください。私が理解

$(document).ready(function(){ 

$("table").find('tr').children('td').each(function() { 
    var wdth = $(this).html().length + 10; 
    $(this).css({ 'padding-right': '10px' }, { 'width': wdth + 'px' }); 
    }); 
});  
+0

申し訳ありませんが、それはうまくいかないでしょう。 http://stackoverflow.com/a/14765961/1872046 –

関連する問題