2012-03-07 10 views
6

Nunca antes había visto un efecto de desplazamiento como este, y estoy tratando de entender cómo se logra. Se dará cuenta de in this example, que cuando un usuario se desplaza sobre un enlace, el color de los enlaces vueltas puede ser cualquier 1 de 5 colores que se asignan dentro de la hoja de estilo (ver más abajo) al azar. ¿Cómo se crea este efecto de desplazamiento? ¿Se puede hacer simplemente con CSS?Cómo asignar aleatoriamente un color al efecto de desplazamiento

a:hover { 
    color:#1ace84; 
    text-decoration: none; 
    padding-bottom: 2px; 
    border: 0; 
    background-image: none; 
    } 

a.green:hover { color: #1ace84; } 
a.purple:hover { color: #a262c0; } 
a.teal:hover { color: #4ac0aa; } 
a.violet:hover { color: #8c78ba; } 
a.pink:hover { color: #d529cd; } 

Respuesta

4

La pieza clave del código de jQuery se carga en el pie de la página.

Preste atención al comentario de los autores sobre el guión, o busque el author's permission para volver a utilizarlo.

/* 

    Code below this point is not licensed for reuse, 
    please look and learn but don't steal 

*/ 
var lastUsed; 
function randomFrom(arr){ 
    var randomIndex = Math.floor(Math.random() * arr.length); 
    lastUsed = arr[randomIndex]; 
    return lastUsed; 
} 
color_classes = ['green','purple','violet','teal','pink']; 
function initLinks() { 
    $('#wrap a').hover(function() { 
    new_classes = color_classes.slice(); 

    var index = $.inArray(lastUsed, new_classes); 
    new_classes.splice(index, 1); 

    var classes = $(this).attr('class'); 
    if (classes) { 
     classes.split(' '); 
     $(classes).each(function(i, className) { 
      var index = $.inArray(className, new_classes); 
      if (index>0) { 
       new_classes.splice(index, 1); 
      } 

     }); 
    } 
    $(this).removeClass(color_classes.join(' ')).addClass(randomFrom(new_classes)); 
    }, function() { 
    }); 
} 
+0

Teniendo en cuenta los comentarios codificadores no creo que debería haber publicado su código. Aunque CSS y jQuery son del lado del cliente y están disponibles para todos, siguen siendo su código y dedicaron tiempo a escribirlo para este sitio de chicos. Fue honesto al comentar el código donde hizo cambios y comenta su propio código. Publiqué ejemplos a continuación que hacen lo mismo y no han sido robados. – Anagio

+2

@Anagio El código está en la web abierta y el autor lo invita a aprender pero no a robar. Entonces, realmente no creo que haya un problema al publicarlo. Tampoco es tan único como su propia respuesta señala. – toomanyairmiles

+0

mi punto fue que el codificador se tomó el tiempo para comentar el código que cambió y que no era suyo y le pidió a nadie que robe su código personalizado. Sí, está en la web abierta, pero también lo son las fotos que los fotógrafos tienen derechos de autor, solo porque podamos descargarlas no significa que debamos tomarlas. Existen aplicaciones de código abierto para las que necesita licencias y, si las encuentra sin licencia, puede presentarlas en sitios que no sean DMCA, aunque el código sea 100% de código abierto. Si la pregunta fue hecha en StackOverflow estoy seguro de que algunas personas habrían respondido con código de ejemplo en jsfiddle – Anagio

9

Dado que se introduce un factor aleatorio, no creo que hay una manera de hacerlo exclusivamente con CSS.

Aquí está mi enfoque simple al problema, usando jQuery.

se puede ver un ejemplo de trabajo aquí: http://jsfiddle.net/GNgjZ/1/

$(document).ready(function() 
{ 
    $("a").hover(function(e) 
    { 
     var randomClass = getRandomClass(); 
     $(e.target).attr("class", randomClass); 
    }); 
}); 

function getRandomClass() 
{ 
    //Store available css classes 
    var classes = new Array("green", "purple", "teal", "violet", "pink"); 

    //Get a random number from 0 to 4 
    var randomNumber = Math.floor(Math.random()*5); 

    return classes[randomNumber]; 
} 
+0

Necesito cambiar el hover bg de un div con la clase "artículo-contenedor". Cambiar "a" a "contenedor de artículos" no parece funcionar. ¿Estoy haciendo algo mal? – Arete

+0

@Arete, ya que estás trabajando con una clase, necesitas usar el selector '.article-container' (fíjate en el punto). También tenga en cuenta que este ejemplo cambia completamente el atributo 'clase', en su caso usando' addClass() 'y' removeClass() 'podría ser mejor. –

Cuestiones relacionadas