2013-12-14 48 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