Ben

2013-03-19 15 views
5

İşte benim kodudur fare konumuna göre arka plan rengini değiştirmek istiyorum: mousemove o taşınır her zaman yenilemez görünüyor hariç eserlerinBen

$(document).mousemove(function(e){ 
    var $width = ($(document).width())/255; 
    var $height = ($(document).height())/255; 
    var $pageX = e.pageX/$width; 
    var $pageY = e.pageY/$height; 
    $("body").css("background-color", "rgb("+$pageX+","+$pageY+","+$pageX+")"); 
}); 

Bu tür. Öyle gözüküyor, eksik olduğum bir ayar var mı? Sayfa x ve sayfa y, göreceli olarak 255 olan belgelerle çarpılır, böylece tüm spektrum kullanılır. Teşekkürler.

cevap

8

Muhtemelen kesirleri geri aldığınız için.

Dene:

var $pageX = parseInt(e.pageX/$width,10); 
var $pageY = parseInt(e.pageY/$height,10); 

jsFiddle example

+4

fareyi hareket Cant'durmak - onun çok renkli. :) – insertusernamehere

+1

bu aslında çok daha kolaydı ve diğer cevaplardan çok daha iyi çalıştı. teşekkürler – mpn

1

Kodunuz o kadar çalışabilmesi için minimuma o olay geri çağırma herhangi bir kod tutmak için elinden geleni Böylece her fare, ufak miktarda hareket çalıştırır gecikme önlemek için mümkün olduğunca hızlı. Bu nedenle, tek bir şey üzerinde sadece bir şeyleri hesaplamak daha iyidir. Yani böyle bir şey biraz daha iyi olurdu: Kod farklı ekran boyutlarına cevap istiyorsanız

var w = Math.round($(document).width()/255); 
var h = Math.round($(document).height()/255); 
var body = $("body"); 

$(document).mousemove(function(e){ 
    var pageX = Math.round(e.pageX/w); 
    var pageY = Math.round(e.pageY/h); 
    body.css("background-color", "rgb("+pageX+","+pageY+","+pageX+")"); 
}); 

o zaman basitçe ne zaman w ve h değişkenleri sıfırlamak istiyorum belgeye 'resize' etkinlik ekleyebilirsiniz gerekli.

bir yan noktası olarak da jquery olmadan doğal arka plan rengini atamak için daha hızlı olabilir:

body.style.backgroundColor = "rgb("+pageX+","+pageY+","+pageX+")"; 
+0

Bu mükemmel çalıştı, yardım için teşekkürler, o hala biraz yavaş, bu çok daha iyi. – mpn