如何產生給定十六進位代碼的相反顏色?
從給定顏色產生相反顏色
從給定顏色確定相反顏色是網頁和圖形設計中的常見要求。當文字顏色是動態的並且需要調整背景顏色以提高可讀性時,這一點變得至關重要。我們的目標是創建一個函數,獲取當前顏色並產生其相反顏色,從而產生提供高對比度和清晰文字可見性的顏色。
產生相反顏色的演算法
為了實現我們的目標,我們提出以下演算法:
- 轉換當前顏色從十六進位格式轉換為RGB 格式。 這涉及從十六進位代碼中提取紅色、綠色和藍色值。
- 反轉每個 R、G 和 B 分量。 這表示計算(255 - 分量)。
- 將反轉分量轉換回十六進位格式。
- 用零填充每個十六進位組件以確保其長度為兩個字元。
- 將反轉的顏色作為十六進位程式碼輸出.
實作JavaScript 中的演算法
下面是概述演算法的JavaScript實現:
function invertColor(hex) { if (hex.indexOf('#') === 0) { hex = hex.slice(1); } if (hex.length === 3) { hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]; } if (hex.length !== 6) { throw new Error('Invalid HEX color.'); } var r = (255 - parseInt(hex.slice(0, 2), 16)).toString(16), g = (255 - parseInt(hex.slice(2, 4), 16)).toString(16), b = (255 - parseInt(hex.slice(4, 6), 16)).toString(16); return '#' + padZero(r) + padZero(g) + padZero(b); } function padZero(str, len) { len = len || 2; var zeros = new Array(len).join('0'); return (zeros + str).slice(-len); }
此函數接受十六進位顏色代碼並傳回其相反的顏色。例如,如果我們提供顏色“#F0F0F0”,我們將得到“#0F0F0F”作為相反顏色。
進階選項:考慮亮度
在某些情況下在某些情況下,在產生相反顏色時可能需要考慮顏色的亮度。這是包含bw 參數的函數的修改版本:
function invertColor(hex, bw) { if (hex.indexOf('#') === 0) { hex = hex.slice(1); } if (hex.length === 3) { hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]; } if (hex.length !== 6) { throw new Error('Invalid HEX color.'); } var r = parseInt(hex.slice(0, 2), 16), g = parseInt(hex.slice(2, 4), 16), b = parseInt(hex.slice(4, 6), 16); if (bw) { return (r * 0.299 + g * 0.587 + b * 0.114) > 186 ? '#000000' : '#FFFFFF'; } r = (255 - r).toString(16); g = (255 - g).toString(16); b = (255 - b).toString(16); return '#' + padZero(r) + padZero(g) + padZero(b); }
如果bw 參數設定為true,則如果給定顏色為淺色(#000000),則函數將傳回黑色,如果給定顏色為淺色,則函數將傳回白色。很黑(#FFFFFF)。否則,它將產生與之前相反的顏色。
以上是如何產生給定十六進位代碼的相反顏色?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

您是否曾經在項目上需要一個倒計時計時器?對於這樣的東西,可以自然訪問插件,但實際上更多

在元素個數不固定的情況下如何通過CSS選擇第一個指定類名的子元素在處理HTML結構時,常常會遇到元素個數不�...

關於Flex佈局中紫色斜線區域的疑問在使用Flex佈局時,你可能會遇到一些令人困惑的現象,比如在開發者工具(d...

格子呢是一塊圖案布,通常與蘇格蘭有關,尤其是他們時尚的蘇格蘭語。在Tartanify.com上,我們收集了5,000多個格子呢
