【问题标题】:PHP While - Color change every timePHP While - 每次颜色变化
【发布时间】:2012-11-05 22:38:28
【问题描述】:

我有一个 PHP while 循环,它在表格中显示数据库的内容。 我想让表格中的所有行都变成不同的颜色。

但不仅仅是随机的。我希望它们有不同深浅的红色,第一行是最红的,然后其余的会变成浅红色。

作为一个例子,我想要和 iPhone App 一样的效果:清除。 图片示例:http://www.realmacsoftware.com/_resources/clear/images/ss_pinch.png

我尝试在 CSS 和一些 jQuery 中使用 -nth 来制作效果,但就是想不通。我希望你能试一试。

代码如下:

<table>


<tr>
<td align="center"><strong>Navn:</strong></td>
<td align="center"><strong>Spørgsmål:</strong></td>
<td align="center"><strong>Tid:</strong></td>

</tr>
<?php
while($rows=mysql_fetch_array($result)){
?>
<tr>
<td><? echo $rows['name']; ?></td>
<td><? echo $rows['ask']; ?></td>
<td><? echo $rows['time']; ?></td>


<?php
}
?>

</tr>
</table>

【问题讨论】:

  • 你想要一个渐变。这与 PHP 无关。
  • 你有什么想法,那我怎么做效果?
  • 纯 CSS,渐变。见this answer
  • @Cthulhu 不会创建离散颜色
  • @JanDvorak I would like them have different shades of red, where the first row is most red, and then the rest fades into a lighter red. 我认为这意味着渐变。

标签: php css colors html-table gradient


【解决方案1】:
<?php
$colors = array("yellow","red","green","silver");
$i=0;
while($rows=mysql_fetch_array($result)){
?>
<tr bgcolor="<?php echo $colors[$i]; ?>">
<td><? echo $rows['name']; ?></td>
<td><? echo $rows['ask']; ?></td>
<td><? echo $rows['time']; ?></td>


<?php
$i<3?$i++:$i=0;
}
?>

如果你想换成 rgb 颜色模式,像这样替换,然后将颜色名称更改为 rgb 比例,例如 rgb(100,100,100)

【讨论】:

  • 将其切换为使用 for 循环会简化它。
【解决方案2】:

您必须在表格行中应用 css。

<div class="grad">
<table>
<tr>
<td align="center"><strong>Navn:</strong></td>
<td align="center"><strong>Spørgsmål:</strong></td>
<td align="center"><strong>Tid:</strong></td>
</tr>
<?php
while($rows=mysql_fetch_array($result)){
?>
<tr>
<td><? echo $rows['name']; ?></td>
<td><? echo $rows['ask']; ?></td>
<td><? echo $rows['time']; ?></td>
</div>
 <?php
 }
?>
</tr>
</table>


<script>

//css Part
.grad
{
   background: -webkit-gradient(linear, left top, left bottom, from(#ccc), to(#000));
}
</script>

【讨论】:

  • 这不会产生离散的颜色。
  • 您只需更改左上角、左下角选项只有上下等
  • 几乎是我想要的效果,除了我希望每一行只有一种颜色。下一行,颜色稍微浅一点,以此类推。
  • 另外,它不适用于firefox(但这很容易解决)或IE8(可以不关心)
  • 将此代码用于所有浏览器。 filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#996699', endColorstr='#990000'); /* for IE / -webkit-gradient(linear, left top, left bottom, from(#996699), to(#990000)); / 对于 webkit 浏览器 / -moz-linear-gradient(top, #996699, #990000); / 用于 Firefox 3.6+ */
【解决方案3】:

如果您需要为每个元素使用不同的颜色,则静态 CSS 文件无法描述。您可以即时生成 CSS 文件,但我选择了内联样式。如果可以使用静态 CSS 文件,请不要使用内联样式。

对于从红色到白色的简单线性插值,遵循您的编码风格。我还删除了一个不属于那里的额外&lt;/div&gt;

<?php
$num_rows=mysql_num_rows($result);
$cur_row=0;
while($rows=mysql_fetch_array($result)){
$color=intval(256*$cur_row/($num_rows-1));
$cur_row++;
?>
<tr style="background:rgb(256,<? echo $color.','.$color;>);">
<td><? echo $rows['name']; ?></td>
<td><? echo $rows['ask']; ?></td>
<td><? echo $rows['time']; ?></td>
<?php
}
?>

【讨论】:

  • 当我尝试这个时,结果只是第一行是红色的,最后一行是黄色的。中间的所有行都没有颜色?
  • @user1410965 添加了intval 以防止小数值出现在 CSS 样式中。
  • 完美! - 这正是我想要的效果。谢谢!
【解决方案4】:

您还可以使用 Javascript 和 HSV(这是一个不同的“颜色坐标系统”)。

Jsfiddle 演示:http://jsfiddle.net/QXLRg/7/
另一个演示:http://jsfiddle.net/QXLRg/8/
另一个:http://jsfiddle.net/QXLRg/10/

(我所做的只是改变'h'值..)

var h = 0.4;
var s = 0.9;
var v = 0.95;

因此,如果您想以编程方式创建不同的颜色,那么最好使用 HSV 而不是原始 RGB,因为您可以精细控制例如“颜色柔和度”等等。例子

【讨论】:

  • HSV 是个好主意。请注意,CSS 也支持 HSV,因此您可以使用 PHP 而不需要 JS :-)
猜你喜欢
  • 1970-01-01
  • 2017-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-26
  • 2011-04-12
相关资源
最近更新 更多