CSS:100%フォントサイズ-何の100%?


138

パーセンテージサイズのフォントと他のサイズのフォントについては、多くの 記事質問があります。ただし、パーセント値の参照が何であると想定されているのかわかりません。これは「すべてのブラウザで同じサイズ」であることを理解しています。私もこれを読みました、例えば:

パーセント(%):パーセント単位は「em」単位によく似ており、いくつかの基本的な違いを除けます。何よりもまず、現在のfont-sizeは100%(つまり、12pt = 100%)です。パーセント単位を使用している間、テキストはモバイルデバイスとアクセシビリティのために完全にスケーラブルなままです。

出典:http : //kyleschaeffer.com/best-practices/css-font-size-em-vs-px-vs-pt-vs/

ただし、「ie 12 pt = 100%」と言う場合は、最初にを定義する必要があることを意味しますfont-size: 12pt。それはどのように機能しますか?最初に絶対メジャーでサイズを定義し、次にこれを「100%」と呼びますか?多くのサンプルが次のようにすると便利だと言っているので、あまり意味がありません。

body {
  font-size: 100%;
}

だから、これを行うことで、にフォントサイズの相対的なのですか?画面に表示されるサイズがすべてのフォントで異なることに気づきました。たとえば、ArialはTimes New Romanよりもはるかに大きく見えます。また、これを実行すると、ボディサイズ= 100%になります。つまり、すべてのブラウザで同じになるということですか。または、最初に絶対値を定義した場合のみですか?

更新、7月23日

到着しましたが、ご容赦ください。

したがって、%の値は、私が正しく理解していれば、デフォルトのブラウザーのフォントサイズに関連しています。それはいいことですが、他にもいくつか質問があります。

  1. この標準サイズはすべてのブラウザーバージョンで常に同じですか、それともバージョン間で異なりますか?
  2. 私 !Google Chromeの設定が見つかりました(下の画像を参照)(これまでこれを見たことはありません!)。しかし、他のフォントでこれをどのように解釈すればよいですか?私が定義するfont: 100% Georgia;と、ブラウザはどのようなサイズになりますか?セリフの標準サイズを調べますか、それとも「ジョージア」フォントをブラウザの標準サイズにしますか
  3. いくつかのウェブサイトで私はのようなものを読みましたSizing text and line-height in ems, with a percentage specified on the body [..], was shown to provide **accurate, resizable text across all browsers** in common use today。しかし、私が今学んでいることから、実際には、サイズ変更可能なテキスト(この引用で推奨されているように%またはemを使用)、または「ブラウザー全体で正確で一貫したフォントサイズ」を選択する必要があると考えています(pxまたはベースとしてpt)。これは正しいです?

Google設定:

Google Chrome Settinsg

これは私がどのように考える事ができ、あなたが絶対値でサイズを定義しない場合のように見えます。

ここに画像の説明を入力してください

回答:


89

Firefoxの16ptのようなブラウザのデフォルトです。Firefoxのオプションに移動し、[コンテンツ]タブをクリックして、フォントサイズを確認することで確認できます。他のブラウザでも同じことができます。

私は自分のWebサイトのデフォルトのフォントサイズを制御したいので、すべてのページに含まれているCSSファイルで、BODYのデフォルトを次のように設定します。

body {
    font-family: Helvetica, Arial, sans-serif;
    font-size: 14px
}

これで、すべてのHTMLタグのfont-sizeは14pxのfont-sizeを継承します。

すべてのdivのフォントサイズを本文より10%大きくしたいとします。

div {
    font-size: 110%
}

これで、私のページを表示するブラウザはすべて、すべてのdivを本文のdivよりも10%大きくします。これは、15.4pxのようなものです。

すべてのdivのフォントサイズを10%小さくしたい場合は、次のようにします。

div {
    font-size: 90%
}

これにより、すべてのdivのフォントサイズが12.6pxになります。

