Опитвам се да създам някакъв код, който генерира произволен цвят на фона при зареждане на страницата, но също така извежда текст с цвят, зависим от цвета на фона. Например, ако цветът на фона е тъмен, той ще покаже светъл текст.
Досега съм създал следното, което работи - въпреки че не съм сигурен дали това е най-добрият начин да го постигна.
Създадох масив, който решава на случаен принцип дали цветът на фона трябва да е светъл или тъмен, и направих това, за да мога да имам два алтернативни цвята на шрифта въз основа на схемата $. Сигурен съм, че ще има много по-динамичен начин да направите това?
След това зададох още два масива, изброяващи множество цветове както за тъмните, така и за светлите схеми, с оператор 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;}'; }
?>
// Вероятно трябваше да отбележим, че ще бъде предварително дефиниран списък с цветове