2013-05-28 4 views
7

я не могу показаться, чтобы получить эту JQuery анимации работает для применения границы к изображению на mouseenter:JQuery Animate - цвет границы и ширина

<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); 
}); 

Я также попытался удалить часть CSS для jQuery, но не работает ни

+2

вы просто имея пару опечаток там. См. Исправленную скрипту: http://jsfiddle.net/h6jg4/ –

+0

Просто интересно, разве у вас нет консоли в вашем браузере? –

ответ

20

$.animate() работает только на свойства CSS, которые имеют одиночные числовые значения. Таким образом, вам нужно указать ширину границы, так как свойство border-color игнорируется $.animate().

Кроме этого события mouseenter, а не mousenter.

Вот фиксированный код:

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

Demo

+0

спасибо. Ваш ответ очень полный. – DextrousDave

+0

нет способа сделать анимацию гладкой, чтобы изображение не двигалось при применении границы. Возможно, я сделаю это, просто изменив цвет границы с белого (фона) на оранжевый, но вы сказали, что цвет не работает.animate() – DextrousDave

+3

@DextrousDave, если вы также используете пользовательский интерфейс jQuery, вы также можете анимировать свойство фона, переходя от белого фона 4px к оранжевому фону 4px. –

4

jQuery не может анимировать цвет, но сам по себе, вам нужно включить seperat e jQuery плагин для этого.

+0

Почему это вниз? – Alex

2

Исправлен код:

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

спасибо. Любой способ сделать переход гладким, чтобы изображение не двигалось? – DextrousDave

+0

вы можете анимировать маржу тоже, см. Обновленный ответ –

+0

@roasted, ваше решение по марке делает его меньше, не более, гладким! –

3

Изменить Jquery к этому

$('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

спасибо, это работает – DextrousDave

1

У вас есть некоторые опечатки в коде

  1. .mousenter должно быть .mouseenter

  2. не закрыл апостроф как в 'borderColor. изменить их '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); 
}); 
Смежные вопросы