Как использовать box-shadow с jQuery animate()?

У меня есть элемент li, который нужно анимировать, чтобы создать тень при наведении курсора, но я не могу получить желаемые результаты, вот мой код javascript:

$(document).ready(function () {
$('#skill_list li').hover(function () {
    $(this).animate({
        top: "-5px",
        boxShadow: "10px 10px red"
    }, 100, "linear").clearQueue();
}, function () {
    $(this).animate({
        top: "0px",
        boxShadow:"0px 0px"
    }, 100, "linear").clearQueue();
})
});

Спасибо


person Kashyap Pavra    schedule 02.05.2018    source источник
comment
Каковы ваши желаемые результаты? Что на самом деле происходит, когда вы запускаете код, который у вас есть?   -  person Ryan Wilson    schedule 02.05.2018
comment
Я знаю, что вы просили решение jQuery, но готовы ли вы принять решение только css? [Широко известно, что jQuery довольно медленный, когда речь идет о производительности анимации](css-tricks.com/myth-busting-css-animations-vs-javascript/   -  person Ghostrydr    schedule 02.05.2018
comment
@RyanWilson тень блока не анимируется, когда я проверяю элемент, я вижу изменение свойства position, но не тень блока   -  person Kashyap Pavra    schedule 02.05.2018
comment
@Ghostrydr уверен, что я тоже могу попробовать css, на самом деле я изучаю jquery, поэтому мне нужно решение в jQuery   -  person Kashyap Pavra    schedule 02.05.2018
comment
@KashyapPavra, вероятно, потому, что во втором .animate() вы не меняете свойство boxShadow, на самом деле его там вообще нет.   -  person Ryan Wilson    schedule 02.05.2018
comment
@RyanWilson даже после изменения boxShadow во 2nd animate() не показывает никакого эффекта   -  person Kashyap Pavra    schedule 02.05.2018
comment
@KashyapPavra Пожалуйста, обновите свой пост, чтобы отразить то, что вы изменили во 2-й анимации ()   -  person Ryan Wilson    schedule 02.05.2018
comment
@RyanWilson Я внес изменения в сообщение   -  person Kashyap Pavra    schedule 03.05.2018


Ответы (2)


Прямой ответ

Использование плагина jQuery Эдвина Мартина для анимации теней, который расширяет метод .animate, вы можете просто использовать обычный синтаксис с "boxShadow" и всеми его аспектами - цветом, смещением по x и y, blur-radius и spread-radius — анимируются. Он включает поддержку нескольких теней.

$(element).animate({ 
  boxShadow: "0px 0px 5px 3px hsla(100, 70%, 60%, 0.8)"
}); 

Использование CSS

.element{
  transition: all 0.8s ease-in;
  width: 50px;
  height: 50px;
  border: 1px solid black;
}
.element:hover {
  box-shadow: 0px 0px 5px 3px hsla(100, 70%, 60%, 0.8); 
}
person Gautam Naik    schedule 02.05.2018
comment
Я использовал этот метод, но он не работает в моем случае - person Kashyap Pavra; 02.05.2018
comment
Похоже на дубликат stackoverflow.com/a/9197026/5707563 - person Sam Chats; 31.12.2019

Добавьте это в свой css и добавьте куда хотите

body{
  background: #fff;
}
.box {
  transition: box-shadow .3s;
  width: 300px;
  height: 500px;
  margin: 50px;
  border-radius:10px;
  border: 1px solid #ccc;
  background: #fff;
  float: left;
  
}
.box:hover {
  box-shadow: 0 0 11px rgba(33,33,33,.2); 
}

person Alfredo Limon    schedule 02.05.2018
comment
Почему это помогает или отвечает на вопрос, который явно говорит jQuery? - person Calvin Nunes; 02.05.2018
comment
Большое спасибо, ваш метод работал безупречно, не могли бы вы рассказать мне, как это можно сделать с помощью jquery? - person Kashyap Pavra; 02.05.2018