2012-11-17 67 views
0

我有一个PHP while循环,它在一个表中显示数据库的内容。 我想使表中的所有行都有不同的颜色。PHP虽然 - 每次都改变颜色

但不只是随机的。我希望他们有不同的红色阴影,第一排最红,其余的则变成浅红色。

作为一个例子,我想要与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> 
+0

你想要一个渐变。这与PHP无关。 –

+0

你有什么想法,我怎么能做出这个效果呢? – MathiasJakobsen

+0

仅限CSS,渐变。看到[这个答案](http://stackoverflow.com/questions/5973179/css-rounded-table-corners-gradient-background) –

回答

1

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

对于从红色到白色的简单线性插值,遵循您的编码风格。我也卸下了额外的</div>不属于那里:

<?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 
} 
?> 
+0

当我尝试这个时,结果就是第一行是红色,最后一行是黄色。中间的所有行都没有颜色? – MathiasJakobsen

+0

@ user1410965增加了'intval'来防止出现在CSS样式中的小数值。 –

+0

完美! - 这正是我想要的效果。谢谢! – MathiasJakobsen

0
<?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)

+0

切换这个使用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> 
+1

这不会创建离散的颜色。 –

+0

你只是改变左上方,左下方选项只有顶部底部等 – Daxen

+1

几乎我所寻找的效果,除了我希望每一行只有一种颜色。而下一行,颜色更轻一些,等等。 – MathiasJakobsen

1

您也可以玩的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会更好,因为您可以很好地控制例如“颜色温和性”以及更多的东西......正如您在上面的示例中看到的那样

+0

单纯疱疹病毒是一个好主意。请注意,CSS也支持HSV,所以你可以使用PHP,你不需要JS :-) –