所以我每天都在努力改变标题,我试图用随机颜色创建它。标题中有2种颜色,我正在制作免费颜色。第一种颜色是随机生成的,然后第二种颜色通过改变色调150°来修改。问题是当选择某些颜色时,它们可能太生气或太暗。我有一个检查运行,以便我可以稍微控制亮度值,但仍然有一些太亮的颜色(例如极端黄色)。我在下面发布我的代码。任何帮助或建议表示赞赏!谢谢!
// grab a random color on hue
$h = rand(0,360);
// color values 50-120 tend to be extremely bright,
// make adjustments to the S and L accordingly
// a better solution is available?
if ($h > 50 && $h < 120) {
$s = rand(60,80);
$l = rand(30,50);
} else {
$s = rand(60,90);
$l = rand(38,63);
}
// declare string to place as css in file for primary color
$randomColor = "hsl(". $h .",". $s ."%,". $l ."%)";
// declare degree for secondary color (30 = analogous, 150 = complimentary)
$degree = 150;
// point to secondary color randomly on either side of chart
$bool = rand(0,1);
if ($bool) {
$x = $degree;
} else {
$x = -$degree;
}
// set value of the new hue
$nh = $h + $degree;
// if the new hue is above 360 or below 0, make adjustments accordingly
if ($nh > 360) {
$nh -= 360;
}
if ($nh < 0 ) {
$nh = 360 - $nh;
}
// set the secondary color
$secondaryColor = "hsl(". abs($h + $x) .",". $s ."%,". $l ."%)";
这看起来非常简单,我确信有更好的方法。我环顾四周,但我注意到的是基本配方的色度等等。再次感谢!
答案 0 :(得分:1)
这更像是一个你认为可以接受观看的颜色的问题。这当然不是一个最佳的解决方案,但它至少是可读的方法(如果你甚至关心它,它也会比你原来的稍微更随机):
function randColor() {
return array( rand(0,360), rand(0,100), rand(0,100) );
}
function isAcceptableColor($colorArr) {
// return true if the color meets your criteria
}
do {
$color = randColor();
} while ( ! isAcceptableColor($color) );