2016-11-15 5 views
2

テーブルのコンテナの幅を塗りつぶします。 3つの列があります。 2つの列は固定幅を持ち、3つ目の列は残りの幅を埋めるように展開する必要があります。テーブルの幅は動的です。テーブル:幅に合わせて列を展開しますが、行の高さは単一行にします

行の高さが拡大する可能性がある場合には、これを動作させることができますが、各行には1行のテキストのみが必要です。テキストが長すぎる場合は、切り捨てる必要があります。

コード+例:(https://jsfiddle.net/o044tq53/5/

EDIT:私は上記の説明を書き直し、それがどのように見えるかを示す例でjsfiddleを更新しました。

#wrapper { 
 
    width:200px; 
 
    background:white; 
 
} 
 
table { 
 
    border-collapse:collapse; 
 
    text-align: left; 
 
    width:100%; 
 
    margin-bottom:30px; 
 
} 
 
div { 
 
    overflow:hidden; 
 
    white-space: nowrap; 
 
    text-align:left; 
 
} 
 
.td_col_two { 
 
    width:100%; 
 
} 
 
.col_one_div { 
 
    width:90px; 
 
    background: red; 
 
} 
 
.col_two_div { 
 
    background: lightblue; 
 
    overflow:hidden; 
 
} 
 
.col_three_div { 
 
    width:20px; 
 
    background: lightgreen; 
 
}
<table border="0" cellpadding="0" cellspacing="0"> 
 
    <tr> 
 
    <td> 
 
     <div class = "col_one_div"> 
 
     Robin 
 
     </div> 
 
    </td> 
 
    <td class = "td_col_two"> 
 
     <div class = "col_two_div"> 
 
     nowrap does not work for long text. 
 
     </div> 
 
    </td> 
 
    <td> 
 
     <div class = "col_three_div"> 
 
     x 
 
     </div> 
 
    </td> 
 
    </tr> 
 
</table>

+0

したがって、内容に関係なく各列を最大に保ちたいですか?あなたの目的が何であるのか、また表の説明はあまり明確ではありません。望ましくない行動に対して、望ましい行動は何ですか? – zer00ne

+0

2つの列は固定幅を持ち、中央の列のみが表の幅を埋めるように展開します。私は今、この問題について明らかにした。あなたがjsfiddleを見ると、最後のテーブルは真ん中のテーブルのように見えますが、長いテキストは収まるように短くなります。 – user984003

+0

長いテキストを切り捨て、省略記号を全文のアンカーにすると考えましたか? – zer00ne

答えて

0

は、ディスプレイの使用を検討してください希望を:(1フレックス成長)

チェックこのスニペット

#wrapper { 
 

 
    background: white; 
 
    display: flex; 
 
    flex-direction: column; 
 
    border:1px solid black; 
 
} 
 

 
#wrapper table { 
 
    flex: 1; 
 
    width: 100%; 
 
} 
 

 
table, 
 
tr, 
 
td { 
 
    border: 1px solid; 
 
    
 
} 
 

 
#table-two div { 
 
word-wrap:break-all; 
 
} 
 

 
.td_col_two { 
 
    width: 100%; 
 
} 
 

 
.col_one_div { 
 
    background: red; 
 
} 
 

 
.col_two_div { 
 
    background: lightblue; 
 

 

 
} 
 

 
.col_three_div { 
 
    width: 20px; 
 
    background: lightgreen; 
 
}
<div id="wrapper"> 
 
    <table id="table-one"> 
 
    <tr> 
 
     <td> 
 
     <div class="col_one_div"> 
 
      Robin 
 
     </div> 
 
     </td> 
 
     <td class="td_col_two"> 
 
     <div class="col_two_div"> 
 
      Short works 
 
     </div> 
 
     </td> 
 

 
     <td> 
 
     <div class="col_three_div"> 
 
      x 
 
     </div> 
 
     </td> 
 

 
    </tr> 
 

 
    </table> 
 

 

 
    <table id="table-two"> 
 
    <tr> 
 
     <td> 
 
     <div class="col_one_div"> 
 
      Robin 
 
     </div> 
 
     </td> 
 
     <td class="td_col_two"> 
 
     <div class="col_two_div"> 
 
      White-space normal also works. 
 
     </div> 
 
     </td> 
 

 
     <td> 
 
     <div class="col_three_div"> 
 
      x 
 
     </div> 
 
     </td> 
 

 
    </tr> 
 

 
    </table> 
 

 
    <table id="table-three"> 
 
    <tr> 
 
     <td> 
 
     <div class="col_one_div"> 
 
      Robin 
 
     </div> 
 
     </td> 
 
     <td class="td_col_two"> 
 
     <div class="col_two_div"> 
 
      nowrap does not work for long text. 
 
     </div> 
 
     </td> 
 

 
     <td> 
 
     <div class="col_three_div"> 
 
      x 
 
     </div> 
 
     </td> 
 

 
    </tr> 
 

 
    </table> 
 

 
</div>

:フレックスとフレックス1これは役に立ちます

+0

ありがとうございますが、最後のテーブルの中央の列はまだまだ広すぎます。テキストが列の中に収まらない場合は、テキストを短くする必要があります。テーブルの幅は、親の制約の範囲内でなければなりません。 – user984003

+0

なので、テキストが幅を超えて折り返す必要がありますが、中央の列がテーブルに収まるように拡大する必要があるのでしょうか? – Geeky

+0

コードを修正しました。今すぐチェックしてください。 – Geeky

関連する問題