4

デザイナーはかなり奇妙なアイデアやカラーホイール(36色)を思いついた。

one色を返すが、に基づく関数を作成する必要がありdateます。

Webサイト
の動作現在の日付(下の画像にドイツ語の日付が表示されています)に基づいて、サイトはこの背景色にする必要があります。

したがって、「1月1日」では、最初の色(青紫またはあなたがそれと呼ぶかもしれないもの)がフロントページの背景になるはずです。10日後、次の色。したがって、1年以内に、36色すべてをホイールの順序でループする必要があります。

その時点まで、中級のプログラマーがこれを手伝ってくれると思いますが、その方法がわかりません。

ただし、少し複雑になり
ます。設計者は、Webサイトのすべてのページも異なる色にすることを望んでいます。したがって、サイトに10ページ(ホーム、アバウト、何でも、ギャラリー)があると想像してください。すべてのページは、「最も近い」10色のいずれかである必要があります。

うわー、それを説明するとき、私でさえそれを理解しません。

だから私がやりたいのは、現在の日付に基づいた10色のプールからランダムな色を返す関数を作成することです。

したがって、「1月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

これはうるう年ごとに1日のシフトがありますが、これはニーズに問題がないはずです。

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についてはよくわかりませんが、ページごとに1色の機能を取得するには、次のようなトリックを実行する必要があります。

$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

これを試して:

<?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 に答える
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') . "'>";

ページごとに異なる色の機能を実装していませんが、セッション、テキストファイル、またはDBを使用して、どのページのどの色を保存することはできますか?

于 2013-01-09T09:50:08.053 に答える