2

假设我有代码:

var $element = $('<div/>');
$element.css("margin-left", "2cm");
console.log($element.css("margin-left"));

Chrome 什么也没给我,而 Firefox 给我“75.5833px”。关于如何解决/解决此问题的任何想法?我知道不在 DOM 中的 div 可能难以检索浏览器解释为可计算单位的内容,例如百分比和所有...基本上归结为我想要应用样式,包括字体等速记样式,背景和边距,并以尽可能有效的方式检索它们可以分解的样式。

4

2 回答 2

0

这是我的无 jQuery 解决方案:

var doc = document.implementation.createHTMLDocument("");               
doc.body.appendChild(doc.createElement("p"));
doc.getElementsByTagName("p")[0].style["margin"] = "12cm";
console.log(doc.getElementsByTagName("p")[0].style["margin"]);
console.log(doc.getElementsByTagName("p")[0].style["margin-left"]);
etc...
于 2014-05-16T14:00:01.733 回答
0

根据这个:

如何通过 javascript 访问屏幕显示的 DPI 设置?

如何使用 JavaScript 检测屏幕 DPI

像素到厘米?

我们可以假设:

1px = 0.02645833 cm;

或者

1cm = 37.795276px;

因此您可以使用一个计算如下的小函数将 cm 转换为像素:

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/

于 2014-05-15T23:44:48.807 回答