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 :(得分: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);