2012-04-25 1 views
38

最近、フォントのサイズを変更する方法についてよく読んだことがありますが、古いブラウザではサイズ変更が適切でないため、pxを容赦しない犯罪として使ってしまう(大丈夫です。フォントサイズにパーセントを使用していますか?

過去にpxであったことは、シンプルで理解しやすく、デザインで指定されている正確なフォントサイズを達成するのが簡単だから、今はpxを使うことに疑問を持っています。

私はjQueryを使って作成したテキストリサイズ機能が必要なため、最近emでプロジェクトを使用しました。しかし、私はそれがemサイズが指定された両方でお互いの内部にある場合、emが増幅する方法のために非常にイライラしていることが分かりました。

フォントのサイズ変更に%いくつかの大きなウェブサイトがこの技術(すなわち、Yahoo)を使用しているのを見て、私が理解しているところでは、信じられないほど厄介な増幅事態がなければ、それらのすべての利点があるようだ。

要するに、CSSでフォントサイジングに%を使用する際に問題があるかどうかは不思議です。フォントリサイズの点でPXを使用するよりも良いでしょうか?そして、目立つドローバックはありますか?

謝罪質問の前に宣伝文が少しくらいの場合:/私はまだ種類の多分このフォントサイズを変更するスクリプトを作成するより多くの意味を行います全体のQAの事

+1

私は間違っているかもしれませんが、 '%'を使うことは 'em'に属しているのとまったく同じ欠陥になりやすいと思います。 2つの 'div'要素がある場合、それぞれが' font-size:110% '要素を持ち、もう一方は' font-size:1.1em'と全く同じに計算されます。私が本当に間違っていない限り。 –

+0

私は本当に素早く確認するためにいくつかのHTMLを試してみるでしょう、私はそれを聞いたことはありませんでしたが、それが本当であれば本当にバマーでしょう。 。 。 %を使用したいと主な理由は、それはそれをしなかったことでした! – Sean

+0

いいえ、あなたは間違っていました。唯一の人は多重欠陥です。http://jsfiddle.net/gHe5S/ – Sean

答えて

-1

に慣れます。 私はあなたの望むものとまったく同じスクリプトを作っていましたが、それ以上見つけることはできません。

擬似コード:

var fontSize = 15; // (em) input 
var fontResize = -1;// (em)input 
fontSize = fontSize+fontResize; //current div 

for(every inherent parent classname == 'classname-em') 
document.classnameParentSize[numberofclass] = classnameChildSize[numberOfClass]/100*90; 

だから、言葉で説明します。スクリプトはいくつかのフォントのサイズを変更する必要があります。それが完了すると、それらのフォントのサイズを変更する親divもありますが、サイズが固有のサイズよりも10%小さくなります。困惑すると、正しい変換ができます。また、パディングと境界線の幅を避けるようにしてください。

0

FitTextと呼ばれるjQueryプラグインがあります。パーセンテージに基づいてテキストのサイズを変更します。何らかの理由でビジターがJavaScriptを無効にしている場合は、通常のように表示されるので、妥当なPXまたはEMバックアップを設定してください。

これはjQueryに依存しているため、あなたのページにそれを含める必要があります(まだ持っていない場合)。参照用


jquery.fittext.js

/*global jQuery */ 
/*! 
* FitText.js 1.0 
* 
* Copyright 2011, Dave Rupert http://daverupert.com 
* Released under the WTFPL license 
* http://sam.zoy.org/wtfpl/ 
* 
* Date: Thu May 05 14:23:00 2011 -0600 
*/ 

(function($){ 

    $.fn.fitText = function(kompressor, options) { 

     var settings = { 
     'minFontSize' : Number.NEGATIVE_INFINITY, 
     'maxFontSize' : Number.POSITIVE_INFINITY 
     }; 

      return this.each(function(){ 
       var $this = $(this);    // store the object 
       var compressor = kompressor || 1; // set the compressor 

     if (options) { 
      $.extend(settings, options); 
     } 

     // Resizer() resizes items based on the object width divided by the compressor * 10 
       var resizer = function() { 
        $this.css('font-size', Math.max(Math.min($this.width()/(compressor*10), parseFloat(settings.maxFontSize)), parseFloat(settings.minFontSize))); 
       }; 

       // Call once to set. 
       resizer(); 

       // Call on resize. Opera debounces their resize by default. 
     $(window).resize(resizer); 

      }); 

    }; 

})(jQuery); 
+0

質問は、CSSのフォントのさまざまなサイズの測定値の使用についてですテキストのフィッティングについてではありません。 – Cobby

6

あなたは "ラッパー" 内部1EMのようなものを言うとき、あなたは非常によく似サイズを有しますので、この

body { 
    margin: 0px; 
    padding: 0px; 
    font-size: 62.5%; 
} 

body>#wrapper { 
    font-size:1em; 
} 

を使用してみてください10px。これは、移行

P.のお手伝いをします

3em == 30px 
.5em == 5px 
8.5em == 85px 

:ここでは例のテーブルですd:もちろん、あなたは体の後にラッパータグが必要です

3

私が経験した限りウェブデザインの標準は、体のフォントサイズを設定するためにパーセントを使用してからemsを使用してその後のフォントサイジング。 bodyタグの外側のパーセンテージを悪影響を及ぼすことなく使用することができますが、多くの開発者がemを使いやすくすることができます(誰でも自由に私をチェックできます)。

emsを使用して本文のフォントサイズを設定すると危険が生じます。古いブラウザーでは、特にズームしたときにテキストがチョークされ、誤って表示されます。

12

CSS3では、rem(ルートem)を使用してください。サイジングは、親要素のサイズに影響されません。

+1

これは私が実際にやったことです!何人かの人は、「rem」より「em」が好きだと言っているようですが、私は理解できませんでした。なぜなら、emはいつも私のものを過度に複雑にするようでした。 – Sean

関連する問題