如何确保表格的每个单元格在不使用固定尺寸的情况下变为方形?当他们改变宽度时,响应。
table {
width: 90%;
}
td {
width: 30%;
}
tr {
/** what should go here? **/
}
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
</tr>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
</tr>
<table>
答案 0 :(得分:47)
您可以使用以下所述的技术:Grid of responsive squares。
使用表格和方格表单元格改编为您的用例,它看起来像这样:
table {
width: 90%;
}
td {
width: 33.33%;
position: relative;
}
td:after {
content: '';
display: block;
margin-top: 100%;
}
td .content {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background: gold;
}
&#13;
<table>
<tr>
<td><div class="content">1</div></td>
<td><div class="content">1</div></td>
<td><div class="content">1</div></td>
</tr>
<tr>
<td><div class="content">1</div></td>
<td><div class="content">1</div></td>
<td><div class="content">1</div></td>
</tr>
<tr>
<td><div class="content">1</div></td>
<td><div class="content">1</div></td>
<td><div class="content">1</div></td>
</tr>
<table>
&#13;
<强> FIDDLE demo 强>
答案 1 :(得分:5)
这是我的代码:http://jsfiddle.net/vRLBY/1/
关键是使用:
td { width: 33%; padding-bottom: 33%; height: 0; }
td div { position: absolute }
因为padding-bottom
是根据宽度定义的。更多信息:http://absolide.tumblr.com/post/7317210512/full-css-fluid-squares
注意:之前我发布了一个无法运行的代码(请参阅here)。感谢@ web-tiki报告错误; - )
答案 2 :(得分:0)
如果某人正在寻找不需要固定的width
属性(即使是百分比)的解决方案,这就是我根据上述答案和经过批准的答案中的link得出的结论:
td {
height: 0;
&:after, &:before {
content: '';
display: block;
padding-bottom: calc(50% - 0.5em);
}
}
有点la脚,但用一块石头杀死了两只鸟: