10

これにより遷移時間が 1 秒に設定されるため、次のようになります。 $('#objectID').css('webkit-transition-duration','1s');

私はこれが現在のデュレーション値を返すと仮定しました: $('#objectID').css('webkit-transition-duration');

しかし、そうではありません。

4

5 に答える 5

16

より簡単な答え:

parseFloat(getComputedStyle(targetElement)['transitionDuration'])
于 2014-07-06T07:40:15.747 に答える
15

試してみてください:

$('#objectID').css('transition-duration','1s');

$('#objectID').css('transition-duration');
于 2012-03-07T18:39:02.713 に答える
6
function getTransitionProperty(element) {
  // Note that in some versions of IE9 it is critical that
  // msTransform appear in this list before MozTransform
  var properties = [
    'transition',
    'WebkitTransition',
    'msTransition',
    'MozTransition',
    'OTransition'
  ];
  var p;
  while (p = properties.shift()) {
    if (typeof element.style[p] != 'undefined') {
      return p;
    }
  }
  return false;
}

これにより、すべての主要なブラウザーの遷移値が返されます。

于 2012-03-07T18:39:56.253 に答える
5

以下は、渡された要素またはセレクターの遷移時間をミリ秒単位で返す jQuery 関数です。

function getTransitionDuration(elementOrSelector){
    var $el, durString, isMS, numberStr, numberNum;
    $el = $(elementOrSelector);
    if($el.length === 0 ){
        return false;
    }
    $el = $($el[0]); // Force just the first item.  need more?  use .each
    durString = $el.css('transition-duration').toLowerCase();
    isMS = durString.indexOf("ms") >= 0;
    numberStr = durString.match(/\d/);
    numberNum = parseInt(numberStr[0], 10);
    return isMS ? numberNum : numberNum * 1000;
};

これは、セレクターが複数のアイテムに一致する場合でも、ラップされたセットの最初のアイテムのデュレーションのみを返します。もっといります?これを.eachコールバックで使用します

戻り値:

  • ミリ秒 (int)
    • 要素またはセレクターが要素に一致し、AND に遷移期間がある場合。
  • 0 (整数)
    • 要素またはセレクターが要素と一致し、AND が遷移期間がないか、遷移期間が 0 の場合。
  • 偽 (ブール値)
    • 要素またはセレクターが存在しないか、一致する要素がない場合。
于 2014-09-25T15:44:23.597 に答える
3

この答えはおそらく遅すぎることはわかっていますが、私はそれを整理していました:

function getTransitionDuration (el, with_delay){
var style=window.getComputedStyle(el),
    duration = style.webkitTransitionDuration,
    delay = style.webkitTransitionDelay; 

// fix miliseconds vs seconds
duration = (duration.indexOf("ms")>-1) ? parseFloat(duration) : parseFloat(duration)*1000;
delay = (delay.indexOf("ms")>-1) ? parseFloat(delay) : parseFloat(delay)*1000;


if(with_delay) return (duration + delay);
else return duration;
}

getTransitionDuration(el) を呼び出すと、期間の値がミリ秒単位で返されます。getTransitionDuration(el, true) を呼び出すと、期間と遅延がミリ秒単位で返されます。

これは Webkit のみであることに注意してください。すべてのブラウザーに一致するようにプロパティ名を修正する必要があります。

プロパティを取得するときに 100 ミリ秒の遅延が 100.00000149011612 のようなものに変換されるという奇妙なバグも発生しています。

http://jsfiddle.net/z3bKD/2/

于 2012-10-22T09:38:49.553 に答える