前回の記事 モバイルレスポンシブデザインで良い仕事をする方法: ビューポートコントロールでCSSピクセルについて議論しましたので、 CSS でフォント サイズを設定するさまざまな方法を調べることにしました。
Unit | Type | Description |
px | Absolute | 1 Viewport ピクセル |
pt | 絶対 | 1pt = 1/ 72 インチ |
pc | Absolute | 1pc = 12pt |
% | Relative | 親要素に対する相対的なフォントサイズ |
em | 相対 | 親要素に対する相対的なフォント サイズ |
rem | Relative | (つまり、root em) HTML タグに対する相対的なフォント サイズ |
keyword | Relative | xx-small、x-small、small、medium、large、x-large、xx -large |
vw | 相対 | ビューポートの幅の1/100に相当 |
vh | 相対 | ビューポートの高さの1/100に相当 |
vmin | 親戚 | ビューポートの高さと幅の比較的小さい長さの 1/100 に相当します |
vmax | 相対 | ビューポートの高さと幅の比較的大きな長さの 1/100 に相当します |
ここでは主に、px、pt、%、em、rem、vw の単位に焦点を当てます。
それらの違いは何ですか?
これらの単位の違いを概念的に理解するのは難しいため、いくつかの例を使用して説明しましょう。
例 1. デフォルト設定
フォント サイズを設定しない場合、HTML によってデフォルトのサイズ設定が提供されます。ほとんどのブラウザの 100db36a723c770d327fc0aef2ce13b1 タグと 6c04bd5ca3fcae76e30b72ad730ca86d のデフォルトのフォント サイズは 100% です。この方程式を見てください:
100% = 1em = 1rem = 16px = 12pt
まだ理解できませんか?たとえば、一方の e388a4556c0f65e1904146cc1a846bee のフォント サイズを 100% に設定し、もう一方の e388a4556c0f65e1904146cc1a846bee のフォント サイズを画面に表示すると、下の図は、いくつかの異なる単位で設定されたフォント サイズをリストしたもので、同じサイズであることがわかります。絶対単位と相対単位の違い。 100db36a723c770d327fc0aef2ce13b1 が html { font-size: 200% } に設定されている場合、相対単位を使用するすべての e388a4556c0f65e1904146cc1a846bee に影響します。効果は次のとおりです:
これが相対単位の主な利点です。この相対単位の機能を利用すると、 例 3 . rem と em (または %)
em (または %) は、親要素のフォント サイズによってサイズを計算する必要があります:
html { font-size: 100% /* =16px */}body { font-size: 2em; /* =32px */}p { font-size: 1em; /* =32px */ /* font-size: 0.5em; =16px */}
e388a4556c0f65e1904146cc1a846bee は子要素であるため;、6c04bd5ca3fcae76e30b72ad730ca86d は 100db36a723c770d327fc0aef2ce13b1 なので、e388a4556c0f65e1904146cc1a846bee の em と % は以前の 2 倍になります。 要素に em 単位を追加するときは、すべての親要素のフォント サイズを考慮する必要があります。ご覧のとおり、これは簡単に混乱を招く可能性があります。 rem を使用すると、この問題を非常にうまく解決できます。 rem は親要素を考慮せずに 100db36a723c770d327fc0aef2ce13b1 のフォント サイズを計算するだけで済みます。次のコードに示すように:
html { font-size: 100% /* =16px */}body { font-size: 2rem; /* =32px */}p { font-size: 1rem; /* =16px */}
rem を使用すると、em/% と同じスケーリング機能を使用できますが、これらの複雑なネストされた関係を考慮する必要はありません。
例 4. ビューポートの幅
vw は CSS3 で新しく提案された単位で、ビューポートの幅を使用してフォント サイズを計算します。これにより、より柔軟なレスポンシブ フォントの設計が可能になります。 このユニットはレスポンシブデザインに最適ですが、個人的にはあまり興味がありません。 vw を使用する過程で、フォント サイズをうまく制御できません。大きすぎたり、小さすぎたりします。
私のやり方
この記事を書いているとき、単位としてpxのみを使用しています。現在、ほとんどのブラウザでユーザーがページを拡大できるため、その際にアクセシビリティの問題は発生しません。
ただし、この方法にはある程度の制限があることがわかりました。フォント サイズは小から中程度の画面では適切に見えますが、大画面ではより適切に最適化されます。ユーザーはズームのプロパティを自分で設定できますが、ユーザーの作業を最小限に抑えたいと考えています。私の解決策は、rem を使用し、フォールバック単位として px を使用することでした。
html { font-size: 62.5%; /* sets the base font to 10px for easier math */}body { font-size: 16px; font-size: 1.6rem; /* sets the default sizing to make sure nothing is actually 10px */}h1 { font-size: 32px; font-size: 3.2rem;}
このように書くと、フォント サイズを比例的に拡大することができます:
@media screen and (min-width: 1280px) { html { font-size: 100%; }}
このソリューションがフォールバック単位として px を使用する理由は、rem が IE8 以下をサポートしていないためです。この解決策の 1 つの問題は、上記のように基本フォント サイズを変更しても、バックアップ フォント サイズに影響を与えないことです。ただし、大型デバイスのサイズに適合する機能はおまけにすぎず、中核的な機能ではないため、これは大きな問題ではないと思います。
この問題に関してもっと良いアイデアがある場合は、コメントするか、私にプライベートメッセージを送ってください。