用途:处理颜色相关的计算与配色问题,强调用代码算出精确色值,而不是凭肉眼估计十六进制颜色。
主要能力:
- 颜色空间转换:HEX ↔ RGB ↔ HSL,基于 Python 标准库 colorsys 实现。
- 明暗调整:通过修改 HSL 的亮度分量来变亮或变暗,例如 adjust('#3b82f6', +0.15) 得到更亮的颜色,-0.15 得到更暗的颜色。
- 对比度检查:按 WCAG 计算两色对比度,用于无障碍校验。
- 配色指导:互补色为色相 +180°,类似色为 ±30°,三角配色为 ±120°。
使用方式:以 Python 脚本片段运行。转换示例: import colorsys def hex_to_rgb(h): h=h.lstrip('#'); return tuple(int(h[i:i+2],16) for i in (0,2,4)) def rgb_to_hex(r,g,b): return '#%02x%02x%02x'%(r,g,b) r,g,b = hex_to_rgb('#3b82f6') h,l,s = colorsys.rgb_to_hls(r/255,g/255,b/255) print('rgb', (r,g,b)) print('hsl', (round(h360), round(s100), round(l*100))) print('hex', rgb_to_hex(r,g,b))
对比度示例: def lin(c): c/=255; return c/12.92 if c<=0.03928 else ((c+0.055)/1.055)**2.4 def lum(h): h=h.lstrip('#'); r,g,b=(int(h[i:i+2],16) for i in (0,2,4)); return 0.2126lin(r)+0.7152lin(g)+0.0722*lin(b) def ratio(a,b): L1,L2=sorted([lum(a),lum(b)],reverse=True); return (L1+0.05)/(L2+0.05) r=ratio('#ffffff','#3b82f6'); print(f'contrast {r:.2f}:1', '(AA body needs >=4.5)')
适用场景:前端与设计中的配色选取、主题色明暗变体生成、可访问性对比度校验。
限制与建议:正文文字对比度建议 ≥ 4.5:1(AA),大号文字 ≥ 3:1;回答中应始终以十六进制给出颜色,便于直接复制使用。资料未提供其他平台支持、收费或安装方式。