2010-04-28 5 views

ответ

0

Точно названный slideDown().

+0

@Dav, эффект SlideDown НЕ выполняет ту же функцию, что и GoWalla. См. Ответ @nickf ниже о том, почему – JGreig

+0

На самом деле, может быть, если вы поймете, что вызов slidingown на * новом * элементе над существующими будет толкать существующие. Если вы хотите в буквальном смысле, точно воспроизвести его, то нет, он не скопирован, но вы можете добиться того же. – Amber

2

В JQuery, вы можете просто использовать slideDown сделать что-то подобное, однако Gowalla, кажется, использует немного другой метод:

Отдельные панели находятся внутри родительской панели, которая периодически меняет его положение. То есть сами панели не оживляют, и ничто даже не меняет размер: он просто перемещает все панели через окно просмотра. Когда он достигает дна, страница Gowalla просто останавливается - на самом деле она набирает достаточное количество панелей в течение примерно 4 минут скольжения - хотя в вашем случае вы можете снять панели со дна и оттолкнуть их назад, чтобы сделать его непрерывным ,

+0

Именно поэтому я спрашиваю, как это можно сделать с помощью JQuery. Просто использование эффекта SlideDown не выполняет ту же функциональность, что и GoWalla, поскольку она сползает по всему содержимому. – JGreig

+0

@JGreig - он оживляет свойство «bottom», уменьшая его на 81 пиксель каждые 5 секунд. Посмотрите на функцию jQuery 'animate()' и встроенную функцию 'setInterval'. Остальное - CSS. – nickf

0

Я думаю, что то, что они делают, похоже на то, что упоминалось никчем. Чтобы создать эффект анимации, я думаю, что все, что сделано, - это анимировать положение контейнера div, который обтекает панели внутри.

Таким образом, родительская панель будет иметь окно просмотра, которое подходит только для 6 панелей. Другой контейнер контейнера обернется вокруг всех панелей. Используйте jQuery .animate() для смещения атрибута верхней позиции div. Каждая итерация сдвигает контейнер div вниз на высоту панели (например, 100 пикселей).

var numPanels = 20; 
var i = 1; 

var livePanel = setInterval(function() { 
    if (i < numPanels) { 
    $('div.wrap').animate({'top': '+100px'}, 500, 'swing'); 
    i++; 
    } else { 
    livePanel.clearInterval(); 
    } 
}, 1000); 

Это всего лишь примерный код того, как я думаю, он мог бы работать. Вам также необходимо учитывать количество панелей, которые будут отображаться в окне просмотра в любой момент, и вычесть из общего количества «сдвигов вниз», которые вам понадобятся, в numPanels.

+0

, если хотите, вы можете в конце всей итерации установить положение top: 0px; снова перезапустить. Но это победит цель «живого» потока, если он повторится снова. Ха-ха. Вы можете загрузить новый набор через ajax, хотя ... – Lyon

Смежные вопросы