将jQuery's CSS计时转换为毫秒

Converting jQuery's CSS timing to ms

本文关键字:转换 CSS jQuery      更新时间:2023-09-26

当在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]);

有两个问题:

  1. 这是跨浏览器吗?jQuery(或更好的:浏览器)总是以秒为单位返回值,还是一些浏览器更喜欢毫秒表示?
  2. 我如何将这个值在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)动画可以以秒或毫秒为单位-不要期望它总是其中之一。后缀为sms

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