また、font-sizeが継承されるため、ネストされた各divのフォントサイズが10%減少することも知っておく必要があります。

<div>Outer DIV.
    <div>Inner DIV</div>
</div>

内側のdivのフォントサイズは11.34px(12.6pxの90%)であり、意図されていない可能性があります。

これは説明に役立ちます:http : //www.w3.org/TR/2011/REC-CSS2-20110607/syndata.html#value-def-percentage


ありがとう!これにより、より明確になります。しかし、%を使用するときに、「正確さ」または「一貫性」を主張する記事についてはまだ疑問に思っています。私があなたの答えを正しく解釈すると、これはかなり間違っているようです。私はいくつかの追加の質問で質問を更新しました...
user852091

3
質問に対する回答(何を100%ですか?)は正しくありません。いくつかの不正確さがあり(すべての要素がフォントサイズを継承するわけではありません)、質問されなかった問題に関するメモと意見があります。
Jukka K.Korpela、2014

ピクセル密度は本当に考慮に入れられなければなりません。4K電話のページの100%に相当するものは、水平および垂直解像度が数千ピクセルであると考えます。WebアプリなどのNO_SCALEを使用するFlashコンテンツの場合、コントロールは非常に小さくなります。特にLG G3のメニューなどです。これは、ピクセルサイズの一部のHTMLコンテンツにも同様に当てはまります。いずれにしても、完全に相対単位を使用するか、JavaScriptベースの動的サイズ変更を使用して、ピクセル密度(ピクセル/インチ)を考慮する必要があります。
Triynko、2015

1
最新のブラウザがデフォルトとして12pt / 16px @ 96ppiを使用していることを確認しました。関連するメモでは、「em」の代わりに「rem」を使用して、ルート(html要素、またはブラウザのデフォルト)を基準にして特定の要素を常にスケーリングできます。比較的サイズの大きい要素の複雑な階層で役立ちます。
Beejor

それはあなたの設定した方が良いですfont-sizeのような使用して相対単位をemremまたは%。を使用pxすると、ブラウザのデフォルトのフォントサイズが上書きされます。多くのユーザーは、テキストを読みやすくするためにカスタムフォントサイズを指定します。
mfluehr

15

私の理解では、フォントが次のように設定されている場合

body {
  font-size: 100%;
}

ブラウザは、そのブラウザのユーザー設定に従ってフォントをレンダリングします。

仕様には%がレンダリングされると記載されています

親要素のフォントサイズを基準

http://www.w3.org/TR/CSS1/#font-size

この場合、私はそれをブラウザが設定されているものと解釈します。


実際の親はbodyですhtml。したがって、ブラウザのデフォルトではなく、のフォントサイズのbody { font-size: 100%; }100%になりhtmlます。通常、これらは同じものですが、効果的に正しいです。ただし、html { font-size: ??? }ルールが表示されることもあります。
シャーベイ

9

font-sizeプロパティの値のパーセンテージは、親要素のフォントサイズを基準にしています。CSS 2.1はこれをあいまいにして混乱させます(「継承されたフォントサイズ」を意味します)が、CSS3 Text それを非常に明確に述べています。

body要素の親はルート要素、つまりhtml要素です。スタイルシートで設定されない限り、ルート要素のフォントサイズは実装に依存します。通常、これはユーザー設定に依存します。

font-size: 100%スタイルシートが独自のフォントサイズを設定していない場合、要素はその親のフォントサイズを継承するため(同じ結果につながるため)、設定は多くの場合無意味です。ただし、他のスタイルシート(ブラウザのデフォルトスタイルシートを含む)の設定を上書きすると便利な場合があります。

たとえば、input通常、要素にはブラウザのスタイルシートの設定があり、デフォルトのフォントサイズがコピーテキストのフォントサイズよりも小さくなっています。フォントサイズを同じにしたい場合は、

入力{font-size:100%}

