2012-11-17 40 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 :-) –