chinabug:WEB-互补色与对比色的计算与获取 (实用、赞) 2024-05-04 07:01:29 0 0 原文出处:http://blog.ipodmp.com/2014/03/web-and-calculation-of-complementary-and-contrasting-colors-to-obtain.html WEB-互补色与对比色的计算与获取 2014/03/18 ChinaBUG%1 $ S 今天在做界面设计是需要互补色凸显一下效果,发现手上没有工具啦,好吧,找一下计算方式吧,起码没有应手的工具之前,可以先应付一下。 互补色 摘自:互补色简单计算法 这个是色相色谱,位于180度夹角的颜色就是互补色 要计算某种颜色的互补色,首先取得这个颜色的RGB数值,再用255分别减去你现有的RGB值即可。 比如纯黄色:r255 g255 b0 那么通过计算 r(255-255) g(255-255) b(255-0) 互补色为:r0 g0 b255 就是纯蓝色 注: 只有在8位通道模式下使用255(2的8次方) 若是16位通道下则要用65535(2的16次方)来减 Photoshop默认使用8位通道模式 该模式可以显示1677万色(256 x 256 x 256) 已经超出人眼所能分辨的色彩总数了(故又称真彩色) 因此更高的通道级别就肉眼看来没有区别。 如何计算颜色对比色 网页元素的颜色对比度依赖于颜色的明亮度和色调。如果两种颜色的亮度和色调差异超过一定阈值, 那么它们之间就能形成强对比。如果这两个度量值中有一个或两个指标均下于阈值,那么W3C建议使用 别的颜色。如果你知道两个颜色的RGB值,那么你可以计算这两个颜色的对比度。让网页中的背景和文字 具有强对比,往往能改进用户体验。 计算颜色亮度差异步骤令R1, G1, B1代表文本颜色的红色,绿色和蓝色。令R2, G2, B2代表背景颜色计算(299*R1 + 587*G1 + 114*B1)/1000. 这是文本颜色的亮度,假设你使用 暗绿色,R1=20, G1=100和B1=20,那么文本颜色的亮度是66.96,因为(299*20 + 587*100 + 114*20)/1000 = 66.96计算 (299*R2 + 587*G2 + 114*B2)/1000。这是背景色的亮度。例如,你使用浅粉色 R2=255, G2=220和B2=240,那么背景色的亮度是232.75,因为(299*255 + 587*220 + 114*240)/1000 = 232.75.计算亮度值的差异。如果亮度值差异小于125,那么需要调整其中一个或者两个来增加亮度差异。例如 232.75-66.96=165.79,因此我们不需要改变这两个颜色 计算色调差异计算两个颜色红色值的差异。还是上面的例子,我们计算可得红色值差异为255-20=235重复前面一个步骤,绿色和蓝色。还是上面的例子, 绿色差异值为120(因为220-100=120), 蓝色差异值为220(因为240-20=220)把上述三个分量的差异值相加得到的是色调差异。如果色调差异小于500,那么你需要调整颜色。 例如,因为235+120+220=575,所以你不需要改变颜色。 附录: 怎么用Javascript获取对比色,互补色? [code lang=”javascript”] <script type="text/javascript" language="javascript">// <![CDATA[ var asHex=new Array(16); asHex[0]="0"; asHex[1]="1"; asHex[2]="2"; asHex[3]="3"; asHex[4]="4"; asHex[5]="5"; asHex[6]="6"; asHex[7]="7"; asHex[8]="8"; asHex[9]="9"; asHex[10]="a"; asHex[11]="b"; asHex[12]="c"; asHex[13]="d"; asHex[14]="e"; asHex[15]="f"; function lightColor(sColor, iStep) // eg. sColor="#23a3df", iStep=-4 { var sRslt="#"; var iTemp; for(var i=1; i<7; i++) { iTemp=parseInt("0x"+sColor.substr(i,1))+iStep; if(iTemp>15) iTemp=15; if(iTemp<0) iTemp=0; sRslt+=asHex[iTemp]; } return sRslt; } // ]]></script></pre> <div id="mybutton" style="text-align: center; padding-top: 2px; color: white; height: 20px; width: 100px; font-size: 9pt; cursor: default;">Button</div> <div id="mybutton1" style="text-align: center; padding-top: 2px; color: white; height: 20px; width: 100px; font-size: 9pt; cursor: default;">Button</div> <pre> <script type="text/javascript" language="javascript">// <![CDATA[ Chang("#6699CC"); function Chang(color) { var lcolor = lightColor(color,4); var dcolor = lightColor(color,-4); var bcolor = lightColor(color,-2); mybutton.style.backgroundColor = color; mybutton.style.borderLeft = "1px solid " + lcolor; mybutton.style.borderTop = "1px solid " + lcolor; mybutton.style.borderRight = "1px solid " + dcolor; mybutton.style.borderBottom = "1px solid " + dcolor; mybutton1.style.backgroundColor = bcolor; mybutton1.style.borderLeft = "1px solid " + dcolor; mybutton1.style.borderTop = "1px solid " + dcolor; mybutton1.style.borderRight = "1px solid " + lcolor; mybutton1.style.borderBottom = "1px solid " + lcolor; } // ]]></script> [/code] 收藏(0)