body要素については、論理的に冗長な設定font-size: 100%がかなり頻繁に使用されます。これは、一部のブラウザーのバグ(おそらく、現在は重要性を失っているブラウザーのバグ)を解決すると考えられているためです。


3
font-size:100%目的にかなう1つの例は、フォントサイズがテーブルに継承されないQuirksモードです。このスタイルでは、テーブルは親のフォントサイズを取得します。もちろん、右心の誰もがもうQuirksモードを使用していません...
Mr Lister

4

ptまたはpxの値で上書きしない限り、デフォルトのブラウザーのフォントサイズを基準にしています。


だから、これはブラウザごとに異なるでしょうか?
user852091 2011

2
はい、すべてのブラウザには、フォントサイズを含む独自のデフォルト設定があります。そのため、通常はcss resetを使用する必要があります。
RocketR 2011

1
これは誤りです。親要素の割合です。親要素がデフォルトのfont-sizeを継承しているため、デフォルトのfont-sizeのパーセンテージが発生している可能性があります。
Zectbumo 2016年

@Zectbumoそうですね、正確ではありません。しかし、質問はbody、任意にネストされた要素ではなく、について言及しているため、小さなアスタリスクで答えは正しいです:)
RocketR

:-/ <body>の親が<html>であるためネストされることを除いて
Zectbumo

4

私がパーティーに遅れた場合は申し訳ありませんが、あなたの編集font: 100% Georgiaで、について発言しますが、他の回答は応答していません。

とには違いがfont: 100% Georgiaありfont-size:100%; font-family:'Georgia'ます。それがすべての簡略化された方法であった場合、font-sizeの部分は無意味になります。しかし、それはまた、多くのプロパティをデフォルト値に設定します:行の高さnormal(または約1.2)、スタイル(斜体ではない)、太さ(太字ではない)になります。

それで全部です。他の回答はすでに言及すべき他のすべてを述べました。


3

説得力があるように、font-size: 100%;すべてのブラウザで同じように表示されるわけではありません。ただし、CSSファイルでフォントフェースを設定するため、すべてのブラウザで同じ(またはフォールバック)になります。

ベースのデザインfont-size: 100%;と組み合わせると非常に便利だと思いますemこの記事を示し、これは非常に柔軟なウェブサイトを作成します。

これはいつ役に立ちますか?サイトが訪問者の希望に適応する必要がある場合。たとえば、デフォルトのフォントサイズを24ピクセルに設定している年配の男性を例にとります。または、画面が小さく、解像度が高く、デフォルトのフォントサイズが大きくなる人もいます。ほとんどのサイトは機能しなくなりますが、emベースのサイトはこれらの状況に対処できます。


1

そのフォントに定義されているデフォルトサイズを基準とします。

誰かがWebブラウザーでページを開いた場合、デフォルトのフォントとフォントサイズが使用されます。


0

私の理解としては、フォントファミリーとフォントサイズのさまざまな値でコンテンツを調整するのに役立ちます。したがって、コンテンツをスケーラブルにします。フォントサイズの継承の問題については、要素に特定のフォントサイズを指定することで、いつでもオーバーライドできます。


0

1996年遡るすべての仕様によると、パーセンテージ値font-sizeは親要素の(計算された)フォントサイズを参照しています。

<style>
div {
  font-size: 16px;
}
span {
  font-size: 75%;
}
</style>
<div><span>this font size is 12px!</span></div>

とても簡単です。

がs divなどemの相対的なフォントサイズ、さらに悪い場合は別のパーセンテージを宣言するとどうなりますか?上記の「計算済み」を参照してください。相対単位に変換される絶対単位。

残っている唯一の問題は、親を持たないルート要素にパーセント値を使用するとどうなるかです。

html {
  font-size: 62.5%; /* 62.5% of what? */
}

その場合は、この質問の「重複」を参照してください。TLDR:ルート要素のパーセンテージは、ブラウザーのデフォルトのフォントサイズを参照し、ユーザーごとに異なる場合があります。

参照:

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.