2011-01-18 13 views
10

Así que estoy configurando un menú que tiene diferentes antecedentes: los colores de desplazamiento. Los fondos de los botones serán de color gris y al pasar el botón animate() a su color respectivo.Obtenga el valor de css de: hover con .css() - jquery

puedo agarrar el color original por defecto de cualquier botón que se ciernen sobre este aspecto:

var origBackgroundColor = $(this).css('background-color'); 

Pero es posible para obtener el color de un css: hover propiedad que puse? Dispondré de: los colores de desplazamiento establecidos para cada botón, porque si alguien no tiene habilitado JS, la navegación seguirá teniendo: los efectos de desplazamiento funcionan.

Algo como esto (O hay otra manera):

var hoverColor = $(this).css('background-color:hover'); 

¿Alguna idea? ¿es posible?

Respuesta

6

Estoy bastante seguro de que para obtener el background-color del :hover pseudo, primero se requerirá un evento del navegador para aplicar el estilo. En otras palabras, creo que podrías obtenerlo cuando pasas el mouse sobre el mouse, pero no hasta entonces.

Podría ser que podría esperar hasta que el usuario pase el mouse, luego tomar el color, anularlo por defecto, guardarlo para referencia futura, luego hacer su animación, pero eso puede ser más problemático que simplemente coordinar su JS y CSS.

Algo como esto: http://jsfiddle.net/UXzx2/

// grab the default color, and create a variable to store the hovered. 
var originalColor = $('div').css('background-color'); 
var hoverColor; 

$('div').hover(function() { 
     // On hover, if hoverColor hasn't yet been set, grab the color 
     // and override the pseudo color with the originalColor 
    if(!hoverColor) { 
     hoverColor = $(this).css('background-color'); 
     $(this).css('background-color',originalColor); 
    } 
     // Then do your animation 
    $(this).animate({backgroundColor:hoverColor}); 
}); 
+1

actualizados con una función unhover para completar el efecto http: // jsFiddle .net/UXzx2/1/ – generalhenry

+0

Gracias @generalhenry. Yo era demasiado flojo. ; o) – user113716

+0

eso es realmente muy inteligente porque desencadena el vuelo estacionario sin hacer otra cosa que almacenar el valor y luego lo animas:] ¡bien! gracias también. –

0
  // How about writing anonymous function using JQuery, 
      // that encapsulate the originalColor: 
      $(function() { 
       var originalColor = $('div').css('background-color'); 
       $('div').hover(
        function() { 
         $(this).css('background-color','cyan'); 
        }, 
        function() {        
         $(this).css('background-color', originalColor); 
        } 
       ); 
      });    
0

jQuery trabaja con casi todos selector CSS, Así que en este caso también esto debería funcionar bien. Pruebe el código a continuación.

$("li").hover(function(){ 
 
    var color = $(this).find(".link").css("color"); 
 
    console.log(color); 
 
});
a{ 
 
    color: white; 
 
    background-color: rgb(0, 0, 0); 
 
    font-weight: bold; 
 
    padding: 10px 20px; 
 
} 
 

 
a:hover{ 
 
    color: rgb(255, 165, 0); 
 
} 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<nav> 
 
    <li><a href="#" class="link">Sample Link</a></li> 
 
</nav>

$ ("targetClassName:. Flotar "). Css (" background-color"); `