将jQuery's CSS计时转换为毫秒
Converting jQuery's CSS timing to ms
当在CSS中请求jQuery的持续时间时,它以秒为单位返回该值,例如1.2s
。例子。
var d = $("div"),
propDur = d.css("animation-duration"),
propDurArr = propDur.replace(" ","").split(","),
propDel = d.css("animation-delay"),
propDelArr = propDel.replace(" ","").split(",");
console.log(propDurArr[propDurArr.length - 1]);
console.log(propDelArr[propDelArr.length - 1]);
有两个问题:
- 这是跨浏览器吗?jQuery(或更好的:浏览器)总是以秒为单位返回值,还是一些浏览器更喜欢毫秒表示?
- 我如何将这个值在jQuery/JS转换为ms(没有
ms
)?例如:1.2s
->1200
。
对于2.
,你可以很容易地删除点,像这样:
propDel.replace(/('s|.)/g,"").split(",")
但是我如何创建这样的条件:
if string contains dot
ADD 00
if string does NOT contain dot
ADD 000
请回复1和2
我决定采用@RobG的评论,他还没有发布作为答案,所以在这里。非常简单有效:
function toMS(s) {
return parseFloat(s) * (/'ds$/.test(s) ? 1000 : 1);
}
这只是问题#2的答案。您可以使用parseFloat()
来获得数字表示,直到第一个非数字(或点)字符。因此,parseFloat("1.2s")*1000
返回1200,而parseFloat("1s")*1000
返回1000。
检查此解决方案将css时间转换为毫秒:
function css_time_to_milliseconds(time_string) {
var num = parseFloat(time_string, 10),
unit = time_string.match(/m?s/),
milliseconds;
if (unit) {
unit = unit[0];
}
switch (unit) {
case "s": // seconds
milliseconds = num * 1000;
break;
case "ms": // milliseconds
milliseconds = num;
break;
default:
milliseconds = 0;
break;
}
return milliseconds;
}
1)动画可以以秒或毫秒为单位-不要期望它总是其中之一。后缀为s
或ms
。
2)关于转换:
// provided `value` contains what you got from jQuery
var multiply = value.indexOf('ms') !== -1 ? 1 : 1000;
var converted = parseInt(parseFloat(value) * multiply, 10);
// converted now contains the value in millseconds
相关文章:
- Css转换没有响应
- 使用CSS在选项卡更改时平滑颜色转换
- 将webkit从CSS转换为JavaScript
- css转换高度不起作用
- CSS中的转换似乎失败了,原因是什么
- 鼠标悬停时的css转换
- CSS转换立即进入最终状态
- 选项卡式元素上的动画CSS转换
- 通过JS添加类时应用CSS转换
- 更好的解决方案HTML元素幻灯片从右侧CSS转换
- CSS将百分比转换为像素
- 使用JavaScript触发CSS转换
- 使用带有javascript的span创建CSS转换
- jQuery addClass中断延迟,或者jQuery延迟中断CSS转换,或者两者兼而有之
- 输入占位符文本转换CSS样式
- 从核心转换css捕获核心转换
- 在悬停时保留和添加新的转换 (CSS/LESS)
- JavaScript或jQuery根据屏幕大小转换css文件
- 转换css系统颜色十六进制与javascript
- 转换 CSS 样式对 标记没有影响