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

それが単なる文字列の場合は、連結するだけ'%'なので、何が問題なのかよくわかりません:

...
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 に答える