我想将101行的颜色更改为400(最后一行),但我不知道如何,这里是我的代码:
echo "<html><body><table>\n\n";
$f = fopen("Productos.csv", "r");
while (($line = fgetcsv($f,1000,";")) !== false) {
echo "<tr>";
foreach ($line as $k => $cell) {
$color = ($k == 4) ? 'red' : 'white';
$class = "style='background-color: $color'";
echo "<td $class>" . htmlspecialchars($cell) . "</td>";
}
echo "</tr>\n";
}
fclose($f);
echo "\n</table></body></html>";
答案 0 :(得分:0)
这种东西有不同的方法,没有对错,一切都取决于具体情况。但是,存在一些通用协议,例如,样式规则应该与标记分开实现。
我在下面给出两个例子。根据您的问题,我了解您要更改病房中某个表行的颜色。但是,在您的代码中,您似乎可以使用实际的表单元。我决定将行颜色从白色更改为绿色以用于演示目的,行索引为10。为了证明在这种方法中也很容易考虑列,我还在那些绿色行中将第三列黄色着色。显然,这只是一个粗略的例子。
选项1:我眼中最优雅的方法是将样式规则移动到样式表文件中,不依赖任何特定的标记细节 :
PHP:
<?php $fileHandle = fopen('productos.csv', 'r'); ?>
<html>
<head>
<link rel="stylesheet" type="text/css" href="productos.css">
</head>
<body>
<table>
<tbody>
<?php while (($columns = fgetcsv($fileHandle, 1000, ';')) !== false) { ?>
<tr>
<?php foreach ($columns as $colId => $colVal) { ?>
<td><?=htmlspecialchars($colVal)?></td>
<?php } ?>
</tr>
<?php } ?>
</tbody>
</table>
</body>
</html>
CSS:
tr td {
background-color: white;
}
tr:nth-child(n+10) td {
background-color: green;
}
tr:nth-child(n+10) td:nth-child(3) {
background-color: yellow;
}
优点:非常干净和紧凑的标记,所有样式逻辑和规则在一个地方。看看我创建的这个fiddle是为了便于理解......
选项2:更常见的方法是使用类名丰富标记,但要在样式表文件中保持实际样式规则分开:
PHP:
<?php $fileHandle = fopen('productos.csv', 'r'); ?>
<html>
<head>
<link rel="stylesheet" type="text/css" href="productos.css">
</head>
<body>
<table>
<tbody>
<?php while (($columns = fgetcsv($fileHandle, 1000, ';')) !== false) { ?>
<tr class="<?= (++$rowId>9)? 'high' : 'low' ?>">
<?php foreach ($columns as $colId => $colVal) { ?>
<td class="<?= (++$colId===3)? 'yellow' : 'green' ?>"><?=htmlspecialchars($colVal)?></td>
<?php } ?>
</tr>
<?php } ?>
</tbody>
</table>
</body>
</html>
CSS:
tr td {
background-color: white;
}
tr.high td {
background-color: green;
}
tr.high td.yellow {
background-color: yellow;
}
优点:易于阅读和理解。这是演示fiddle ...