анимация webkit translateX откатывается в исходное положение - PullRequest
15 голосов
/ 07 января 2010

Я пытаюсь сделать галерею изображений для мобильного webkit,

Единственный способ, которым это действительно достаточно быстро, - это использовать аппаратно ускоренный переводчик.

Моя проблема в том, что div возвращает свою начальную позицию в конце анимации.Я добавляю щелчок класса slideGalLeft на левой кнопке.к анимированному div

Вы можете увидеть пример здесь, в разделе событий обратного вызова: http://position -absolute.com / jqtouch / demos / main / # home

    .slideGalLeft {
    -webkit-animation-name: slideColis;
}


@-webkit-keyframes slideColis {
    from { -webkit-transform: translateX(0%); }
    to { -webkit-transform: translateX(-100%); }
}

Ответы [ 4 ]

13 голосов
/ 01 июня 2010

Не используйте анимацию webkit для этого, поскольку она возвращается к значениям по умолчанию после воспроизведения. Вместо этого определите

.slideGalleft{
    -webkit-transition: -webkit-transform 1s linear;
    -webkit-transform: translateX(0%);
}

и используя Javascript, либо установите -webkit-transform: translateX(100%);, либо добавьте класс CSS к своему элементу, который задает конечное значение преобразования, и webkit будет его правильно анимировать

5 голосов
/ 29 мая 2011

Великолепный ответ Гийома.Однако, если вы ищете аппаратное ускорение, вы должны сообщить движку webkit, что вы хотите 3D-рендеринг (что делает аппаратное ускорение активным).

В соответствии с http://www.html5rocks.com/tutorials/speed/html5/#toc-hardware-accell, это делается путем добавления translateZ (0) по вашему правилу, вот так:

.slideGalleft{
    -webkit-transition: -webkit-transform 1s linear;
    -webkit-transform: translateX(0%) translateZ(0);
}

Следуйте советам Гийома за этим.

4 голосов
/ 26 марта 2012

Использование:

-webkit-animation-fill-mode: none/backwards/forwards/both;

Это позволяет вам определить, в каком конце вашей анимации останется элемент, когда анимация закончится.

2 голосов
/ 09 марта 2011

Мне удалось заставить его работать, добавив стиль «display: none» в конце анимации. Используйте следующий CSS:

.paused {
    -webkit-animation-play-state: paused;
}

.hiddendiv {
    display:none;
}

Тогда в вашем коде jQuery:

$('div.sideimage').click(
    function () {
        $(this).removeClass("paused").delay(2000).queue(
            function(next) {     
                $(this).addClass("hiddendiv");     
                next();
            }
        ); 
    }
);

Должно работать!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...