問題:
在jQuery 中,css () 方法取得元素的背景顏色為格式中的紅色、綠色和藍色(RGB)值rgb(r,g,b)。然而,一個常見的要求是檢索等效的十六進位顏色值,例如#FFFFFF。
解決方案:
從 RGB 取得十六進位值的傳統方法包括手動轉換,這可能很乏味。幸運的是,一個簡潔的單行函數可以實現這一點:
const rgba2hex = (rgba) => `#${rgba.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+\.{0,1}\d*))?\)$/).slice(1).map((n, i) => (i === 3 ? Math.round(parseFloat(n) * 255) : parseFloat(n)).toString(16).padStart(2, '0').replace('NaN', '')).join('')}`
此函數同時處理 RGB 和 RGBA 格式,確保多功能性。
範例用法:
const element = $('#selector'); const rgbColor = element.css('backgroundColor'); const hexColor = rgba2hex(rgbColor);
更新了現代的答案瀏覽器:
自原始解決方案以來,瀏覽器對ECMAScript 2015 功能的支援已顯著改進。這允許更簡化和簡潔的 RGB 到十六進位轉換:
const rgb2hex = (rgb) => `#${rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/).slice(1).map(n => parseInt(n, 10).toString(16).padStart(2, '0')).join('')}`
此函數提供類似的功能,專門針對 RGB 顏色格式。
以上是如何在 jQuery 中將 RGB 顏色值轉換為十六進位顏色值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!