JQuery анимация

У меня небольшие проблемы с некоторыми анимациями, которые я пытаюсь настроить. У меня есть пара div, расположенных друг на друге вот так.

<div id = "div1">
   Stuff...
</div>
<div id = "div2">
   More Stuff...
</div>

К каждому из этих div применена тень с помощью плагина jQuery (jquery.dropshadow.js).

Проблема возникает, когда я расширяю один из div с помощью какой-то анимации. Тень не обновляется с размером div. Я могу перерисовать тень в обратном вызове анимации, но все равно выглядит довольно неровно.

Есть ли способ, которым я могу периодически обновлять статус моих теней в течение анимации, или кто-нибудь может порекомендовать лучшую библиотеку падающих теней, которая решит проблему? Это не обязательно должен быть плагин jQuery.

Можете ли вы также поделиться своим кодом jquery?

Till 10.10.2008 01:43
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
2 362
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Хорошо, я до сих пор не знаю, как вы анимируете, но приведу другой пример:

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

Rudi 10.10.2008 18:35

Фактически, вы можете, используя свойство text-shadow.

Brandon Wang 30.11.2009 03:37

Другие вопросы по теме