我需要做一个基于 CSS 属性的数值计算。但是,当我使用这个来获取信息:
$(this).css('marginBottom')
它返回值‘10px’。不管是 px还是 %或者 em或者其他什么,是否有一个获得值的数部分的诀窍?
px
%
em
$(this).css('marginBottom').replace('px','')
parseFloat($(this).css('marginBottom'))
即使在 em 中定义了娩底,上面 parseFloat 中的值也是 px,因为它是一个计算好的 CSS 属性。
parseInt($(this).css('marginBottom'), 10);
parseInt 将自动忽略单位。
parseInt
例如:
var marginBottom = "10px"; marginBottom = parseInt(marginBottom, 10); alert(marginBottom); // alerts: 10
应删除单位,同时保留小数。
var regExp = new RegExp("[a-z][A-Z]","g"); parseFloat($(this).css("property").replace(regExp, ""));
这将清除字符串中的所有非数字、非点和非负号:
$(this).css('marginBottom').replace(/[^-\d\.]/g, '');
负值更新
parseint将截断任何十进制值(例如,1.5em给出 1)。
parseint
1.5em
1
尝试使用正则表达式执行 replace函数 例如:。
replace
$this.css('marginBottom').replace(/([\d.]+)(px|pt|em|%)/,'$1');
我使用一个简单的 jQuery 插件来返回任何单个 CSS 属性的数值。
它将 parseFloat应用于 jQuery 的默认 css方法返回的值。
parseFloat
css
插件定义:
$.fn.cssNum = function(){ return parseFloat($.fn.css.apply(this,arguments)); }
用法:
var element = $('.selector-class'); var numericWidth = element.cssNum('width') * 10 + 'px'; element.css('width', numericWidth);
通过替换方法,您的 css 值是一个字符串,而不是一个数字。
这个方法更干净、简单,并返回一个数字:
parseFloat($(this).css('marginBottom'));
我选:
Math.abs(parseFloat($(this).css("property")));
获得不含单位的元素宽度的最简单方法是:
target.width()
资料来源: https://api.jquery.com/width/#width2
使用
$(this).cssUnit('marginBottom');
返回一个数组。 第一个索引返回边距底部的值(例如20px 的 20) 第二个索引返回边距底部的单位(例如 Px为20px)
你可以实现这个非常简单的 JQuery插件:
(function($) { $.fn.cssValue = function(p) { var result; return isNaN(result = parseFloat(this.css(p))) ? 0 : result; }; })(jQuery);
它对旧 IE 版本中可能出现的 NaN值有抵抗力(将返回 0代替)
NaN
0
$(this).cssValue('marginBottom');
享受吧! :)
让我们假设您有一个边距底部属性设置为20px/20%/20em。要获得作为数字的值,有两种选择:
选择1:
parseInt($('#some_DOM_element_ID').css('margin-bottom'), 10);
函数 parseInt ()解析一个字符串并返回一个整数。除非您知道自己在做什么,否则不要更改上面函数中的10(称为“基数”)。
示例输出 将是: 20(如果在 px 中设置边距底部)% ,em 将根据当前 Parent Element/Font size 输出相对数字。
选项2 < em > (我个人更喜欢这个选项)
parseFloat($('#some_DOM_element_ID').css('margin-bottom'));
函数 parseFloat ()解析一个字符串并返回一个浮点数。
ParseFloat ()函数确定指定字符串中的第一个字符是否为数字。如果是,它将解析字符串直到到达数字的末尾,并以数字而不是字符串的形式返回数字。
选项2的优点是,如果返回的是十进制数(例如20.32322 px) ,那么返回的数值就是小数点后面的值。如果您需要返回特定的数字,例如,如果您的边距底部设置在 Em或 %
为了提高公认的答案,使用以下方法:
Number($(this).css('marginBottom').replace(/[^-\d\.]/g, ''));
如果只是“ px”,你也可以使用:
$(this).css('marginBottom').slice(0, -2);