2016-06-11 6 views
0

私は基本的に次のHTMLページを持っています。しかし、画面のピクセルからプリンタのセンチメートルに切り替えると、幅がもう合わなくなり、行の幅が変わります。なぜスタイリングはpxで動作しますが、cmでは動作しませんか?

div.line{ 
    white-space:nowrap; 
    float:left; 
} 

div.a0, div.a1, div.a2, div.a3{ 
    border:0.1cm solid black; 
    display:inline-block; 
    white-space:normal; 
    padding:0px; 
    margin:0px; 
} 

div.b0, div.b1, div.b2, div.b3{ 
    border:1px solid black; 
    display:inline-block; 
    white-space:normal; 
    padding:0px; 
    margin:0px; 
} 
div.a0{width:calc(16cm - 0.2cm);} 
div.a1{width:calc(8cm - 0.2cm);} 
div.a2{width:calc(4cm - 0.2cm);} 
div.a3{width:calc(2cm - 0.2cm);} 
div.b0{width:calc(400px - 2px);} 
div.b1{width:calc(200px - 2px);} 
div.b2{width:calc(100px - 2px);} 
div.b3{width:calc(50px - 2px);} 
for(var a=0;a<2;a++){ 
    var b = String.fromCharCode(97 + a); 
    for(var c=0;c<4;c++){ 
     var d = document.createElement("div"); 
     d.className = "list"; 
     for(var e=0;e<Math.pow(2,c);e++){ 
      var f = document.createElement("div"); 
      f.className = b + c; 
      f.innerHTML = b + c; 
      d.appendChild(f); 
     } 
     document.body.appendChild(d); 
    } 
} 

JSFiddle Example

答えて

1

実際には、ピクセル行の幅も異なります(階段効果)。ブラウザのページの縮尺を変更してみてください(ChromeではCtrl + +)。

あなたが望むように、この作品を作るためには、全くcalcを使用するだけで16cm8cmなどを使用して、あなたのdiv秒間(CSS3 box-sizing Propertyを参照)box-sizing: border-box;を設定しないでください。

このようにして、枠の幅が要素の幅全体に含まれます。あなたのフィドルの

固定バージョン:https://jsfiddle.net/vog8gyxr/4/

+0

これはボックスサイズで完璧です(なぜ私はそれを試してみませんでしたか?)。しかし、それは本当に私の質問に答えるものではありません。私は誤った計算をしなかったので、同じサイズでなければなりませんでしたか?階段の効果はどういう意味ですか? 解決策はまだありません。 – mjb4

+0

階段効果とは、階段状に見える行の幅が違うということです。そして、はい、shoudのサイズは同じですが、ピクセルをスケーリングするときにブラウザは完璧ではありません。私はあなたのピクセル 'div'sも**異なる**幅を持っていることをあなたに示すためにブラウザウィンドウをズームイン/ズームアウトしようと提案しました!しかし、幅が整数ピクセルではなく、浮動小数点数(ブラウザのズームが例えば125%の場合はtrue)が発生した場合にのみ発生します。 widthが 'cm'のときは、ピクセル単位の浮動小数点数です。この誤った計算は多くのサイトで一般的ですが、誰もブラウザズームを使用することはほとんどありません。 – djxak

+0

しかし、なぜborder-boxがエラーを防ぐのですか?幅がそれほど大きいので、丸めは大きな違いではないので、常にボーダーボックスを使う方が良いと思う。 – mjb4

1

あなたが印刷されたフォント確認する必要がある場合は、フォントサイズを設定するためのPT(またはセンチまたは中)を使用することができる唯一の場所は、印刷用のスタイルシートでありますちょうど一定のサイズです。しかし、そこでさえ、デフォルトのフォントサイズを使用しても通常はより良いです。 cmサイズをpxに計算するだけです。 1cm == 37.8px。 お手伝いしますか。

+0

uは私はCMと互換性のあるものに 'フォントサイズを変更する必要があります'示していますか? – mjb4

+1

はい、絶対単位を印刷以外の目的で使用しないようにする別の理由があります。異なる距離から異なる画面を見ます。デスクトップ画面の1cmは小さく見えます。しかし、あなたの目の前で携帯電話で同じものが大きく見えます。代わりに、pxやemなどの相対単位を使用する方がよいでしょう。 – Jklyn

+0

cmを避けることは、私が印刷スタイルシートを作成しているので、実際の方法ではありません。 – mjb4

関連する問題