【问题标题】:How fit content to table size内容如何适应表格大小
【发布时间】:2018-07-11 17:18:54
【问题描述】:

我正在寻找一种使表格内容适合表格大小的方法。 例如,我有宽度和高度 = 100 的表格,以及 5 列和 5 行,如果行或列更改为 20,则只有内容重新调整大小以适应旧表格大小。 我写了一些代码, 但如果行或列发生变化,它会调整表格大小!

<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;

?>

【问题讨论】:

  • $w 是行数,$h 是列数
  • 能不能使用非固定宽度,让浏览器按需要调整大小?
  • 我正在做填字游戏,我想展示一个迷你拼图以供审核,并希望它的大小是固定的,而不是更多!

标签: php css html-table


【解决方案1】:

为表格单元格添加边框时要小心,因为它会在当前宽度/高度上增加 2px。 当您将表格宽度除以列/行数时使用 floor(),因为宽度和高度属性不接受分数。

而且似乎高度属性不准确(不知道为什么)。

您还必须考虑文字大小。例如我把:

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;

?>

【讨论】:

    【解决方案2】:

    如果我对您的理解正确,您想按照自己的逻辑管理表格的大小。 如果表格单元格中的任何内容由于某种原因溢出,您不希望它增长。在这种情况下,您希望它保持静态尝试添加此属性

    table
    {
       table-layout:fixed;
    }
    

    【讨论】:

    • Mortalus:它固定表格宽度但不固定内容,并且内容从表格溢出,代码适用于行或列小于15但不适用于更多
    • 其实我忘了说:代码工作少于 15 行或列,但我想工作 30 列或行。
    • 我不是那个意思,我的意思是在不改变表格高度或宽度的情况下重新调整内容大小以适应固定大小。例如将 td 和 tr 更改为更小的尺寸。对不起,我的英语不够好。希望你明白我说什么,我想做什么
    猜你喜欢
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 2019-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多