2016-04-28 46 views
0

很多示例都展示了如何在响应式设计中一对一地堆叠单元格(将display:block应用于所有单元格就足够了)。如果我想让细胞成对堆叠,会怎么样?比方说,我有4个细胞中的一行:在响应布局中按成对堆叠单元格

A B C d

而且在响应的设计,我想是这样的:

A B

C^d

我怎么能处理这个?

+0

你必须使用媒体查询或使用框架,如[bootstrap](http://getbootstrap.com/) – bklups

+0

@bklups我知道我必须使用媒体查询,我只是想知道我必须将哪些样式应用于现有的表格才能使其看起来像我所描述的。 – InfinitePii

+0

根据媒体查询,在同一个div上放置B(对于C D同样):100%或50% – 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/

请参阅浏览器对flex的支持,网址为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是可以接受的改变你的HTML,使每一行包含两个单元格(所以每个TR包含两个TD)?如果是这样,我可以更新我的答案,以包含即使在非常旧的浏览器上也能正常工作的解决方案。 –

+0

是的,我会很感激。然而,原理保持不变,所以在某些点(更高的屏幕宽度),所有单元格都显示在彼此的旁边,有些则像我在文章中描述的那样突破。如果你能告诉我如何通过两个trs(希望没有动态DOM操作)来实现这一点,那真是太棒了。 – InfinitePii