UI 設計中常需計算顏色的反色(如白轉黑、藍轉黃),以確保文字在不同背景下可讀。本文提供 color_inverse() 函式,接受十六進位色碼(含 #),回傳對應的反色色碼。
function color_inverse($color) {
$color = str_replace('#', '', $color);
if (strlen($color) != 6) {
return '000000'; // 格式錯誤預設黑
}
$rgb = '';
for ($x = 0; $x < 3; $x++) {
$c = 255 - hexdec(substr($color, 2 * $x, 2)); // 255 - 原色值
$c = ($c < 0) ? 0 : dechex($c);
$rgb .= (strlen($c) < 2) ? '0' . $c : $c; // 補齊兩位
}
return '#' . $rgb;
}
// 黑 → 白
echo color_inverse('#000000'); // #ffffff
// 藍 → 黃
echo color_inverse('#0000FF'); // #FFFF00
// 紅 → 青
echo color_inverse('#FF0000'); // #00FFFF
// 灰階中間值 #808080 → 本身
echo color_inverse('#808080'); // #7F7F7F (因 255-128=127)
#RRGGBB,各通道範圍 00–FF(0–255)。新值 = 255 - 原值,對 R、G、B 通道分別運算。只需一行呼叫,即可獲得視覺上最對比的顏色,提升介面可讀性。