2016-04-28 8 views
0

多くの例では、レスポンシブデザインでセルを1つにスタックする方法を示しています(すべてのセルにdisplay:ブロックを適用するだけで十分です)。もし私がペアでセルを積み重ねたいのであれば?のは、私は4つのセルと行を持っているとしましょう:応答レイアウトでペアでテーブル内にセルを積み重ねる

A B C D

で応答性のデザインで、私はこのような何かをしたい:

B

C D

私はこれに近づく可能性がどのように?

+0

ですクエリや[ブートストラップ](http://getbootstrap.com/)のようなフレームワークを使用 – bklups

+0

@bklups私はメディアのクエリを使用する必要があることを知っている、私はちょうど私が記述したように見えるようにするために既存のテーブルに適用する必要がありますスタイル。 – InfinitePii

+0

メディアのクエリに応じてwidth:100%または50%の同じdiv(C Dと同じ)にBを入れます。 – bklups

答えて

0

古いブラウザ(IE9など)をサポートする必要がない場合は、flex-basisを使用してください。

HTML

<table> 
    <tr> 
    <td>A</td> 
    <td>B</td> 
    <td>C</td> 
    <td>D</td> 
    </tr> 
</table> 

CSSここで

tr { 
    display: flex; 
    flex-wrap:wrap; 
} 

td { 
    /* makes every cell at least 34% of the total width, thus 
    preventing more than two cells from getting on the same row */ 
    flex-basis: 34%; 
} 

はjsfiddle https://jsfiddle.net/0thg1j7h/です。

フレックスのブラウザサポートのhttp://caniuse.com/#feat=flexboxを参照してください。

あなたは、このソリューションを試してみてください、古いブラウザをサポートする必要がある場合:

HTML

<table> 
    <tr> 
    <td>A</td> 
    <td>B</td> 
    </tr> 
    <tr> 
    <td>C</td> 
    <td>D</td> 
    </tr> 
</table> 

CSS

/* all cells on one line */ 
/*tr { 
    float: left; 
}*/ 

/* two cells per row */ 
/* do nothing */ 

/* one cell per row */ 
/*td { 
    display: block; 
}*/ 

は、ここでは、メディアを使用する必要がjsfiddle https://jsfiddle.net/3183v90w/1/

+0

ありがとうございますが、残念ながら私はIE9をサポートしなければなりません。 – InfinitePii

+0

@InfinitePiiすべての行に2つのセルが含まれるようにHTMLを変更することは許容されます(つまり、すべてのtrに2つのtdが含まれます)。もしそうなら、私は非常に古いブラウザでも動作するはずのソリューションを含めるように答えを更新することができます。 –

+0

はい、ありがとうございます。しかし、原理は同じであるため、いくつかの点では(画面の幅が広くなると)、すべてのセルが隣り合って表示され、いくつかのセルでは私の記事で説明したように壊れます。 2つのtr(うまくいけば、動的DOM操作なし)でそれを達成する方法を私に示すことができたら、それはすばらしいでしょう。 – InfinitePii

関連する問題