У меня небольшие проблемы с некоторыми анимациями, которые я пытаюсь настроить. У меня есть пара div, расположенных друг на друге вот так.
<div id = "div1">
Stuff...
</div>
<div id = "div2">
More Stuff...
</div>
К каждому из этих div применена тень с помощью плагина jQuery (jquery.dropshadow.js).
Проблема возникает, когда я расширяю один из div с помощью какой-то анимации. Тень не обновляется с размером div. Я могу перерисовать тень в обратном вызове анимации, но все равно выглядит довольно неровно.
Есть ли способ, которым я могу периодически обновлять статус моих теней в течение анимации, или кто-нибудь может порекомендовать лучшую библиотеку падающих теней, которая решит проблему? Это не обязательно должен быть плагин jQuery.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Хорошо, я до сих пор не знаю, как вы анимируете, но приведу другой пример:
$('#foo').slideToggle().ready(function(){
$('#foo').dropShadow(options);
});
Итак, вместо slideToggle используйте любую анимацию штуковина, которая у вас есть.
Надеюсь, это поможет.
Попробуйте применить те же эффекты анимации к теневым элементам. Я не знаю точной техники, используемой в jquery.dropshadow.js, но подозреваю, что он создает копии ваших элементов отбрасывания теней и стилизует их для достижения подобного тени внешнего вида. Возможно, что эти копии являются братьями и сестрами своих исходных элементов, поэтому не «следуют» за анимацией (как дочерние элементы).
Я думаю, что единственный способ сделать это (по крайней мере, с этим конкретным плагином отбрасывания тени) будет нацеливаться на оба элемента, которые вы хотите и, на все «фантомные» элементы тени в вашей анимации. Так, например:
<style type = "text/css">
#div1 { width: 50px; }
</style>
<div id = "div1">
<p>Here is a lot of stuff. Stuff stuff stuff.</p>
</div>
<script type = "text/javascript">
$(document).ready(function() {
$("#div1").dropShadow();
$("#div1").click(function() {
$("#div1, #div1 + .dropShadow .dropShadow").animate({ width: "400px" }, 1500);
});
});
</script>
Это основано на структуре визуализированного кода, который создает плагин drop-shadow ... все нечеткие копии вашего исходного элемента получают класс .dropShadow и группируются в элемент контейнера, который также имеет класс .dropShadow и застревает в документ сразу после исходного элемента (таким образом, селектор +).
Пока вы применяете любую анимацию, которую делаете ко всем этим теневым элементам, все они становятся анимированными (однако является немного дергается из-за всей этой обработки ... мда).
Я бы предложил использовать CSS для ваших теней и не JS.
Я уже имел дело с этой проблемой в прошлом и полностью перестал использовать JS для создания теней. Я никогда не видел, чтобы анимация с тенями JS выглядела так гладко, как чистый CSS. Кроме того, использование слишком большого количества JS для изменения элементов страницы может вызвать проблемы с производительностью.
Я был бы согласен с вами в отношении падающей тени вокруг границы элемента, но плагин jQuery, о котором спрашивал исходный плакат, фактически добавляет падающую тень ко всему тексту внутри элемента (путем создания нескольких более светлых, расположенных дубликатов). Вы не можете сделать что-то подобное с помощью CSS.
Фактически, вы можете, используя свойство text-shadow.
Можете ли вы также поделиться своим кодом jquery?