Estoy tratando de descubrir las mejores prácticas en cuanto a rendimiento al crear múltiples DIV a una velocidad insana. Por ejemplo, en cada caso .mousemove ...Creación div múltiple, jquery/javascript, rendimiento/mejores prácticas
$('head').append("<style>.draw {width: 20px; height: 20px; position:fixed;</style>");
$(document).mousemove(function(mouseMOVE) {
//current mouse position
var mouseXcurrent = mouseMOVE.pageX;
var mouseYcurrent = mouseMOVE.pageY;
//function to create div
function mouseTRAIL(mouseX, mouseY, COLOR) {
$('body').append("<div class='draw' style='top:" + mouseY + "px; left:" + mouseX + "px; background: " + COLOR + ";'></div>");
}
// function call to create <div> at current mouse positiion
mouseTRAIL(mouseXcurrent, mouseYcurrent, '#00F');
// Remove <div>
setTimeout(function() {
$('.draw:first-child').remove();
}, 250);
});
Por lo tanto, esto funciona todo muy bien y dandy pero es ineficiente Mega (especialmente cuando intento de rellenar el espacio entre cada posición de movimiento del ratón). He aquí un ejemplo ...
$('head').append("<style>.draw {width: 20px; height: 20px; position:fixed;</style>");
$(document).mousemove(function(mouseMOVE) {
//current mouse position
var mouseXcurrent = mouseMOVE.pageX;
var mouseYcurrent = mouseMOVE.pageY;
// function to create div
function mouseTRAIL(mouseX, mouseY, COLOR) {
$('body').append("<div class='draw' style='top:" + mouseY + "px; left:" + mouseX + "px; background: " + COLOR + ";'></div>");
}
// function call to create <div> at current mouse positiion
mouseTRAIL(mouseXcurrent, mouseYcurrent, '#00F');
// variabls to calculate position between current and last mouse position
var num = ($('.draw').length) - 3;
var mouseXold = parseInt($('.draw:eq(' + num + ')').css('left'), 10);
var mouseYold = parseInt($('.draw:eq(' + num + ')').css('top'), 10);
var mouseXfill = (mouseXcurrent + mouseXold)/2;
var mouseYfill = (mouseYcurrent + mouseYold)/2;
// if first and last mouse postion exist, function call to create a div between them
if ($('.draw').length > 2) {
mouseTRAIL(mouseXfill, mouseYfill, '#F80');
}
// Remove <div>
setTimeout(function() {
$('.draw:first-child').remove();
$('.draw:nth-child(2)').remove();
}, 250);
});
que realmente no puede encontrar la manera de mejorar las cosas. Créanme, he intentado investigar pero no ha hecho mucho bien ... Lo que estoy buscando es algunas sugerencias, ejemplos o enlaces a mejores prácticas ...
Tenga en cuenta que me estoy enseñando a programar . Soy estudiante de Diseño Gráfico y así es como paso mi verano fuera de clase ... Haciendo pequeños proyectos para enseñarme JavasSript, cosas divertidas :)
He configurado algunos jsfiddles para mostrar en qué estoy trabajando. ..
Mouse Trail, More Elements - muy lento
Mouse Trail, Less Elements - Muy lento
Mouse Trail, Bare Bones - Slow
+1 para un proyecto muy interesante.deberías hacer esto un plugin jQuery! Funciona sin problemas también, Chrome 19 en Win7 – Joseph
¿Qué es muy, muy lento? Funciona bien en mi macbook – maxdec
El muy muy lento corre como un amuleto para mí. Y me encanta. – kapa