【发布时间】:2012-03-07 18:35:03
【问题描述】:
由于这会将过渡持续时间设置为 1 秒:
$('#objectID').css('webkit-transition-duration','1s');
我假设这将返回当前的持续时间值:
$('#objectID').css('webkit-transition-duration');
但事实并非如此。
【问题讨论】:
标签: javascript jquery webkit-transition
由于这会将过渡持续时间设置为 1 秒:
$('#objectID').css('webkit-transition-duration','1s');
我假设这将返回当前的持续时间值:
$('#objectID').css('webkit-transition-duration');
但事实并非如此。
【问题讨论】:
标签: javascript jquery webkit-transition
更简单的答案:
parseFloat(getComputedStyle(targetElement)['transitionDuration'])
【讨论】:
尝试:
$('#objectID').css('transition-duration','1s');
$('#objectID').css('transition-duration');
【讨论】:
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;
}
这将返回所有主流浏览器的转换值。
【讨论】:
-webkit-transition-duration。是否包含在转换中?我可以将 jQuery 元素传递给这个函数吗?抱歉,对此很陌生。
这是一个 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 回调中使用它
返回:
【讨论】:
/\d+(\.\d+)?/g
我知道这个答案可能来得太晚了,但我只是整理了一下:
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 之类的东西。
【讨论】: