2013-12-14 50 views
3

Here's a link回答以前的問題,我認爲與我的問題有很大關係。我只需要一些額外的說明就可以了。在基於數值的範圍內指定顏色值

我正在創建一個元素週期表,我想要做的是設置一個顏色漸變,然後根據某個屬性讓各個正方形在該漸變中具有顏色。例如,如果我的顏色漸變從淺紅色變爲深紅色(現在的實際顏色不重要),並且我正在顯示錶格中元素的熔點,我希望那些bp較低的元素是較淺的紅色和那些bp較高的紅色較深;換句話說,我需要將我的bp範圍(約-400到+1500)映射到漸變範圍中的顏色值。我不希望顏色平均分佈......如果兩個元素接近相同的熔點,我希望他們幾乎相同。這是一對一的對應關係。

在引用的問題中,我瞭解如何創建漸變,但我不明白的是如何獲取熔點的值,並使用該函數生成該值落在漸變上的位置。我不明白在哪裏做了什麼,或者我如何將我的值數組鏈接到顏色數組。

目前,我正在使用the function provided in the link,然後嘗試獲取輸出並使用它來生成我的div的背景顏色。我使用的輸入與定義最後一行中的「$ Variable」相同。

<div id="Helium" style="background-color:<?php echo $color; ?>;" class="element group18 period1"> 
    <span class="number"> <?php echo $row[2]['atomicNumber']; ?> </span><br> 
    <span class="symbol"><?php echo $row[2]['symbol']; ?></span><br> 
    <span class="name"><?php echo $row[2]["$NameLanguage"]; ?></span><br> 
    <span class="molmass"><?php echo $row[2]["$Variable"]; ?></span></div> 

謝謝大家的幫助。我很欣賞時間。

+0

只是一個有益的提示:''
是WAY棄用。爲此使用CSS。 – m59

回答

0

讓我們設置一些任意的開始和結束值,比如說純紅(#FF0000)爲高熔點,純藍(#00FF00)爲低熔點。

爲簡單起見,假設週期表只有熔點值在10-500之間(我知道它不是,但它不應該是一個巨大的變化)。

我們可以映射將熔點是沿着由這樣做:

$mp=440; 
$max=500; 
$min=10; 
$position=($mp-$min)/($max-$min); 
$highColor=hexdec("FF0000"); //converts to decimal for multiplication 
$lowColor=hexdec("00FF00"); 
$newColor=intval($position*($highColor-$lowColor)+$lowColor); 
$newColorStr=dechex($newColor); 
+0

這看起來對我來說是可以理解的。謝謝。我想我知道我現在需要做什麼。我很感激幫助。我認爲我需要做的是將其放入一個函數並輸出值。 – user2752439

+0

很高興能幫到 – scrblnrd3

+0

嘿,我只是試過了,而且我得到了結果!我需要弄清楚自己的細節,但非常感謝你在正確的方向微調!我欠你一個披薩! – user2752439