如何使用jQuery获取-webkit-transition-duration属性?

因为这会将转换持续时间设置为1秒: $('#objectID').css('webkit-transition-duration','1s');

我假设这将返回当前持续时间值: $('#objectID').css('webkit-transition-duration');

但事实并非如此。

试试:

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

更简单的答案:

 parseFloat(getComputedStyle(targetElement)['transitionDuration']) 
 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; } 

这将返回所有主要浏览器的转换值。

我知道这个答案可能为时已晚,但我只是把它整理出来:

 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)将以ms为单位返回持续时间值。 调用getTransitionDuration(el,true)将以ms为单位返回持续时间和延迟。

请注意,这只是webkit,您需要修复属性名称以匹配所有浏览器。

我也遇到了一个奇怪的错误,当100ms延迟转换为100.00000149011612时获得该属性。

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

这是一个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(int)
    • 当元素或选择器与元素匹配时,AND没有转换持续时间或转换持续时间为0。
  • 假(布尔)
    • 当元素或选择器不存在或不匹配任何元素时。