Анимация jQuery работает только с одним элементом

#javascript #jquery #css #animation

#javascript #jquery #css #Анимация

Вопрос:

  • Мне нужно, чтобы он работал для всех моих элементов, под которыми ничего не должно исчезать (изображения).
  • В настоящее время работает только для div.logo тега

Я предполагаю, что на данный момент причина, по которой мой <h1> элемент теперь разрешает анимацию внизу, заключается в том, что когда я получаю .top() , .left() и так далее, вы делаете это для последнего элемента в списке.

Мне нужно получить границы каждого элемента в результирующем списке.

Любая помощь будет высоко оценена

Демонстрация: http://jsfiddle.net/z9b8S /

JS:

 function displayThese(selectorString) {
    var $heading = $(selectorString);
    var h1top = $heading.position().top;
    var h1bottom = h1top   $heading.height();
    var h1left = $heading.position().left;
    var h1right = h1top   $heading.width();

    var divs = $('li').filter(function () {
        var $e = $(this);
        var top = $e.position().top;
        var bottom = top   $e.height();
        var left = $e.position().left;
        var right = left   $e.width();

        return top > h1bottom || bottom < h1top || left > h1right || right < h1left;
    });
    return divs;
}

(function fadeInDiv() {
    var divsToChange = displayThese('h1, div.logo');
    var elem = divsToChange.eq(Math.floor(Math.random() * divsToChange.length));
    if (!elem.is(':visible')) {
        elem.prev().remove();
        elem.animate({
            opacity: 1
        }, Math.floor(Math.random() * 1000), fadeInDiv);
    } else {

        elem.animate({
            opacity: (Math.random() * 1)
        }, Math.floor(Math.random() * 1000), function () {
            window.setTimeout(fadeInDiv);
        });
    }

})();

$(window).resize(function () {
    // Get items that do not change    
    var divs = $('li').not(displayThese());
    divs.css({
        opacity: 0.3
    });
});
 

Комментарии:

1. вы хотите быть динамичным (без анимации) для элементов первой строки, независимо от того, сколько там изображений?

2. Кроме того, в функции window.resize вы не передаете аргументы displayThese() функции.

3. @Ani ты здесь? Я не уверен, что понимаю.

4. @Ani Я хочу иметь возможность на h1 и на логотипе останавливать анимацию позади.

5. @Ani но на данный момент работает только с одним! или h1 или логотип. Я предполагаю, что мне нужна каждая функция где-то, но не уверен.