我正在尝试创建一些在页面加载时生成随机背景颜色的代码,但也会输出一些颜色取决于背景颜色的文本。 EG如果背景颜色较暗,则会显示浅色文字。
到目前为止,我已经创建了以下内容,但是我不确定这是否是实现它的最佳方式。
我创建了一个数组,随机决定背景颜色应该是浅色还是暗色,并且这样做了所以我可以根据$ scheme设置两种备用字体颜色。我确定会有一种更有活力的方法来做到这一点吗?
然后我又设置了两个阵列,列出了暗和亮方案的多种颜色,并使用elseif语句输出相关的css。
关于这一点,我想查询一下:
1)为什么数组中的最后一个字符串永远不会输出?它使得我必须在每个数组中添加一个空字符串,这样就不会省略前一个字符串。
2)实现这一目标的最佳实践是什么,以及最具活力的方法。
<?php
header("Content-type: text/css; charset: UTF-8");
$input = array("dark", "light", "");
$rand_keys = array_rand($input, 2);
$scheme = $input[$rand_keys[0]];
if ($scheme == "dark") {
$darkBg = array('212a34', '383838', '000');
$rand_keys_1 = array_rand($input, 2);
$bg_colour = $darkBg[$rand_keys_1[0]];
echo 'body {background-color:#' . "$bg_colour" . '}';
echo 'h2 { color:#fff; }';
}
elseif ($scheme == "light") {
$lightBg = array('ebecee', '31a989', 'fff');
$rand_keys_2 = array_rand($input, 2);
$bg_colour = $lightBg[$rand_keys_2[0]];
echo 'body {background-color:#' . "$bg_colour" . '}' ;
echo 'h2 { color:#000; }';
}
else { echo 'body {background-color: #ef3c39;}'; }
?>
//应该注意到,它将是预定义的颜色列表
答案 0 :(得分:0)
这样可以解决问题:
echo dechex(mt_rand(0, 0xFFFFFF));
如果您想从一组已知颜色中随机选择,请执行以下操作:
$colors = array($color1, $color2);
echo $colors[array_rand($colors)];
答案 1 :(得分:0)
正如Dagon所说,对于用户界面来说这听起来像是一个可怕的想法但是我会这样做:
//starts off with dark text
$textcolor = '222222';
$rand1 = rand(0,255);
$rand2 = rand(0,255);
$rand3 = rand(0,255);
$bgcolor = sprintf("%02X",$rand1) . sprintf("%02X",$rand2) . sprintf("%02X",$rand3);
$total = $rand1 + $rand2 + $rand3;
//if total is less than 400 it is most likely a darker color unless one or more color is accounting for most of the 400
if($total < 400 && $rand1 < 180 && $rand2 < 180 && $rand3 < 180) {
$textcolor = 'dddddd';
}
与背景相比,它不是完美的,但99%的时间是可读的。
答案 2 :(得分:0)
对于任何有兴趣的人,我已经找到了一个更好的方法来减少代码量,获得更好的随机分布以及更具动态性。
<?php
$bgColours = array(
"414245"=>"dark", //one
"333333"=>"dark", //two
"e25359"=>"dark", //three
"ebeced"=>"light", //six
"edd6b4"=>"light" //seven
);
$bgColour = (array_rand($bgColours,1));
$colourScheme = $bgColours[$bgColour];
if ("$colourScheme" == "dark") {
echo 'body {background-color:#' . "$bgColour" . '}';
echo 'h2 { color:#fff; }';
}
elseif ($colourScheme == "light") {
echo 'body {background-color:#' . "$bgColour" . '}' ;
echo 'h2 { color:#333333; }';
}
else { echo 'body {background-color: #ef3c39;}'; }
?>