CSS Transition: исправить положение правого края div при переводе левого края

Я пытаюсь оживить DIV с помощью CSS3 переходов. Пример DIV:

HTML:

<div class="element"></div>

CSS:

.element {
  -webkit-transform: translate3d(0,0,0);
  -webkit-transition: -webkit-transform 2s linear, width 2s linear;
  position: absolute;
  left: 100px; top: 100px;
  height: 10px; width: 50px;
  background-color: black;
}

Это означает, что DIV занимает область в своем контейнере от (100px, 100px) до (150px, 110px) - и правый край зафиксирован на 150px.

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

CSS:

.transition {
  -webkit-transform: translate3d(-200px, 0, 0);
  width: 150px;
}

Проблема, которую я вижу, состоит в том, что переход по ширине не идет в ногу с левым краем переведенного DIV, поэтому вместо равномерного увеличения размера и левого положения, положение правого края колеблется, когда DIV соскальзывает с различная скорость, слегка мерцает (зависит от платформы, насколько она мигает).

Эта проблема более остро проявляется в Mobile Safari (веб-просмотр Phonegap на iPhone - моя основная платформа разработки), а не в Chrome.

Я поместил JSFiddle на http://jsfiddle.net/XwuBz/ который демонстрирует его (посмотрите на iPhone, чтобы увидеть, как это происходит).

Есть ли другой способ достичь этого конечного результата?

Заранее спасибо,

Дэн

1 ответ

Что ж, похоже, у iOS Safari есть некоторые странные проблемы с переходами / преобразованием.

Я пытался добиться тех же результатов только с помощью jQuery, и он работал на iPhone 4s, iOS6:

$('.element').animate({left:'-=200','width':'+=200'},2000);

Вот демо.

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