2014-12-25 2 views
0

У меня есть «стек» дочерних divs внутри контейнера div контейнера. Эти дочерние divs, похоже, скользят вниз, потому что новые дети постоянно присоединяются к вершине и получают анимацию .slideDown(), тем самым также заставляя всех остальных детей. Это отлично работает, но я использую его в приложении PhoneGap, и когда он выполняется быстро, он выглядит неспокойным и нервным. Я слышал, что это можно было бы сделать лучше, сделав css-преобразования, что заставляет аппаратное ускорение (я думаю). Тем не менее, каждый пример, который я вижу, кажется, пытается сделать гораздо более сложные вещи, чем мне нужно, и я не могу это понять, поэтому, если это возможно, любая помощь будет оценена по достоинству.Слайд вниз с помощью css (аппаратное ускорение)

JQuery Код:

row.hide().prependTo('#blockArea').slideDown(1000, 'linear'); 

blockArea является оболочкой, строка строка добавляется.

+1

Установите начальную высоту на '0' и добавьте« переход »в CSS, создайте еще один класс с правой высотой и добавьте этот класс с javascript после добавления элемента и ta-da! – adeneo

+0

У меня есть высота строки как 0, и я ввел строку «переход: высота 1с в режим» в классе строк с ней. Затем у меня есть еще один класс с «height: 20%», который я добавляю после добавления, но он не делает переход, не уверен в правильном пути. – DasBeasto

ответ

0

Это будет не так легко ...

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

Что вы должны сделать? Есть несколько возможностей, но я бы порекомендовал:

Добавить div как есть, без переходов. В то же время, установить преобразование на обертке в стиле

transform: translateY(***px); 

это преобразование должно быть рассчитано, чтобы компенсировать новый DIV, так что все, что движется (новый DIV будет оказываться над текущими, и вероятно, из окна просмотра).

also, set a transition on transform of the time that you want. 

Теперь, в отложенной функции, измените преобразование на translateY (0px). Это будет нормально делать в setTimeout() в 0 миллисекунд. Вам нужно сделать это таким образом, чтобы был применен переход

Удачи!

+0

Хорошо, я пытаюсь это, но я не думаю, что я слежу полностью. Im использует row.prependTo ('# blockArea'); который обычно добавляет строку. Затем я должен добавить класс в оболочку, которая содержит transform: translateY (*** px); ... не может просто переместить весь блокArea вниз по странице, а не по строкам? – DasBeasto

+0

Не совсем. Мое предложение - использовать translateY, чтобы переместить его вверх по странице. Конечным результатом будет то, что движение вниз от вставленного div не будет отображаться. и перемещение blockArea должно перемещать строки, потому что строки находятся внутри rowarea – vals

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