0

CSS3 トランジションを使用して DIV をアニメーション化しようとしています。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 が 150px で静的な右端を維持するようにしたいので、次のように (Javascript を介して) DIV に遷移クラスを適用しています。

CSS:

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

私が見ている問題は、幅の遷移が変換された DIV の左端に追いついていないため、サイズと左位置が均一に増加するのではなく、右端の位置が DIV がスライドするにつれて変動することです。レートが異なり、わずかにちらつきます (ちらつきの程度はプラットフォームによって異なります)。

この問題は、Chrome よりも Mobile Safari (iPhone の Phonegap Webview が私の主な開発プラットフォームです) でより顕著に発生します。

私は JSFiddle をhttp://jsfiddle.net/XwuBz/に置いてデモを行いました (iPhone で表示して発生を確認してください)。

この最終結果を達成する別の方法はありますか?

前もって感謝します、

ダン

4

1 に答える 1

0

さて、iOS Safari にはトランジション/トランスフォームに関する奇妙な問題があるようです。

jQuery のみで同じ結果を達成しようとしましたが、iPhone 4s、iOS6 で動作しました。

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

ここにデモがあります。

于 2012-10-05T17:55:13.210 に答える