2012-09-30 157 views
1

我在这里创办了这一段代码堆栈:JAVASCRIPT亮度功能 - 降低

function increase_brightness(hex, percent){ 
    var r = parseInt(hex.substr(1, 2), 16), 
     g = parseInt(hex.substr(3, 2), 16), 
     b = parseInt(hex.substr(5, 2), 16); 

    return '#' + 
     ((0|(1<<8) + r + (256 - r) * percent/100).toString(16)).substr(1) + 
     ((0|(1<<8) + g + (256 - g) * percent/100).toString(16)).substr(1) + 
     ((0|(1<<8) + b + (256 - b) * percent/100).toString(16)).substr(1); 
} 

没有人知道如何使完全相同逆?

功能decreas_brightness(){}我的意思是

+0

你试过吗? – azendh

+0

试过它不起作用 – sbaaaang

+1

该函数不适用于所有情况。 'increase_brightness('#777777',100)':输出是#000000 – azendh

回答

1

你的代码是从JavaScript Calculate brighter colour。根据评论,下面的改变应该会使亮度下降:

function decrease_brightness(hex, percent){ 
    var r = parseInt(hex.substr(1, 2), 16), 
     g = parseInt(hex.substr(3, 2), 16), 
     b = parseInt(hex.substr(5, 2), 16); 

    return '#' + 
     ((0|(1<<8) + r * (100 - percent)/100).toString(16)).substr(1) + 
     ((0|(1<<8) + g * (100 - percent)/100).toString(16)).substr(1) + 
     ((0|(1<<8) + b * (100 - percent)/100).toString(16)).substr(1); 
} 
+0

你的静态(1 << 8)有什么用途?为什么不输入相应的值? – CBusBus

+0

实际上,这个代码的作者在原始问题的评论中讨论了这个问题 - 请参阅他在链接中的解释以获得完整的解释,但本质上是这样的,结果将被正确格式化(例如'05'而不是' 5' ) – Kelvin