2

有人可以帮助一个完整的javascript菜鸟吗?我的google-fu似乎完全缺乏......

我正在尝试将其转换为...

var $win = jQuery(window),
w = 0,h = 0,
sgcolour = [],
getWidth = function() {
 w = $win.width();
 h = $win.height();
};
$win.resize(getWidth).mousemove(function(e) {
 sgcolour = [
  Math.round(e.pageX/w * 255),
  Math.round(e.pageY/h * 255),
  150,
  1
 ];
 jQuery(document.body).css('background','rgba('+sgcolour.join(',')+')');
}).resize();

在 jsfiddle 上

从 rgba 到 hsla,x 轴为色调,y 为饱和度,其他值固定。

我想我已经很明显了(改变'rgba',将值从适合rgba的那些设置为适合hsla的值),但我一生都无法弄清楚如何让它在之后输出“%”所需值...

我希望我能够为自己解决这个问题,但我不确定我是否足够了解它以谷歌搜索正确的问题:/

4

2 回答 2

1

int/int结果为int(所以 0 或 1)。

您应该在除法之前相乘:

Math.round(e.pageX * 255 / w),
Math.round(e.pageY * 255 / h),

而且您不需要Round该值,因为它是 type int

(e.pageX * 255 / w),
(e.pageY * 255 / h),
于 2012-11-30T21:20:01.657 回答
0

如果它只是一个字符串,你可以只是 concatenate '%',所以我不太确定问题是什么:

...
sgcolour = [
   Math.round(e.pageX/w * 360),
   Math.round(e.pageY/h * 100) + '%',
   '50%',
   1
];
jQuery("body").css('background','hsla('+sgcolour.join(',')+')');

请注意,这根本不是直接转换。如果您希望它这样做,那么我建议您使用您当前的rgb方法,然后将其转换为hsl之后。

于 2012-11-30T21:23:59.250 回答