假设我有代码:
var $element = $('<div/>');
$element.css("margin-left", "2cm");
console.log($element.css("margin-left"));
Chrome 没有给我任何东西,而 Firefox 给了我“75.5833px”。关于如何解决/解决这个问题有什么想法吗?我知道不在 DOM 中的 div 在检索浏览器解释为可计算单位的内容时可能会遇到困难,例如百分比和所有...基本上归结为我想要应用样式,包括速记样式,例如字体,背景和边距,并检索可以尽可能有效地分解它们的样式。
最佳答案
根据此:
How to access screen display’s DPI settings via javascript?
How to detect the screen DPI using JavaScript
我们可以假设:
1px = 0.02645833 cm;
或
1cm = 37.795276px;
因此您可以使用一个小函数将厘米转换为像素,该函数的计算如下:
function cmToPx(cm){
return cm * 37.795276;
}
并像这样使用它:
element.css("margin-left", cmToPx(2));
此外,如果您想检索以厘米为单位的元素的值,您还可以使用另一个执行相反操作的函数:
function pxToCm(px){
return parseInt(px) * 0.02645833;
}
并像这样检索值:
pxToCm(element.css("margin-left"))
不幸的是,它检索到的数字有误差范围(实际上,当我最初使用 2cm 时,它得到 1.98437475)。为了解决这个问题,也许你可以四舍五入该值。
我不知道为什么您的解决方案在 Chrome 上不起作用,但至少这是解决您的问题的可能方法。希望对您有所帮助,祝您好运!
pd:我离开jsfiddle:http://jsfiddle.net/79fM4/3/
关于javascript - 如何防止 jQuery 意外的单位转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23690263/