2012-08-14 59 views
0

我在寻找一种方法来适应表内容,以表大小 例如我有宽度和高度= 100,和5栏和第5行的表中,如果行或COL变化至20只有内容重新调整大小以适应旧桌子大小。 我写了一些代码: 但它reszie表如果行或列更改!如何配合内容表的大小

<style> 
.tbl { 
    max-width: 100px; 
    max-height: 100px; 
    height: 100px; 
    width: 100px; 
    border: 1px solid #333; 
} 
.blck { 
    border: 1px solid #0F3; 
    background:#F00;  
} 
.wht { 
    border: 1px solid #0F3; 
    background:#069; 
} 
</style> 
<?php 
$w = 15; 
$h = 15; 
$max = 100; 

if ($w>=$h) { 
    $cell = ($max/$w); 
} else { 
    $cell = ($max/$h); 
} 
$clr = 0; 
$tbl .= '<table width="'.$max.'px" align="center" border="0" height="'.$max.'px" class="tbl">'; 
for ($r=1;$r<=$h;$r++){ 

$tbl .= '<tr>'; 
    for($c=1;$c<=$w;$c++){ 
     if($clr == '0'){ 
      $tbl .= '<td width="'.$cell.'%" height="'.$cell.'%" class="blck"></td>'; 
      $clr = 1; 
     } else { 
      $tbl .= '<td width="'.$cell.'%" height="'.$cell.'%" class="wht"></td>'; 
      $clr = 0; 
     } 
    } 
$tbl .= '</tr>'; 
} 

$tbl .= '</table>'; 

echo $tbl; 

?> 
+0

$ w是行号,$ h是山坳 – OceanOne 2012-08-14 19:51:36

+0

的号码,您可以使用非固定宽度,让浏览器的大小根据需要? – 2012-08-14 19:52:00

+0

我正在使用填字游戏,我想显示一个迷你的谜题审查,并希望它在固定的大小,而不是更多! – OceanOne 2012-08-14 19:55:11

回答

1

的时候要小心添加边框的表格单元格,因为它会增加2px的当前的宽度/高度。 由于宽度和高度属性不接受分数,所以在将表格宽度除以cols/rows计数时使用floor()。

它似乎height属性是不准确的(不知道为什么)。

你也必须考虑文字大小。比如我放:

font-size: 1px; 
line-height: 1px; 

检查了这一点:

<?php 
$w = 30; 
$h = 30; 
$max = 100; 

if ($w>=$h) { 
    $cell = floor($max/$w); 
} else { 
    $cell = floor($max/$h); 
} 
?> 
<style type="text/css"> 
.tbl { 
    display: table; 
    height: <?php echo ($cell*$h); ?>px; 
    width: <?php echo ($cell*$w); ?>px; 
    font-size: 1px; 
    line-height: 1px; 
} 
.blck { 
    background-color: #F00; 
} 
.wht { 
    background-color: #069; 
} 

.tbl .tr { 
    display: table-row; 
} 

.tbl .td { 
    width: <?php echo $cell;?>px; 
    height: <?php echo $cell;?>px; 
    display: table-cell; 
} 
</style> 
<?php 

$fcell = $clr = 0; 
$tbl .= '<div class="tbl">'; 
for ($r=1;$r<=$h;$r++){ 
    $tbl .= '<div class="tr">'; 
     for($c=1;$c<=$w;$c++){ 
      if($clr == '0'){ 
       $tbl .= '<div class="td blck">&nbsp;</div>'; 
       $clr = 1; 
      } else { 
       $tbl .= '<div class="td wht">&nbsp;</div>'; 
       $clr = 0; 
      } 
     } 
    $tbl .= '</div>'; 

    if ($fcell == 0){ 
     $fcell = $clr = 1; 
    } else { 
     $fcell = $clr = 0; 
    } 
} 

$tbl .= '</div>'; 

echo $tbl; 

?> 
+0

谢谢,它真的有帮助。 – OceanOne 2012-08-14 22:35:36

0

如果我正确地理解了你,你想按自己的逻辑管理表的大小。 如果表格单元格中的任何内容由于某种原因而溢出,则不希望它增长。你想让它留静态在这种情况下尝试添加该属性

table 
{ 
    table-layout:fixed; 
} 
+0

Mortalus:它固定表的宽度,但不是内容,并且内容从表中溢出,代码对于行或列的工作更少15但不更多 – OceanOne 2012-08-14 20:10:35

+0

实际上我忘了说:代码工作少于15行或列,但我想要为30列或行工作。 – OceanOne 2012-08-14 20:16:09

+0

单元格内容溢出?你的意思是卷轴?...... – Mortalus 2012-08-15 02:35:26

相关问题