2

コードがあるとしましょう:

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

Chrome では何も表示されず、Firefox では「75.5833px」と表示されます。これを修正/回避する方法についてのアイデアはありますか? DOM にない div では、ブラウザーがパーセンテージなどの計算可能な単位として解釈するものを取得するのが難しい場合があることを理解しています...基本的には、フォントのような省略形のスタイルを含むスタイルを適用したいということですbackground と margin を検索し、可能な限り効率的な方法で分解できるスタイルを取得します。

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 に答える