2013-05-28 19 views
7

io non riesco a ottenere questa animazione jQuery lavorando per applicare un bordo a un'immagine su mouseenter:jQuery Animate - colore del bordo e la larghezza

<div> 
    <img src="http://25.media.tumblr.com/acc96259d6b2678985052c33e05a3062/tumblr_mkv9fhDBDS1rmc58qo1_500.jpg" /> 
</div> 

jQuery

$('div img').mousenter(function(){ 
    $(this).css({"border": "0px solid #f37736"}).animate({ 
     'borderWidth': '4px', 
     'borderColor: '#f37736' 
    },500); 
}).mouseleave(function(){ 
    $(this).animate({ 
     'borderWidth':'0px', 
     'borderColor:'#f37736' 
    },500); 
}); 

Ho anche provato a rimuovere la parte CSS per jQuery, ma non funziona

+2

sei solo avendo paio di errori di battitura lì. Vedi corretto fiddle: http://jsfiddle.net/h6jg4/ –

+0

Mi chiedo solo, non hai una console nel tuo browser? –

risposta

20

$.animate() funziona solo sulle proprietà CSS che hanno valori numerici singoli. Pertanto, è sufficiente specificare la larghezza del bordo, poiché la proprietà border-color viene ignorata da $.animate().

A parte questo, l'evento è mouseenter, non mousenter.

Ecco il codice fisso:

$('div img').mouseenter(function() { 
    $(this).css({border: '0 solid #f37736'}).animate({ 
     borderWidth: 4 
    }, 500); 
}).mouseleave(function() { 
    $(this).animate({ 
     borderWidth: 0 
    }, 500); 
}); 

Demo

+0

grazie. La tua risposta è molto completa – DextrousDave

+0

non c'è un modo per rendere l'animazione fluida, in modo che l'immagine non si muova quando viene applicato il bordo? Probabilmente posso farlo cambiando il colore del bordo da bianco (sfondo) ad arancione ma hai detto che il colore non funziona.animate() – DextrousDave

+3

@DextrousDave, se si utilizza anche l'interfaccia utente jQuery, è possibile animare anche la proprietà background-color, passando da uno sfondo bianco 4px a uno sfondo arancione 4px. –

4

jQuery non può animare il colore ma è proprio, è necessario includere un separatore e jQuery plugin per questo.

+0

perché è downvoted? – Alex

2

codice fisso:

http://jsfiddle.net/9qwmX/491/

$('div img').mouseenter(function() { 
    $(this).css({ 
     outline: "0px solid transparent" 
    }).animate({ 
     outlineWidth: '4px', 
     outlineColor: '#f37736' 
    }, 500); 
}).mouseleave(function() { 
    $(this).animate({ 
     outlineWidth: '0px', 
     outlineColor: '#037736' 
    }, 500); 
}); 
+0

grazie. Un modo per rendere la transizione omogenea in modo che l'immagine non si sposti? – DextrousDave

+0

puoi anche animare il margine, guarda la risposta aggiornata –

+0

@roasted, la tua soluzione di margine lo rende meno, non più, liscio! –

3

Cambia la tua jQuery per questo

$('div img').mouseenter(function(){ 
    $(this).css("border", "0px solid #f37736").animate({ 
     'borderWidth': '4px', 
     'borderColor': '#f37736' 
    },500); 
}).mouseleave(function(){ 
    $(this).animate({ 
     'borderWidth':'0px', 
     'borderColor':'#f37736' 
    },500); 
}); 
+0

grazie, questo funziona – DextrousDave

1

Hai alcuni errori di battitura nel codice

  1. .mousenter deve essere .mouseenter

  2. non ha chiuso l'apostrofo in entrambi 'borderColor. cambiarli a 'borderColor'

$('div img').mouseenter(function(){ 
    $(this).css("border", "0px solid #f37736").animate({ 
     'borderWidth': '4px', 
     'borderColor': '#f37736' 
    },500); 
}).mouseleave(function(){ 
    $(this).animate({ 
     'borderWidth':'0px', 
     'borderColor':'#f37736' 
    },500); 
}); 
Problemi correlati