我有一个颜色选择器,返回的色调值是0到1之间的数字。 要在色调上创建变体,我添加.2表示20%,。8表示80%等。
如何保持数字围绕圆圈,以便当数字超过1时,它会减去1.如何将此数字设为此数字: 1.73540012511 ---> 0.7354
我尝试使用"美分" javascript,(http://www.irt.org/script/6.htm)但是返回的值大于1: http://jsfiddle.net/Se9Dn/
我不能使用Math.min,因为我希望1.2成为.2(当它们达到1时,颜色都不会变成红色)。
感谢。 :)
修改 确认解决方案,添加了舍入。假设您有从Farbtastic返回的HSL颜色(色调,饱和度,亮度)并想要以数学方式调整Hue:
hslcolor = (.73802938, .59832908, .948987);
colorStep = .2;
newcolor[0] = Math.round ( ((1*colorStep +hslcolor[0])%1)*10000 ) /10000;
注意那些括号在那里非常棘手。
答案 0 :(得分:5)
您可以使用模运算符%
(MDN docu)。
添加,例如0.8
:
result = (result + 0.8) % 1;
修改强>
JavaScript的模运算符实际上更像是一个余数运算符。
引用ECMAScript spec Section 5.2:
符号“x modulo y”(y必须是有限且非零)计算与y(或零)相同符号的值k,使得abs(k)<1。对于某个整数q,abs(y)和x-k = q×y。
答案 1 :(得分:1)
你只需减去整数:
function cent(amount) { return (+amount) - Math.floor(+amount); }
如果数字可以为负数,那么它取决于您想要的语义。我将把它留作练习: - )