4

设计师想出了一个相当奇怪的想法或一个色轮(有 36 种颜色)。

我需要编写一个返回one颜色但基于date.

网站应该如何工作
根据当前日期(您在下图中看到德国日期),网站应该有这种背景颜色。

所以在“1 月 1 日”,第一种颜色(蓝紫色或你可能称之为的)应该是首页的背景。10天后下一个颜色。所以在一年内,所有 36 种颜色都应该按轮子的顺序循环。

我想在此之前,中级程序员可以帮助我,我不知道该怎么做。

但它变得稍微复杂
了设计师希望网站的每个页面也有不同的颜色。所以想象一下这个网站有 10 个页面(主页、关于、随便、画廊),每个页面都应该有“最接近”的 10 种颜色之一。

哇,即使我在解释它时也不明白。

所以我想做的是创建一个函数,该函数从基于当前日期的 10 种颜色池中返回随机颜色

因此,在“1 月 1 日”,我希望将以下颜色推送到数组中并随机返回其中一种颜色。

function colorWheel($alpha) { // 36 colors
    $colors = array(
        rgba(170, 207, 172, 1),
        rgba(180, 211, 164, 1),
        rgba(189, 214, 145, 1),
        rgba(196, 217, 134, 1),
        rgba(206, 222, 124, 1),
        rgba(214, 226, 124, 1),
        rgba(226, 233, 124, 1),
        rgba(234, 235, 122, 1),
        rgba(236, 235, 120, 1),
        rgba(241, 231, 118, 1),
        rgba(240, 224, 118, 1),
        rgba(240, 216, 117, 1),
        rgba(237, 208, 115, 1),
        rgba(233, 199, 112, 1),
        rgba(230, 191, 110, 1),
        rgba(226, 177, 115, 1),
        rgba(221, 162, 110, 1),
        rgba(218, 153, 116, 1),
        rgba(215, 141, 112, 1),
        rgba(209, 140, 120, 1),
        rgba(203, 138, 119, 1),
        rgba(197, 136, 126, 1),
        rgba(191, 138, 134, 1),
        rgba(186, 142, 144, 1),
        rgba(181, 145, 157, 1),
        rgba(176, 151, 170, 1),
        rgba(170, 135, 178, 1),
        rgba(164, 159, 189, 1),
        rgba(166, 167, 194, 1),
        rgba(166, 177, 201, 1),
        rgba(166, 182, 204, 1),
        rgba(163, 186, 201, 1),
        rgba(164, 190, 196, 1),
        rgba(166, 196, 191, 1),
        rgba(167, 198, 185, 1),
        rgba(168, 201, 178, 1),
    );
}

知道怎么做吗?

4

3 回答 3

3

每个闰年都会有一天的轮班,但这应该可以满足您的需求。

function colorWheel($alpha, $shift = 0) { // 36 colors
    $time = time();
    $yearDay = $time % (60 * 60 * 24 * 365);
    $idx = $yearDay / 60 / 60 / 24 / 10;
    $colors = array(
        rgba(170, 207, 172, $alpha),
        …
        rgba(168, 201, 178, $alpha),
    );
    return $colors[($idx + $shift) % count($colors)];
}

我对 Wordpress 了解不多,但要获得每页一种颜色的功能,您应该采取以下技巧:

$page_shift = array(
    '/about.html' => 1,
    '/whatever.html' => 2,
    '/gallery.html' => 3,
    …
);
$shift = $page_shift[$_SERVER['REQUEST_URI']];
$color = colorWheel(1, $shift);
于 2013-01-09T09:39:02.140 回答
1

好吧,这就是我想出的:

function colorWheel($time, $page) {
    // All possible RGB color values
    $colors = array(
        array(170, 207, 172, 1),
        // ...
    );

    $index = ($time % (60 * 60 * 24 * 365) / 60 / 60 / 24 / 10);

    return 'background-color: rgba(' . ($colors[($index) % count($colors)-1][0]) .
           ', ' . ($colors[($index) % count($colors)-1][1]) . ', ' . ($colors[($index) % count($colors)-1][2]) . ', ' .
           ($colors[($index) % count($colors)-1][3]) . ');';
}

// Usage: 
echo "<body style='" . colorWheel(time(), 'home') . "'>";

虽然我还没有实现每页不同颜色的功能,但告诉我,是否可以使用会话、文本文件或数据库来存储哪个页面具有哪种颜色?

于 2013-01-09T09:50:08.053 回答
1

尝试这个:

<?php

// $colors contains what the designers you gave ...
$colors = array (
    array (0x0, 0x0, 0x0),
    // ...
    array (0xFF, 0xFF, 0xFF),
);  

$number_of_colors = count($colors); // 36 in your example
$number_of_days_per_year = 365; // for brevity of the example

$day = intval(date('z'));

// some 'lower school math' magic :)
$index = round($day * $number_of_colors / $number_of_days_per_year);

// the color of the day is ..... 
$color = $colors[$index];
于 2013-01-09T09:31:18.603 回答